!1325 add nvarchar keyword to be compatible with databaseB

Merge pull request !1325 from 仲夏十三/master
This commit is contained in:
opengauss-bot
2021-11-01 09:33:15 +00:00
committed by Gitee
6 changed files with 186 additions and 4 deletions

View File

@ -788,8 +788,7 @@ static Node *make_node_from_scanbuf(int start_pos, int end_pos, core_yyscan_t yy
MAPPING MASKING MASTER MATCH MATERIALIZED MATCHED MAXEXTENTS MAXSIZE MAXTRANS MAXVALUE MERGE MINUS_P MINUTE_P MINVALUE MINEXTENTS MODE MODIFY_P MONTH_P MOVE MOVEMENT
MODEL // DB4AI
NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NLSSORT NO NOCOMPRESS NOCYCLE NODE NOLOGGING NOMAXVALUE NOMINVALUE NONE
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NULLS_P NUMBER_P NUMERIC NUMSTR NVARCHAR2 NVL
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NULLS_P NUMBER_P NUMERIC NUMSTR NVARCHAR NVARCHAR2 NVL
OBJECT_P OF OFF OFFSET OIDS ON ONLY OPERATOR OPTIMIZATION OPTION OPTIONS OR
ORDER OUT_P OUTER_P OVER OVERLAPS OVERLAY OWNED OWNER
@ -18394,6 +18393,8 @@ character: CHARACTER opt_varying
{ $$ = (char *)($2 ? "varchar": "bpchar"); }
| NVARCHAR2
{ $$ = "nvarchar2"; }
| NVARCHAR
{ $$ = "nvarchar2"; }
| VARCHAR
{ $$ = "varchar"; }
| VARCHAR2
@ -21800,6 +21801,7 @@ col_name_keyword:
| NULLIF
| NUMBER_P
| NUMERIC
| NVARCHAR
| NVARCHAR2
| NVL
| OUT_P

View File

@ -550,7 +550,7 @@ extern THR_LOCAL bool stmt_contains_operator_plus;
MAPPING MASKING MASTER MASTR MATCH MATERIALIZED MATCHED MAXEXTENTS MAXSIZE MAXTRANS MAXVALUE MERGE MINUS_P MINUTE_P MINVALUE MINEXTENTS MODE MODIFY_P MONTH_P MOVE MOVEMENT
MODEL // DB4AI
NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NLSSORT NO NOCOMPRESS NOCYCLE NODE NOLOGGING NOMAXVALUE NOMINVALUE NONE
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NULLS_P NUMBER_P NUMERIC NUMSTR NVARCHAR2 NVL
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF NULLS_P NUMBER_P NUMERIC NUMSTR NVARCHAR NVARCHAR2 NVL
OBJECT_P OF OFF OFFSET OIDS ON ONLY OPERATOR OPTIMIZATION OPTION OPTIONS OR
ORDER OUT_P OUTER_P OVER OVERLAPS OVERLAY OWNED OWNER
@ -8211,6 +8211,8 @@ character: CHARACTER opt_varying
{ $$ = (char *)($2 ? "varchar": "bpchar"); }
| NVARCHAR2
{ $$ = "nvarchar2"; }
| NVARCHAR
{ $$ = "nvarchar2"; }
| VARCHAR
{ $$ = "varchar"; }
| VARCHAR2
@ -11426,6 +11428,7 @@ col_name_keyword:
| NUMBER_P
| NUMERIC
| NVARCHAR2
| NVARCHAR
| NVL
| OUT_P
| OVERLAY

View File

@ -389,6 +389,7 @@ PG_KEYWORD("nulls", NULLS_P, UNRESERVED_KEYWORD)
PG_KEYWORD("number", NUMBER_P, COL_NAME_KEYWORD)
PG_KEYWORD("numeric", NUMERIC, COL_NAME_KEYWORD)
PG_KEYWORD("numstr", NUMSTR, UNRESERVED_KEYWORD)
PG_KEYWORD("nvarchar", NVARCHAR, COL_NAME_KEYWORD)
PG_KEYWORD("nvarchar2", NVARCHAR2, COL_NAME_KEYWORD)
PG_KEYWORD("nvl", NVL, COL_NAME_KEYWORD)
PG_KEYWORD("object", OBJECT_P, UNRESERVED_KEYWORD)

View File

@ -0,0 +1,110 @@
--
-- VARCHAR
--
CREATE TABLE NVARCHAR_TBL(f1 nvarchar(1));
INSERT INTO NVARCHAR_TBL (f1) VALUES ('a');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('A');
-- any of the following three input formats are acceptable
INSERT INTO NVARCHAR_TBL (f1) VALUES ('1');
INSERT INTO NVARCHAR_TBL (f1) VALUES (2);
INSERT INTO NVARCHAR_TBL (f1) VALUES ('3');
-- zero-length char
INSERT INTO NVARCHAR_TBL (f1) VALUES ('');
-- try varchar's of greater than 1 length
INSERT INTO NVARCHAR_TBL (f1) VALUES ('cd');
ERROR: value too long for type nvarchar2(1)
CONTEXT: referenced column: f1
INSERT INTO NVARCHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM NVARCHAR_TBL;
seven | f1
-------+----
| a
| A
| 1
| 2
| 3
|
| c
(7 rows)
SELECT '' AS six, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 <> 'a';
six | f1
-----+----
| A
| 1
| 2
| 3
| c
(5 rows)
SELECT '' AS one, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 = 'a';
one | f1
-----+----
| a
(1 row)
SELECT '' AS five, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 < 'a';
five | f1
------+----
| 1
| 2
| 3
(3 rows)
SELECT '' AS six, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 <= 'a';
six | f1
-----+----
| a
| 1
| 2
| 3
(4 rows)
SELECT '' AS one, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 > 'a';
one | f1
-----+----
| A
| c
(2 rows)
SELECT '' AS two, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 >= 'a';
two | f1
-----+----
| a
| A
| c
(3 rows)
DROP TABLE NVARCHAR_TBL;
--
-- Now test longer arrays of char
--
CREATE TABLE NVARCHAR_TBL(f1 nvarchar(4));
INSERT INTO NVARCHAR_TBL (f1) VALUES ('a');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('ab');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('abcd');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('abcde');
ERROR: value too long for type nvarchar2(4)
CONTEXT: referenced column: f1
INSERT INTO NVARCHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM NVARCHAR_TBL;
four | f1
------+------
| a
| ab
| abcd
| abcd
(4 rows)

View File

@ -25,7 +25,7 @@ test: single_node_tablespace
# ----------
# The first group of parallel tests
# ----------
test: single_node_boolean single_node_char single_node_name single_node_varchar single_node_text single_node_int2 single_node_int4 single_node_int8 single_node_oid single_node_float4 single_node_float8 single_node_bit single_node_numeric single_node_txid single_node_uuid single_node_enum single_node_money
test: single_node_boolean single_node_char single_node_name single_node_varchar single_node_text single_node_int2 single_node_int4 single_node_int8 single_node_oid single_node_float4 single_node_float8 single_node_bit single_node_numeric single_node_txid single_node_uuid single_node_enum single_node_money single_node_nvarchar
# Depends on things setup during char, varchar and text
#test: single_node_strings

View File

@ -0,0 +1,66 @@
--
-- VARCHAR
--
CREATE TABLE NVARCHAR_TBL(f1 nvarchar(1));
INSERT INTO NVARCHAR_TBL (f1) VALUES ('a');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('A');
-- any of the following three input formats are acceptable
INSERT INTO NVARCHAR_TBL (f1) VALUES ('1');
INSERT INTO NVARCHAR_TBL (f1) VALUES (2);
INSERT INTO NVARCHAR_TBL (f1) VALUES ('3');
-- zero-length char
INSERT INTO NVARCHAR_TBL (f1) VALUES ('');
-- try varchar's of greater than 1 length
INSERT INTO NVARCHAR_TBL (f1) VALUES ('cd');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('c ');
SELECT '' AS seven, * FROM NVARCHAR_TBL;
SELECT '' AS six, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 <> 'a';
SELECT '' AS one, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 = 'a';
SELECT '' AS five, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 < 'a';
SELECT '' AS six, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 <= 'a';
SELECT '' AS one, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 > 'a';
SELECT '' AS two, c.*
FROM NVARCHAR_TBL c
WHERE c.f1 >= 'a';
DROP TABLE NVARCHAR_TBL;
--
-- Now test longer arrays of char
--
CREATE TABLE NVARCHAR_TBL(f1 nvarchar(4));
INSERT INTO NVARCHAR_TBL (f1) VALUES ('a');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('ab');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('abcd');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('abcde');
INSERT INTO NVARCHAR_TBL (f1) VALUES ('abcd ');
SELECT '' AS four, * FROM NVARCHAR_TBL;