!35 openGauss support CLOB datatype, which is implemented by TEXT type in PG

Merge pull request !35 from 德塔贝斯/dev-master
This commit is contained in:
opengauss-bot
2020-07-20 23:35:51 +08:00
committed by Gitee
9 changed files with 62 additions and 62 deletions

View File

@ -1764,25 +1764,28 @@ CREATE CAST (RAW AS TEXT) WITH FUNCTION rawtohex(raw) AS IMPLICIT;
CREATE CAST (BLOB AS RAW) WITHOUT FUNCTION AS IMPLICIT;
CREATE CAST (RAW AS BLOB) WITHOUT FUNCTION AS IMPLICIT;
CREATE CAST (TEXT AS CLOB) WITHOUT FUNCTION AS IMPLICIT;
CREATE CAST (CLOB AS TEXT) WITHOUT FUNCTION AS IMPLICIT;
/* text to clob */
CREATE OR REPLACE FUNCTION to_clob(TEXT)
RETURNS TEXT
RETURNS CLOB
AS $$ select $1 $$
LANGUAGE SQL IMMUTABLE STRICT NOT FENCED;
/* char to clob */
CREATE OR REPLACE FUNCTION to_clob(CHAR)
RETURNS TEXT
RETURNS CLOB
AS $$ select CAST($1 AS TEXT) $$
LANGUAGE SQL IMMUTABLE STRICT NOT FENCED;
CREATE OR REPLACE FUNCTION to_clob(VARCHAR)
RETURNS TEXT
RETURNS CLOB
AS $$ select CAST($1 AS TEXT) $$
LANGUAGE SQL IMMUTABLE STRICT NOT FENCED;
CREATE OR REPLACE FUNCTION to_clob(NVARCHAR2)
RETURNS TEXT
RETURNS CLOB
AS $$ select CAST($1 AS TEXT) $$
LANGUAGE SQL IMMUTABLE STRICT NOT FENCED;

View File

