@@ -943,6 +943,35 @@ describe(`Object references`, () => {
943
943
expect ( refs [ 0 ] . object . name ) . toBe ( `apiVersion` ) ;
944
944
expect ( refs [ 0 ] . createType ) . toBe ( `varchar(10) ccsid 1208 default '2023-07-07'` ) ;
945
945
} ) ;
946
+
947
+ test ( `SELECT, WITH & LATERAL` , ( ) => {
948
+ const lines = [
949
+ `with qsysobjs (lib, obj, type) as (` ,
950
+ ` select object_library, object_name, object_type` ,
951
+ ` from table (qsys2.object_ownership(current_user))` ,
952
+ ` where path_name is null` ,
953
+ `)` ,
954
+ `select lib concat '/' concat obj concat ' (' concat type concat ')' as label,` ,
955
+ ` objsize as "Size"` ,
956
+ ` from qsysobjs q, lateral (` ,
957
+ ` select objcreated, last_used_timestamp, objsize` ,
958
+ ` from table (qsys2.object_statistics(lib, type, obj))` ,
959
+ ` ) z` ,
960
+ `where objsize is not null` ,
961
+ `order by OBJSIZE DESC` ,
962
+ `limit 10;` ,
963
+ ] . join ( `\n` ) ;
964
+
965
+ const document = new Document ( lines ) ;
966
+
967
+ expect ( document . statements . length ) . toBe ( 1 ) ;
968
+
969
+ const statement = document . statements [ 0 ] ;
970
+
971
+ expect ( statement . type ) . toBe ( StatementType . With ) ;
972
+
973
+ const refs = statement . getObjectReferences ( ) ;
974
+ } ) ;
946
975
} ) ;
947
976
948
977
describe ( `Offset reference tests` , ( ) => {
@@ -1138,8 +1167,28 @@ describe(`PL body tests`, () => {
1138
1167
const refs = statement . getObjectReferences ( ) ;
1139
1168
const ctes = statement . getCTEReferences ( ) ;
1140
1169
1141
- expect ( refs . length ) . toBe ( 1 ) ;
1142
- expect ( refs [ 0 ] . object . name ) . toBe ( `Temp02` ) ;
1170
+ console . log ( refs ) ;
1171
+ expect ( refs . length ) . toBe ( 7 ) ;
1172
+ expect ( refs [ 0 ] . object . name ) . toBe ( `shipments` ) ;
1173
+ expect ( refs [ 0 ] . alias ) . toBe ( `s` ) ;
1174
+
1175
+ expect ( refs [ 1 ] . object . name ) . toBe ( `BillingDate` ) ;
1176
+ expect ( refs [ 1 ] . alias ) . toBeUndefined ( ) ;
1177
+
1178
+ expect ( refs [ 2 ] . object . name ) . toBe ( `Temp01` ) ;
1179
+ expect ( refs [ 2 ] . alias ) . toBe ( `t1` ) ;
1180
+
1181
+ expect ( refs [ 3 ] . object . name ) . toBe ( `Temp01` ) ;
1182
+ expect ( refs [ 3 ] . alias ) . toBe ( `t1` ) ;
1183
+
1184
+ expect ( refs [ 4 ] . object . name ) . toBe ( `Temp02` ) ;
1185
+ expect ( refs [ 4 ] . alias ) . toBe ( `t2` ) ;
1186
+
1187
+ expect ( refs [ 5 ] . object . name ) . toBe ( `customers` ) ;
1188
+ expect ( refs [ 5 ] . alias ) . toBe ( `c` ) ;
1189
+
1190
+ expect ( refs [ 6 ] . object . name ) . toBe ( `Temp02` ) ;
1191
+ expect ( refs [ 6 ] . alias ) . toBeUndefined ( ) ;
1143
1192
1144
1193
expect ( ctes . length ) . toBe ( 3 ) ;
1145
1194
expect ( ctes [ 0 ] . name ) . toBe ( `Temp01` ) ;
@@ -1174,9 +1223,11 @@ describe(`PL body tests`, () => {
1174
1223
expect ( statement . type ) . toBe ( StatementType . With ) ;
1175
1224
1176
1225
const objs = statement . getObjectReferences ( ) ;
1177
- expect ( objs . length ) . toBe ( 1 ) ;
1178
- expect ( objs [ 0 ] . object . schema ) . toBe ( undefined ) ;
1179
- expect ( objs [ 0 ] . object . name ) . toBe ( `cteme` ) ;
1226
+ expect ( objs . length ) . toBe ( 2 ) ;
1227
+ expect ( objs [ 0 ] . object . schema ) . toBe ( `qsys2` ) ;
1228
+ expect ( objs [ 0 ] . object . name ) . toBe ( `sysixadv` ) ;
1229
+ expect ( objs [ 1 ] . object . schema ) . toBe ( undefined ) ;
1230
+ expect ( objs [ 1 ] . object . name ) . toBe ( `cteme` ) ;
1180
1231
1181
1232
const ctes = statement . getCTEReferences ( ) ;
1182
1233
expect ( ctes . length ) . toBe ( 1 ) ;
0 commit comments