重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 61|回复: 0
打印 上一主题 下一主题

kfs同步中,raw使用kdb_raw后,同步失败的处理

[复制链接]
跳转到指定楼层
楼主
发表于 5 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

环境:
    源端:ORACLE 11G
    目标端:kingbase v9

问题:
    默认kingbase 不识别 oracle的raw类型,导致物化视图日志等用到raw 类型的,会报错。
    解决办法,
    1是直接修改物化视图日志的raw类型为 bytea
    2是通过 kdb_raw 插件
       create extension kdb_raw
      但后续同步时,还是会报错

     解决办法:
        我们在kingbase 中 使用  kdb_raw 插件来处理 raw类型后,目标端同步报错处理。
  create extension kdb_raw


-----安装kdb_raw之后,没有操作符ERROR: 操作符不存在raw = bytea
CREATE OR REPLACE FUNCTION public.raw_eq_bytea(
    p_raw raw,
    p_bytea bytea
)
RETURNS boolean
AS $$
    SELECT p_raw::bytea = p_bytea;
$$
LANGUAGE SQL
IMMUTABLE
STRICT;

CREATE OPERATOR public.= (
    FUNCTION = public.raw_eq_bytea,
    LEFTARG = raw,
    RIGHTARG = bytea
);

CREATE OR REPLACE FUNCTION public.bytea_eq_raw(
    p_bytea bytea,
    p_raw raw
)
RETURNS boolean
AS $$
    SELECT p_bytea = p_raw::bytea;
$$
LANGUAGE SQL
IMMUTABLE
STRICT;

CREATE OPERATOR public.= (
    FUNCTION = public.bytea_eq_raw,
    LEFTARG = bytea,
    RIGHTARG = raw
);

SELECT
    decode('010203', 'hex')::raw =
    decode('010203', 'hex')::bytea;
---------------------返回t


  在kingbase 中,创建上面的操作符号后,问题可以解决


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-7-31 06:34 , Processed in 0.187416 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表