Skip to content

Commit 58b125c

Browse files
committed
Fix bug where procedure parameter was getting mixed up with host variable
Signed-off-by: worksofliam <[email protected]>
1 parent 95391d9 commit 58b125c

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

src/language/sql/statement.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,7 @@ export default class Statement {
546546
let declareStmt: Token|undefined;
547547

548548
for (let i = 0; i < this.tokens.length; i++) {
549+
const prevToken = this.tokens[i-1];
549550
const currentToken = this.tokens[i];
550551

551552
switch (currentToken.type) {
@@ -593,6 +594,7 @@ export default class Statement {
593594
case `colon`:
594595
if (intoClause) continue;
595596
if (declareStmt) continue;
597+
if (prevToken && prevToken.type === `string`) continue;
596598

597599
let nextMustBe: "word"|"dot" = `word`;
598600
let followingTokenI = i+1;

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1264,6 +1264,17 @@ describe(`Parameter statement tests`, () => {
12641264
expect(markerRanges.length).toBe(2);
12651265
});
12661266

1267+
test('JSON_OBJECT parameters should not mark as embedded', () => {
1268+
const document = new Document(`values json_object('model_id': 'meta-llama/llama-2-13b-chat', 'input': 'TEXT', 'parameters': json_object('max_new_tokens': 100, 'time_limit': 1000), 'space_id': 'SPACEID')`);
1269+
const statements = document.statements;
1270+
expect(statements.length).toBe(1);
1271+
1272+
const statement = statements[0];
1273+
1274+
const markerRanges = statement.getEmbeddedStatementAreas();
1275+
expect(markerRanges.length).toBe(0);
1276+
});
1277+
12671278
test(`Single questionmark parameter content test`, () => {
12681279
const sql = `select * from sample where x = ?`;
12691280
const document = new Document(sql);

0 commit comments

Comments
 (0)