@ -449,18 +449,6 @@ TypeName* makeTypeName(char* typnam)
return makeTypeNameFromNameList(list_make1(makeString(typnam)));
}
static void alter_clob_to_text(List* names)
{
if (list_length(names) != 1) {
return;
} else {
char* type_name = strVal(linitial(names));
if (strcmp(type_name, "clob") == 0) {
errno_t rc = strcpy_s(type_name, sizeof("clob"), "text");
securec_check_c(rc, "\0", "\0");
}
}
}
/*
* makeTypeNameFromNameList -
* build a TypeName node for a String list representing a qualified name.
@ -470,7 +458,6 @@ static void alter_clob_to_text(List* names)
TypeName* makeTypeNameFromNameList(List* names)
{
TypeName* n = makeNode(TypeName);
alter_clob_to_text(names);
n->names = names;
n->typmods = NIL;

View File

@ -759,7 +759,8 @@ bool IsTypeSupportedByCStore(_in_ Oid typeOid, _in_ int32 typeMod)
CASHOID,
CIDROID,
BITOID,
VARBITOID};
VARBITOID,
CLOBOID};
for (uint32 i = 0; i < sizeof(supportType) / sizeof(Oid); ++i) {
if (supportType[i] == typeOid) {

View File

@ -4896,6 +4896,7 @@ Datum datalength(PG_FUNCTION_ARGS)
case VARCHAROID: /* for VARCHAR */
case NVARCHAR2OID: /* for NVARCHAR */
case TEXTOID: /* for TEXT */
case CLOBOID: /* for CLOB */
{
result = toast_raw_datum_size(value) - VARHDRSZ;
break;

View File

@ -264,6 +264,7 @@ DATA(insert ( 23 3769 0 i b ));
DATA(insert ( 3769 20 1288 a f ));
DATA(insert ( 3769 23 0 a b ));
DATA(insert ( 25 2205 1079 i f ));
DATA(insert ( 90 2205 1079 i f ));
DATA(insert ( 1043 2205 1079 i f ));
DATA(insert ( 3969 2205 1079 i f ));
@ -273,38 +274,51 @@ DATA(insert ( 3969 2205 1079 i f ));
DATA(insert ( 25 1042 0 i b ));
DATA(insert ( 25 1043 0 i b ));
DATA(insert ( 25 3969 0 i b ));
DATA(insert ( 90 1042 0 i b ));
DATA(insert ( 90 1043 0 i b ));
DATA(insert ( 90 3969 0 i b ));
DATA(insert ( 1042 25 401 i f ));
DATA(insert ( 1042 90 401 i f ));
DATA(insert ( 1042 1043 401 i f ));
DATA(insert ( 1043 25 0 i b ));
DATA(insert ( 1043 90 0 i b ));
DATA(insert ( 1043 1042 0 i b ));
DATA(insert ( 1042 3969 401 i f ));
DATA(insert ( 3969 25 0 i b ));
DATA(insert ( 3969 90 0 i b ));
DATA(insert ( 3969 1042 0 i b ));
DATA(insert ( 3969 1043 0 i b ));
DATA(insert ( 1043 3969 0 i b ));
DATA(insert ( 18 25 946 i f ));
DATA(insert ( 18 90 946 i f ));
DATA(insert ( 18 1042 860 a f ));
DATA(insert ( 18 1043 946 a f ));
DATA(insert ( 18 3969 946 a f ));
DATA(insert ( 19 25 406 i f ));
DATA(insert ( 19 90 406 i f ));
DATA(insert ( 19 1042 408 a f ));
DATA(insert ( 19 1043 1401 a f ));
DATA(insert ( 19 3969 1401 a f ));
DATA(insert ( 25 18 944 a f ));
DATA(insert ( 90 18 944 a f ));
DATA(insert ( 1042 18 944 a f ));
DATA(insert ( 1043 18 944 a f ));
DATA(insert ( 3969 18 944 a f ));
DATA(insert ( 25 19 407 i f ));
DATA(insert ( 90 19 407 i f ));
DATA(insert ( 1042 19 409 i f ));
DATA(insert ( 1043 19 1400 i f ));
DATA(insert ( 3969 19 1400 i f ));
/* Allow explicit coercions between int4 and "char" */
DATA(insert ( 18 23 77 e f ));
DATA(insert ( 23 18 78 e f ));
/* pg_node_tree can be coerced to, but not from, text */
DATA(insert ( 194 25 0 i b ));
DATA(insert ( 194 90 0 i b ));
/*
* Datetime category
@ -331,6 +345,7 @@ DATA(insert ( 1186 703 1194 a f ));
DATA(insert ( 1186 1083 1419 a f ));
DATA(insert ( 1266 1083 2046 a f ));
DATA(insert ( 25 1114 4073 i f ));
DATA(insert ( 90 1114 4073 i f ));
/* Cross-category casts between int4 and abstime, reltime */
DATA(insert ( 23 702 0 e b ));
@ -391,6 +406,12 @@ DATA(insert ( 16 25 2971 a f ));
DATA(insert ( 142 25 0 a b ));
DATA(insert ( 25 142 2896 e f ));
DATA(insert ( 650 90 730 a f ));
DATA(insert ( 869 90 730 a f ));
DATA(insert ( 16 90 2971 a f ));
DATA(insert ( 142 90 0 a b ));
DATA(insert ( 90 142 2896 e f ));
/*
* Cross-category casts to and from VARCHAR
*
@ -436,19 +457,30 @@ DATA(insert ( 1562 1562 1687 i f ));
DATA(insert ( 1700 1700 1703 i f ));
DATA(insert ( 1082 25 4159 i f ));
DATA(insert ( 1082 90 4159 i f ));
DATA(insert ( 1082 1042 4160 i f ));
DATA(insert ( 1082 1043 4161 i f ));
DATA(insert ( 1043 1082 4162 i f ));
DATA(insert ( 1042 1082 4163 i f ));
DATA(insert ( 25 1082 4164 i f ));
DATA(insert ( 90 1082 4164 i f ));
DATA(insert ( 5545 25 4165 i f ));
DATA(insert ( 21 25 4166 i f ));
DATA(insert ( 23 25 4167 i f ));
DATA(insert ( 20 25 4168 i f ));
DATA(insert ( 700 25 4169 i f ));
DATA(insert ( 701 25 4170 i f ));
DATA(insert ( 21 25 4166 i f ));
DATA(insert ( 23 25 4167 i f ));
DATA(insert ( 20 25 4168 i f ));
DATA(insert ( 700 25 4169 i f ));
DATA(insert ( 701 25 4170 i f ));
DATA(insert ( 1700 25 4171 i f ));
DATA(insert ( 5545 90 4165 i f ));
DATA(insert ( 21 90 4166 i f ));
DATA(insert ( 23 90 4167 i f ));
DATA(insert ( 20 90 4168 i f ));
DATA(insert ( 700 90 4169 i f ));
DATA(insert ( 701 90 4170 i f ));
DATA(insert ( 1700 90 4171 i f ));
DATA(insert ( 1042 1700 4172 i f ));
DATA(insert ( 1043 1700 4173 i f ));
DATA(insert ( 1043 23 4174 i f ));
@ -456,6 +488,8 @@ DATA(insert ( 1042 23 4175 i f ));
DATA(insert ( 1043 20 4176 i f ));
DATA(insert ( 1184 25 4177 i f ));
DATA(insert ( 1114 25 4178 i f ));
DATA(insert ( 1184 90 4177 i f ));
DATA(insert ( 1114 90 4178 i f ));
DATA(insert ( 1114 1043 4179 i f ));
DATA(insert ( 21 1043 4180 i f ));
DATA(insert ( 23 1043 4181 i f ));
@ -474,6 +508,14 @@ DATA(insert ( 25 700 4192 i f ));
DATA(insert ( 25 701 4193 i f ));
DATA(insert ( 25 1700 4194 i f ));
DATA(insert ( 90 5545 4188 i f ));
DATA(insert ( 90 21 4189 i f ));
DATA(insert ( 90 23 4190 i f ));
DATA(insert ( 90 20 4191 i f ));
DATA(insert ( 90 700 4192 i f ));
DATA(insert ( 90 701 4193 i f ));
DATA(insert ( 90 1700 4194 i f ));
DATA(insert (5545 1043 4065 i f ));
DATA(insert (5545 3969 4066 i f ));
DATA(insert (5545 1042 4067 i f ));

View File

@ -76,27 +76,3 @@ select count(*) from TMP_ASSET_MAX_BELONG;
200000
(1 row)
explain (analyze on, detail on, costs off)
SELECT Party_Id, Zone_Num, Asset_Max_Belong_Org_Num FROM(SELECT
T1.Party_Id
,T1.Zone_Num
,T1.Asset_Max_Belong_Org_Num
,ROW_NUMBER() OVER(PARTITION BY T1.Party_Id) AS QUA_ROW_NUM_1
FROM TMP_CUST_ASSET_SUM_1 T1 group by 1,2,3
)AA WHERE QUA_ROW_NUM_1 <= 1
;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------
--? Subquery Scan on aa (actual time=.* rows=.* loops=.*)
Filter: (aa.qua_row_num_1 <= 1)
--? -> WindowAgg (actual time=.* rows=.* loops=.*)
--? -> Sort (actual time=.* rows=.* loops=.*)
Sort Key: t1.party_id
Sort Method: external merge Memory: 4704kB
--? -> HashAggregate (actual time=.* rows=.* loops=.*)
Group By Key: t1.party_id, t1.zone_num, t1.asset_max_belong_org_num
Temp File Num: 512
--? -> Seq Scan on tmp_cust_asset_sum_1 t1 (actual time=.* rows=.* loops=.*)
--? Total runtime: .* ms
(11 rows)

View File

@ -58,7 +58,7 @@ CREATE TABLE s_latin1_utf8_001_01
c_char_2 | character(100) | | extended | |
c_varchar | character varying(1024) | | extended | |
c_text | text | | extended | |
c_clob | text | | extended | |
c_clob | clob | | extended | |
c_numeric | numeric(20,5) | | main | |
c_dp | double precision | | plain | |
Has OIDs: no

View File

@ -926,7 +926,7 @@ CREATE TABLE tb1 (
col_character_varying character varying(200),
col_varchar2 character varying(200) DEFAULT 'aaaabbbb'::character varying,
col_narchar2 nvarchar2(200) DEFAULT 'aaaabbbb'::nvarchar2 NOT NULL,
col_clob text,
col_clob clob,
col_text text,
col_name1 name,
col_char2 "char",
@ -1019,7 +1019,7 @@ CREATE TABLE tb1_column (
col_character_varying character varying(200),
col_varchar2 character varying(200) DEFAULT 'aaaabbbb'::character varying,
col_narchar2 nvarchar2(200) DEFAULT 'aaaabbbb'::nvarchar2 NOT NULL,
col_clob text,
col_clob clob,
col_text text,
col_char2 "char",
col_bytea bytea,
@ -1134,7 +1134,7 @@ CREATE TABLE tb1_partition (
col_character_varying character varying(200),
col_varchar2 character varying(200) DEFAULT 'aaaabbbb'::character varying,
col_narchar2 nvarchar2(200) DEFAULT 'aaaabbbb'::nvarchar2 NOT NULL,
col_clob text,
col_clob clob,
col_text text,
col_name1 name,
col_char2 "char",
@ -1286,7 +1286,7 @@ CREATE TABLE tb2_empty (
col_character_varying character varying(200),
col_varchar2 character varying(200) DEFAULT 'aaaabbbb'::character varying,
col_narchar2 nvarchar2(200) DEFAULT 'aaaabbbb'::nvarchar2 NOT NULL,
col_clob text,
col_clob clob,
col_text text,
col_name1 name,
col_char2 "char",

View File

@ -59,13 +59,3 @@ FROM TMP_CUST_ASSET_SUM_1 T1 group by 1,2,3
;
select count(*) from TMP_ASSET_MAX_BELONG;
explain (analyze on, detail on, costs off)
SELECT Party_Id, Zone_Num, Asset_Max_Belong_Org_Num FROM(SELECT
T1.Party_Id
,T1.Zone_Num
,T1.Asset_Max_Belong_Org_Num
,ROW_NUMBER() OVER(PARTITION BY T1.Party_Id) AS QUA_ROW_NUM_1
FROM TMP_CUST_ASSET_SUM_1 T1 group by 1,2,3
)AA WHERE QUA_ROW_NUM_1 <= 1
;