GBase8a MPP 透明网关的语法约束

本文详细介绍了GBase8aMPP中的dblink语法约束,包括禁止与本地表join、子查询中的本地表、groupby/orderby中的dblink表限制等,以及不支持的DDL/DML操作和特定函数使用。尽管存在局限,dblink仍提供基本跨库查询便利。
摘要由CSDN通过智能技术生成

本次,介绍一下GBase8a MPP中dblink的语法约束。

在使用GBase8a MPP的dblink,可以很方便的从远方异构数据库中查询数据,比如在GBase8a MPP中,从Mysql数据库中查询某个数据库实例中的数据。但是,因为毕竟是异构数据库,所以不能完全像查询本地数据库那样,支持非常复杂的查询结构。总结起来,以下几种场景下,是无法进行数据查询的。

一、同源的dblink表可以直接join,dblink表禁止与local table,relation subquery,非同源dblink表产生直接join关系。

如下的语句是可以支持的

t1@gc_link join t2@gc_link 是支持的,因为都是在远端数据库进行查询

t1@gc_link join t2 是不允许的,会出现语法错误,即无法将远端数据库的表和本地表进行join操作

二、dblink表的子查询中,禁止出现本地表,非同源dblink表

如下的语句是不被支持的

select * from t1@gc_link where exists (select 1 from t2)

因为db-link表 t1@gc_link 的子查询中,出现了本地表t2

可以改写成如下的格式:

select * from (select * from t1@gc_link) t where exists (select 1 from t2)

三、group by 或 order by 中的相关子查询,禁止出现db-link表

如下的语句是不被支持的

select count(*) from t2 group by (select max(id) from test1@oracle_linke1);

四、不支持对dblink表进行ddl,dml

以下的语法是不被支持的

drop table test1@oracle_link1;
alter table test@oracle_link1 add column name varchar(20);

五、不支持在函数中,使用dblink表

以下的函数写法是不被支持的

create function fn_dblink_oracle () returns int
    begin
      select count(*)/5 into @count from (select * from test1@oracle_link1) tt;
      return @count;
    end
delimiter;

六、不支持对dblink表show create和desc操作

以下的语法是不被支持的

desc test1@oracle_link1;
show create table test1@oracle_link1;

虽然从语法上,dblink存在一些限制,但是对一些基本操作来说,还是非常便利的,推荐可以尝试一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值