Skip to content

Commit df26627

Browse files
committed
Fix bug to include parameters for call statements
Signed-off-by: worksofliam <[email protected]>
1 parent 396312e commit df26627

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/language/sql/statement.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ export default class Statement {
550550

551551
let endIndex = i;
552552

553-
const isSubSelect = tokenIs(nextToken, `function`, `TABLE`) || tokenIs(nextToken, `function`, `LATERAL`) || (options.includeParameters && tokenIs(nextToken, `function`));
553+
const isSubSelect = (tokenIs(nextToken, `function`, `TABLE`) || tokenIs(nextToken, `function`, `LATERAL`) || (options.includeParameters && tokenIs(nextToken, `function`)) && this.type !== StatementType.Call);
554554

555555
if (isSubSelect) {
556556
sqlObj = this.getRefAtToken(i+2);
@@ -598,7 +598,6 @@ export default class Statement {
598598
}
599599

600600
if (sqlObj) {
601-
602601
if (options.withSystemName !== true) {
603602
// If the next token is not a clause.. we might have the alias
604603
if (nextToken && this.tokens[nextIndex+1]) {

src/language/sql/tests/statements.test.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -480,9 +480,13 @@ parserScenarios(`Object references`, ({newDoc}) => {
480480

481481
const refsA = talksStatement.getObjectReferences();
482482
expect(refsA.length).toBe(1);
483-
expect(refsA[0].tokens.length).toBe(1);
483+
484484
expect(refsA[0].object.name).toBe(`create_Sql_sample`);
485485
expect(refsA[0].object.schema).toBeUndefined();
486+
487+
const tokens = refsA[0].tokens;
488+
expect(tokens.length).toBe(4); // Includes the parameter tokens since it's a call
489+
expect(tokens[tokens.length-1].type).toBe(`closebracket`);
486490
});
487491

488492
test(`CALL: simple qualified`, () => {
@@ -498,9 +502,13 @@ parserScenarios(`Object references`, ({newDoc}) => {
498502

499503
const refsA = talksStatement.getObjectReferences();
500504
expect(refsA.length).toBe(1);
501-
expect(refsA[0].tokens.length).toBe(3);
505+
502506
expect(refsA[0].object.name).toBe(`create_Sql_sample`);
503507
expect(refsA[0].object.schema).toBe(`"QSYS"`);
508+
509+
const tokens = refsA[0].tokens;
510+
expect(tokens.length).toBe(6); // Includes the parameter tokens since it's a call
511+
expect(tokens[tokens.length-1].type).toBe(`closebracket`);
504512
});
505513

506514
test(`ALTER: with reference`, () => {

0 commit comments

Comments
 (0)