连接tbase-v5出错处理

最近更新时间: 2024-10-17 17:10:00

这是因为tbase merge了一些postgresql11存储过程的一些特性,我们可以通过定义一个新的pg_proc视图来达到兼容访问,如下所示。

  • 连接到数据库后创建一个兼容的专用schema。
postgres=# create schema tbase_pg_proc;
CREATE SCHEMA

postgres=# CREATE OR REPLACE VIEW tbase_pg_proc.pg_proc as 
select 
    *,
    case when prokind='a' then true else false end as proisagg,
    case when prokind='w' then true else false end as proiswindow,
    oid as oid,xmin as xmin,tableoid tableoid 
from 
    pg_catalog.pg_proc;
CREATE VIEW
postgres=#
  • 配置用户的搜索路径。
postgres=# alter role tbase set search_path to tbase_pg_proc,pg_catalog,"$user", public;
ALTER ROLE
postgres=#

再次断开,连接就可以正常访问function了。

  • 适配function和procedure分开。
postgres=# create or replace function tbase_pg_proc.version() returns text as
$$
begin
    return 'PostgreSQL 11.0 TBase V5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit';
end;
$$
language plpgsql;

返回postgresql11版本号就能将procedure和function 分别返回。