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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions