Skip to content

diff-gaussdb-postgres.md存在几个错误 #65

@Dark-Athena

Description

@Dark-Athena

https://github.com/HuaweiCloudDeveloper/gaussdb-drivers/blob/main/docs/diff-gaussdb-postgres.md

GaussDB不支持JSON和JSONB类型的隐式转换

在505.2和506.0版本上测试,SELECT '{"a":1}'::jsonb || '{"b":2}'; 该查询是不会报错的,问题在于没有jsonb||jsonb这个操作符,因此前者会隐式转换成text类型,以匹配text||text操作符,而原生PG是有jsonb||jsonb的,所以后面的改写方案CAST('{"a":1}' AS JSONB) || '{"b":2}'其实和'{"a":1}'::jsonb || '{"b":2}'没有区别,返回结果也是错误的,不仅返回类型不对,还少了逗号,正确的改法应该是CAST('{"a":1}' ||','|| '{"b":2}' AS JSONB)('{"a":1}' ||','|| '{"b":2}' )::jsonb

real 类型精度与取值差异

这个行为受参数extra_float_digits影响 ,GaussDB服务端配置默认为0 ,使用gsql查询,文档中的用例查询结果和postgres是一致的。有差异的场景是当postgres和GaussDB均配置为非默认值,比如3时,postgres 返回101.3,GaussDB返回101.300003 。另外,JDBC驱动会自动设置这个参数为3以保留最大小数位数(原生PG的JDBC驱动会根据不同版本设置不同的值)

不支持refcursor关键字

其实是支持的,链接里的用例是因为变量名使用了关键字ref导致的,换个变量名就行了。

最后,GaussDB不同版本的行为不一致,描述问题时建议把问题版本都带上

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions