关于社区issue:I5Q7TR(https://gitee.com/opengauss/openGauss-server/issues/I5Q7TR…
您好,默认上复合类型是支持类型转换的,但是通常的支持方式是:record类型转化为对应的记录。
对于多字段的符合类型,我们通常采用的方式如下:
CREATE TYPE compfoo2 AS (f1 int, f2 text); select (1,'demo')::compfoo2;
对于单字段的复合类型,我们支持的转换方式如下:
CREATE TYPE compfoo1 as (id int); select '(1)'::compfoo1;
对于您上面的测试用例,可以修改为如下:
create schema ORACLE_PROCEDURE; create type ORACLE_PROCEDURE.compfoo as (f1 int); create table ORACLE_PROCEDURE.test(a int, b ORACLE_PROCEDURE.compfoo); insert into ORACLE_PROCEDURE.test values(1, '(1)'::ORACLE_PROCEDURE.compfoo);
@jiangquan-git<https://gitee.com/jiangquan-git> 您好,针对issue https://gitee.com/opengauss/openGauss-server/issues/I5P5CK
社区master的最新代码是修复了该core问题,目前执行该sql的结果是如下报错。
[输入图片说明]
原因是基于当前实现,prior后只能跟当前query block中表的列,而且不能跟表达式。可以考虑替换为如下sql:
SELECT *
FROM tbl_channels c
WHERE EXISTS( SELECT department_id
FROM tbl_sys_departments d, tbl_channels cc
WHERE 1= 1 and cc.channel_belong_org = d.department_id
START WITH department_id='' Connect By Prior parent_id=department_id
)
AND ROWNUM <= 1;
对于@cc_db_dev<https://gitee.com/cc_db_dev>评论的:后续有支持此语法的计划吗?oracle是支持的
答复:后续会对start with connect by语法的支持范围做一些扩展,但是prior估计有点难,这个特性是后面新增的,为了保持兼容性,prior是非保留关键字,用户自定义的表名、列名都可以用prior。
如果没有收到您其他的疑问的话我们将在本周关闭此问题单。