@@ -945,6 +945,96 @@ parserScenarios(`Object references`, ({newDoc}) => {
945
945
expect ( refs [ 1 ] . object . schema ) . toBe ( `LIB` ) ;
946
946
} ) ;
947
947
948
+ test ( 'CREATE TABLE: routine parametes with primary key' , ( ) => {
949
+ const content = [
950
+ `-- Employee Master` ,
951
+ `-- Generated on: 11/03/21 14:32:20` ,
952
+ `CREATE OR REPLACE TABLE super_long_dept_name FOR SYSTEM NAME DEPT (` ,
953
+ `-- SQL150B 10 REUSEDLT(*NO) in table EMPMST in PAYROLL1 ignored.` ,
954
+ ` COL_B CHAR(1) CCSID 37 NOT NULL DEFAULT '' ,` ,
955
+ ` PRIMARY KEY( COL_B ) );` ,
956
+ ] . join ( `\n` ) ;
957
+
958
+ const document = newDoc ( content ) ;
959
+ const groups = document . getStatementGroups ( ) ;
960
+
961
+ expect ( groups . length ) . toBe ( 1 ) ;
962
+ const createStatement = groups [ 0 ] . statements [ 0 ] ;
963
+
964
+ expect ( createStatement . type ) . toBe ( StatementType . Create ) ;
965
+
966
+ const parms = createStatement . getRoutineParameters ( ) ;
967
+ expect ( parms . length ) . toBe ( 1 ) ;
968
+ expect ( parms [ 0 ] . alias ) . toBe ( `COL_B` ) ;
969
+ } ) ;
970
+
971
+ test ( 'CREATE TABLE: simple routine parametes test' , ( ) => {
972
+ const content = [
973
+ `CREATE TABLE ROSSITER.INVENTORY` ,
974
+ `(PARTNO SMALLINT NOT NULL,` ,
975
+ ` DESCR VARCHAR(24),` ,
976
+ ` QONHAND INT)` ,
977
+ ] . join ( `\n` ) ;
978
+
979
+ const document = newDoc ( content ) ;
980
+ const groups = document . getStatementGroups ( ) ;
981
+
982
+ expect ( groups . length ) . toBe ( 1 ) ;
983
+ const createStatement = groups [ 0 ] . statements [ 0 ] ;
984
+
985
+ expect ( createStatement . type ) . toBe ( StatementType . Create ) ;
986
+
987
+ const parms = createStatement . getRoutineParameters ( ) ;
988
+ expect ( parms . length ) . toBe ( 3 ) ;
989
+
990
+ expect ( parms [ 0 ] . alias ) . toBe ( `PARTNO` ) ;
991
+ expect ( parms [ 0 ] . createType ) . toBe ( `SMALLINT NOT NULL` ) ;
992
+
993
+ expect ( parms [ 1 ] . alias ) . toBe ( `DESCR` ) ;
994
+ expect ( parms [ 1 ] . createType ) . toBe ( `VARCHAR(24)` ) ;
995
+
996
+ expect ( parms [ 2 ] . alias ) . toBe ( `QONHAND` ) ;
997
+ expect ( parms [ 2 ] . createType ) . toBe ( `INT` ) ;
998
+ } ) ;
999
+
1000
+ test ( 'CREATE TABLE: generated types' , ( ) => {
1001
+ const content = [
1002
+ `CREATE TABLE policy_info` ,
1003
+ ` (policy_id CHAR(10) NOT NULL,` ,
1004
+ ` coverage INT NOT NULL,` ,
1005
+ ` sys_start TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN,` ,
1006
+ ` sys_end TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END,` ,
1007
+ ` create_id TIMESTAMP(12) GENERATED ALWAYS AS TRANSACTION START ID,` ,
1008
+ ` PERIOD SYSTEM_TIME(sys_start,sys_end));` ,
1009
+ ] . join ( `\n` ) ;
1010
+
1011
+ const document = newDoc ( content ) ;
1012
+ const groups = document . getStatementGroups ( ) ;
1013
+
1014
+ expect ( groups . length ) . toBe ( 1 ) ;
1015
+ const createStatement = groups [ 0 ] . statements [ 0 ] ;
1016
+
1017
+ expect ( createStatement . type ) . toBe ( StatementType . Create ) ;
1018
+
1019
+ const parms = createStatement . getRoutineParameters ( ) ;
1020
+ expect ( parms . length ) . toBe ( 5 ) ;
1021
+
1022
+ expect ( parms [ 0 ] . alias ) . toBe ( `policy_id` ) ;
1023
+ expect ( parms [ 0 ] . createType ) . toBe ( `CHAR(10) NOT NULL` ) ;
1024
+
1025
+ expect ( parms [ 1 ] . alias ) . toBe ( `coverage` ) ;
1026
+ expect ( parms [ 1 ] . createType ) . toBe ( `INT NOT NULL` ) ;
1027
+
1028
+ expect ( parms [ 2 ] . alias ) . toBe ( `sys_start` ) ;
1029
+ expect ( parms [ 2 ] . createType ) . toBe ( `TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW BEGIN` ) ;
1030
+
1031
+ expect ( parms [ 3 ] . alias ) . toBe ( `sys_end` ) ;
1032
+ expect ( parms [ 3 ] . createType ) . toBe ( `TIMESTAMP(12) NOT NULL GENERATED ALWAYS AS ROW END` ) ;
1033
+
1034
+ expect ( parms [ 4 ] . alias ) . toBe ( `create_id` ) ;
1035
+ expect ( parms [ 4 ] . createType ) . toBe ( `TIMESTAMP(12) GENERATED ALWAYS AS TRANSACTION START ID` ) ;
1036
+ } )
1037
+
948
1038
test ( `DECLARE VARIABLE` , ( ) => {
949
1039
const document = newDoc ( `declare watsonx_response Varchar(10000) CCSID 1208;` ) ;
950
1040
const groups = document . getStatementGroups ( ) ;
0 commit comments