Skip to content

Commit 3665412

Browse files
committed
Add check for Merge statement
Signed-off-by: worksofliam <[email protected]>
1 parent 92cdafc commit 3665412

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1900,6 +1900,36 @@ describe(`Parameter statement tests`, () => {
19001900
expect(result.content).toBe(content);
19011901
});
19021902

1903+
test('No embedded area on MERGE (issue 348)', () => {
1904+
const content = [
1905+
`merge into sample.employee e`,
1906+
` using (select *from `,
1907+
` (values ('000011', 'PAOLO', 'I', 'SALVATORE', 'A00', 1234, 'OPERATOR', 14)) as `,
1908+
`newemp (empno, firstnme, midinit, lastname, workdept, phoneno, job , edlevel)) a`,
1909+
` on a.empno = e.empno`,
1910+
`when matched then update `,
1911+
` set e.firstnme = a.firstnme, e.midinit = a.midinit, e.lastname = a.lastname, `,
1912+
` e.workdept = a.workdept, e.phoneno = a.phoneno,`,
1913+
` e.job = a.job, e.edlevel = a.edlevel`,
1914+
`when not matched then `,
1915+
` insert (empno, firstnme, midinit, lastname, workdept, phoneno, job , edlevel)`,
1916+
` values (a.empno, a.firstnme, a.midinit, a.lastname, a.workdept, a.phoneno, `,
1917+
` a.job, a.edlevel);`,
1918+
].join(`\n`);
1919+
1920+
const document = new Document(content);
1921+
const statements = document.statements;
1922+
expect(statements.length).toBe(1);
1923+
1924+
const statement = statements[0];
1925+
expect(statement.type).toBe(StatementType.Merge);
1926+
1927+
const result = document.removeEmbeddedAreas(statement);
1928+
expect(result.parameterCount).toBe(0);
1929+
expect(result.content + `;`).toBe(content);
1930+
expect(result.changed).toBe(false);
1931+
});
1932+
19031933
test(`Callable blocks`, () => {
19041934
const lines = [
19051935
`call qsys2.create_abcd();`,

src/language/sql/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export enum StatementType {
2626
Iterate = "Iterate",
2727
Leave = "Leave",
2828
Loop = "Loop",
29+
Merge = "Merge",
2930
Open = "Open",
3031
Pipe = "Pipe",
3132
Repeat = "Repeat",
@@ -60,6 +61,7 @@ export const StatementTypeWord = {
6061
'ITERATE': StatementType.Iterate,
6162
'LEAVE': StatementType.Leave,
6263
'LOOP': StatementType.Loop,
64+
'MERGE': StatementType.Merge,
6365
'PIPE': StatementType.Pipe,
6466
'REPEAT': StatementType.Repeat,
6567
'RESIGNAL': StatementType.Resignal,

0 commit comments

Comments
 (0)