Skip to content

Commit 55a4ab5

Browse files
committed
bugfix: nullpointer exception if table in update statement didn't exist
1 parent 17a40ae commit 55a4ab5

1 file changed

Lines changed: 30 additions & 27 deletions

File tree

src/client/compiler/parser/SymbolResolver.ts

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -281,36 +281,39 @@ export class SymbolResolver {
281281
}
282282

283283
let table = node.symbolTable.findTable(node.tableIdentifier);
284-
if (table == null) this.pushError("Die Tabelle " + node.tableIdentifier + " ist nicht bekannt.", "error", node.tableIdentifierPosition);
285-
286-
for (let i = 0; i < node.columnIdentifiers.length; i++) {
287-
let ci = node.columnIdentifiers[i];
288-
let ciPos = node.columnIdentifierPositions[i];
289-
let value = node.values[i];
290-
291-
if (ci == null) continue;
292-
let column = table.columns.find(c => c.identifier == ci);
293-
294-
if (column == null) {
295-
this.pushError(ci + " ist kein Bezeichner einer Spalte der Tabelle " + node.tableIdentifier + ".", "error", ciPos);
284+
if (table == null){
285+
this.pushError("Die Tabelle " + node.tableIdentifier + " ist nicht bekannt.", "error", node.tableIdentifierPosition);
286+
} else {
287+
for (let i = 0; i < node.columnIdentifiers.length; i++) {
288+
let ci = node.columnIdentifiers[i];
289+
let ciPos = node.columnIdentifierPositions[i];
290+
let value = node.values[i];
291+
292+
if (ci == null) continue;
293+
let column = table.columns.find(c => c.identifier == ci);
294+
295+
if (column == null) {
296+
this.pushError(ci + " ist kein Bezeichner einer Spalte der Tabelle " + node.tableIdentifier + ".", "error", ciPos);
297+
}
298+
299+
if (value == null) continue;
300+
let symbolTable = this.pushNewSymbolTable(node.valuePosBegin[i], node.valuePosEnd[i]);
301+
symbolTable.storeTableSymbols(table);
302+
this.resolveTerm(value);
303+
this.symbolTableStack.pop();
304+
305+
}
306+
307+
if (node.whereNodeBegin != null) {
308+
let symbolTable = this.pushNewSymbolTable(node.whereNodeBegin, node.whereNodeEnd);
309+
symbolTable.storeTableSymbols(table);
310+
}
311+
312+
if (node.whereNode != null) {
313+
this.resolveTerm(node.whereNode);
296314
}
297-
298-
if (value == null) continue;
299-
let symbolTable = this.pushNewSymbolTable(node.valuePosBegin[i], node.valuePosEnd[i]);
300-
symbolTable.storeTableSymbols(table);
301-
this.resolveTerm(value);
302-
this.symbolTableStack.pop();
303-
304-
}
305-
306-
if (node.whereNodeBegin != null) {
307-
let symbolTable = this.pushNewSymbolTable(node.whereNodeBegin, node.whereNodeEnd);
308-
symbolTable.storeTableSymbols(table);
309315
}
310316

311-
if (node.whereNode != null) {
312-
this.resolveTerm(node.whereNode);
313-
}
314317
this.symbolTableStack.pop();
315318

316319
}

0 commit comments

Comments
 (0)