!1325 add nvarchar keyword to be compatible with databaseB
Merge pull request !1325 from 仲夏十三/master
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
110
src/test/regress/expected/single_node_nvarchar.out
Normal file
110
src/test/regress/expected/single_node_nvarchar.out
Normal 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)
|
||||
|
@ -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
|
||||
|
66
src/test/regress/sql/single_node_nvarchar.sql
Normal file
66
src/test/regress/sql/single_node_nvarchar.sql
Normal 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;
|
Reference in New Issue
Block a user