فهرست منبع

HUE-6223 [autocomplete] Fix issue where tables from subsequent statements appear in the autocomplete results

Johan Ahlen 8 سال پیش
والد
کامیت
d8eb632

+ 1 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/sqlParseSupport.js

@@ -35,6 +35,7 @@ var SqlParseSupport = (function () {
         parser.yy.errors.push(error);
         return message;
       };
+      prioritizeSuggestions();
     };
 
     parser.addCommonTableExpressions = function (identifiers) {

+ 92 - 0
desktop/core/src/desktop/static/desktop/spec/autocomplete/sqlSpecSelect.js

@@ -370,6 +370,98 @@
         });
       });
 
+      it('should suggest tables for "SELECT |;\n\nSELECT * FROM foo;"', function () {
+        assertAutoComplete({
+          beforeCursor: 'SELECT ',
+          afterCursor: ';\n\nSELECT * FROM foo;',
+          containsKeywords: ['*', 'ALL', 'DISTINCT'],
+          expectedResult: {
+            lowerCase: false,
+            suggestTables: {
+              prependQuestionMark: true,
+              prependFrom: true
+            },
+            suggestAggregateFunctions: { tables: [] },
+            suggestAnalyticFunctions: true,
+            suggestFunctions: {},
+            suggestDatabases: {
+              prependQuestionMark: true,
+              prependFrom: true,
+              appendDot: true
+            }
+          }
+        });
+      });
+
+      it('should suggest tables for "SELECT * FROM foo;\n\nSELECT |;"', function () {
+        assertAutoComplete({
+          beforeCursor: 'SELECT * FROM foo;\n\nSELECT ',
+          afterCursor: ';',
+          containsKeywords: ['*', 'ALL', 'DISTINCT'],
+          expectedResult: {
+            lowerCase: false,
+            suggestTables: {
+              prependQuestionMark: true,
+              prependFrom: true
+            },
+            suggestAggregateFunctions: { tables: [] },
+            suggestAnalyticFunctions: true,
+            suggestFunctions: {},
+            suggestDatabases: {
+              prependQuestionMark: true,
+              prependFrom: true,
+              appendDot: true
+            }
+          }
+        });
+      });
+
+      it('should suggest tables for "SELECT |;\n\nSELECT * FROM foo boo;"', function () {
+        assertAutoComplete({
+          beforeCursor: 'SELECT ',
+          afterCursor: ';\n\nSELECT * FROM foo boo;',
+          containsKeywords: ['*', 'ALL', 'DISTINCT'],
+          expectedResult: {
+            lowerCase: false,
+            suggestTables: {
+              prependQuestionMark: true,
+              prependFrom: true
+            },
+            suggestAggregateFunctions: { tables: [] },
+            suggestAnalyticFunctions: true,
+            suggestFunctions: {},
+            suggestDatabases: {
+              prependQuestionMark: true,
+              prependFrom: true,
+              appendDot: true
+            }
+          }
+        });
+      });
+
+      it('should suggest tables for "SELECT * FROM foo boo;\n\nSELECT |;"', function () {
+        assertAutoComplete({
+          beforeCursor: 'SELECT * FROM foo boo;\n\nSELECT ',
+          afterCursor: ';',
+          containsKeywords: ['*', 'ALL', 'DISTINCT'],
+          expectedResult: {
+            lowerCase: false,
+            suggestTables: {
+              prependQuestionMark: true,
+              prependFrom: true
+            },
+            suggestAggregateFunctions: { tables: [] },
+            suggestAnalyticFunctions: true,
+            suggestFunctions: {},
+            suggestDatabases: {
+              prependQuestionMark: true,
+              prependFrom: true,
+              appendDot: true
+            }
+          }
+        });
+      });
+
       it('should suggest lowerCase for "select |"', function() {
         assertAutoComplete({
           beforeCursor: 'select ',