Skip to content

Commit 96b4954

Browse files
committed
Improvement to generate bind statement to use named values
Signed-off-by: worksofliam <[email protected]>
1 parent 60e33cb commit 96b4954

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

src/language/providers/actionProvider.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { remoteAssistIsEnabled } from "./logic/available";
33
import { getSqlDocument } from "./logic/parse";
44

55
class SqlCodeAction extends CodeAction {
6-
constructor(title: string, kind: CodeActionKind, public file: {document: TextDocument, statementOffset: number, bindCount: number}) {
6+
constructor(title: string, kind: CodeActionKind, public file: {document: TextDocument, statementOffset: number, names: string[]}) {
77
super(title, kind);
88
}
99
}
@@ -32,7 +32,7 @@ export const actionProvider = languages.registerCodeActionsProvider({ language:
3232
const action = new SqlCodeAction(`Generate bind statement`, CodeActionKind.QuickFix, {
3333
document,
3434
statementOffset: currentStatement.range.end,
35-
bindCount: markers.length
35+
names: markers.map(marker => marker.named || `?`)
3636
});
3737

3838
codeActions.push(action);
@@ -52,7 +52,7 @@ export const actionProvider = languages.registerCodeActionsProvider({ language:
5252
const endOfStatementPos = document.positionAt(codeAction.file.statementOffset);
5353
const lineOfStatement = document.lineAt(endOfStatementPos.line);
5454

55-
let statement = `bind: ${new Array(codeAction.file.bindCount).fill(`v`).join(`, `)}`;
55+
let statement = `bind: ${codeAction.file.names.join(`, `)}`;
5656

5757
codeAction.edit.insert(document.uri, lineOfStatement.range.end, `\n${statement};`);
5858
return codeAction;

src/language/sql/statement.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ export default class Statement {
659659
// Only these statements support the INTO clause in embedded SQL really
660660
const validIntoStatements: StatementType[] = [StatementType.Unknown, StatementType.With, StatementType.Select];
661661

662-
let ranges: {type: "remove"|"marker", range: IRange}[] = [];
662+
let ranges: {type: "remove"|"marker", range: IRange, named?: string}[] = [];
663663
let intoClause: Token|undefined;
664664
let declareStmt: Token|undefined;
665665
let lastTokenWasMarker = false;
@@ -761,7 +761,8 @@ export default class Statement {
761761
range: {
762762
start: currentToken.range.start,
763763
end: (endToken.range.end)
764-
}
764+
},
765+
named: endToken.value
765766
});
766767

767768
lastTokenWasMarker = true;

0 commit comments

Comments
 (0)