|
|
@@ -23,16 +23,31 @@ DataManipulation_EDIT
|
|
|
;
|
|
|
|
|
|
UpdateStatement
|
|
|
- : 'UPDATE' TargetTable 'SET' SetClauseList OptionalWhereClause
|
|
|
+ : 'UPDATE' TargetTable 'SET' SetClauseList OptionalFromJoinedTable OptionalWhereClause
|
|
|
;
|
|
|
|
|
|
UpdateStatement_EDIT
|
|
|
- : 'UPDATE' TargetTable_EDIT 'SET' SetClauseList OptionalWhereClause
|
|
|
- | 'UPDATE' TargetTable 'SET' SetClauseList_EDIT OptionalWhereClause
|
|
|
- | 'UPDATE' TargetTable 'SET' SetClauseList WhereClause_EDIT
|
|
|
- | 'UPDATE' TargetTable 'SET' SetClauseList OptionalWhereClause 'CURSOR'
|
|
|
+ : 'UPDATE' TargetTable_EDIT 'SET' SetClauseList OptionalFromJoinedTable OptionalWhereClause
|
|
|
+ | 'UPDATE' TargetTable 'SET' SetClauseList_EDIT OptionalFromJoinedTable OptionalWhereClause
|
|
|
+ | 'UPDATE' TargetTable 'SET' SetClauseList FromJoinedTable_EDIT OptionalWhereClause
|
|
|
+ | 'UPDATE' TargetTable 'SET' SetClauseList OptionalFromJoinedTable WhereClause_EDIT
|
|
|
+ | 'UPDATE' TargetTable 'SET' SetClauseList OptionalFromJoinedTable OptionalWhereClause 'CURSOR'
|
|
|
{
|
|
|
- if (!$5) {
|
|
|
+ if (parser.isImpala() && !$6 && !$5) {
|
|
|
+ parser.suggestKeywords([{ value: 'FROM', weight: 2 }, { value: 'WHERE', weight: 1 }]);
|
|
|
+ } else if (parser.isImpala() && !$6 && $5) {
|
|
|
+ var keywords = [{ value: 'FULL JOIN', weight: 2 }, { value: 'FULL OUTER JOIN', weight: 2 }, { value: 'JOIN', weight: 2 }, { value: 'LEFT JOIN', weight: 2 }, { value: 'LEFT OUTER JOIN', weight: 2 }, { value: 'RIGHT JOIN', weight: 2 }, { value: 'RIGHT OUTER JOIN', weight: 2 }, { value: 'INNER JOIN', weight: 2 }, { value: 'LEFT ANTI JOIN', weight: 2 }, { value: 'LEFT SEMI JOIN', weight: 2 }, { value: 'RIGHT ANTI JOIN', weight: 2 }, { value: 'RIGHT SEMI JOIN', weight: 2 }, { value: 'WHERE', weight: 1 }];
|
|
|
+ if ($5.suggestJoinConditions) {
|
|
|
+ parser.suggestJoinConditions($5.suggestJoinConditions);
|
|
|
+ }
|
|
|
+ if ($5.suggestJoins) {
|
|
|
+ parser.suggestJoins($5.suggestJoins);
|
|
|
+ }
|
|
|
+ if ($5.suggestKeywords) {
|
|
|
+ keywords = keywords.concat(parser.createWeightedKeywords($5.suggestKeywords, 3));
|
|
|
+ }
|
|
|
+ parser.suggestKeywords(keywords);
|
|
|
+ } else if (!$6) {
|
|
|
parser.suggestKeywords([ 'WHERE' ]);
|
|
|
}
|
|
|
}
|
|
|
@@ -106,4 +121,18 @@ UpdateSource
|
|
|
|
|
|
UpdateSource_EDIT
|
|
|
: ValueExpression_EDIT
|
|
|
- ;
|
|
|
+ ;
|
|
|
+
|
|
|
+OptionalFromJoinedTable
|
|
|
+ :
|
|
|
+ | 'FROM' TableReference -> $2
|
|
|
+ ;
|
|
|
+
|
|
|
+FromJoinedTable_EDIT
|
|
|
+ : 'FROM' 'CURSOR'
|
|
|
+ {
|
|
|
+ parser.suggestTables();
|
|
|
+ parser.suggestDatabases({ appendDot: true });
|
|
|
+ }
|
|
|
+ | 'FROM' TableReference_EDIT
|
|
|
+ ;
|