Browse Source

HUE-8991 [autocomplete] Add support for file paths surrounded by double quotes

Johan Ahlen 6 years ago
parent
commit
40eba71336

+ 3 - 3
desktop/core/src/desktop/js/parse/jison/sql/generic/sql.jisonlex

@@ -149,9 +149,9 @@ ROW_NUMBER\s*\(                            { yy.lexer.unput('('); yytext = 'row_
 
 
 <hdfs>'\u2020'                             { parser.yy.cursorFound = true; return 'CURSOR'; }
 <hdfs>'\u2020'                             { parser.yy.cursorFound = true; return 'CURSOR'; }
 <hdfs>'\u2021'                             { parser.yy.cursorFound = true; return 'PARTIAL_CURSOR'; }
 <hdfs>'\u2021'                             { parser.yy.cursorFound = true; return 'PARTIAL_CURSOR'; }
-<hdfs>\s+[']                               { return 'HDFS_START_QUOTE'; }
-<hdfs>[^'\u2020\u2021]+                    { parser.addFileLocation(yylloc, yytext); return 'HDFS_PATH'; }
-<hdfs>[']                                  { this.popState(); return 'HDFS_END_QUOTE'; }
+<hdfs>\s+['"]                              { return 'HDFS_START_QUOTE'; }
+<hdfs>[^'"\u2020\u2021]+                   { parser.addFileLocation(yylloc, yytext); return 'HDFS_PATH'; }
+<hdfs>['"]                                 { this.popState(); return 'HDFS_END_QUOTE'; }
 <hdfs><<EOF>>                              { return 'EOF'; }
 <hdfs><<EOF>>                              { return 'EOF'; }
 
 
 '&&'                                       { return 'AND'; }
 '&&'                                       { return 'AND'; }

+ 4 - 4
desktop/core/src/desktop/js/parse/jison/sql/hive/sql.jisonlex

@@ -332,9 +332,9 @@ ROW_NUMBER\s*\(                      { yy.lexer.unput('('); yytext = 'row_number
 
 
 <hdfs>'\u2020'                       { parser.yy.cursorFound = true; return 'CURSOR'; }
 <hdfs>'\u2020'                       { parser.yy.cursorFound = true; return 'CURSOR'; }
 <hdfs>'\u2021'                       { parser.yy.cursorFound = true; return 'PARTIAL_CURSOR'; }
 <hdfs>'\u2021'                       { parser.yy.cursorFound = true; return 'PARTIAL_CURSOR'; }
-<hdfs>\s+[']                         { return 'HDFS_START_QUOTE'; }
-<hdfs>[^'\u2020\u2021]+              { parser.addFileLocation(yylloc, yytext); return 'HDFS_PATH'; }
-<hdfs>[']                            { this.popState(); return 'HDFS_END_QUOTE'; }
+<hdfs>\s+['"]                        { return 'HDFS_START_QUOTE'; }
+<hdfs>[^'"\u2020\u2021]+             { parser.addFileLocation(yylloc, yytext); return 'HDFS_PATH'; }
+<hdfs>['"]                           { this.popState(); return 'HDFS_END_QUOTE'; }
 <hdfs><<EOF>>                        { return 'EOF'; }
 <hdfs><<EOF>>                        { return 'EOF'; }
 
 
 '&&'                                 { return 'AND'; }
 '&&'                                 { return 'AND'; }
@@ -378,7 +378,7 @@ ROW_NUMBER\s*\(                      { yy.lexer.unput('('); yytext = 'row_number
 <backtickedValue>\`                        { this.popState(); return 'BACKTICK'; }
 <backtickedValue>\`                        { this.popState(); return 'BACKTICK'; }
 
 
 \'                                         { this.begin('singleQuotedValue'); return 'SINGLE_QUOTE'; }
 \'                                         { this.begin('singleQuotedValue'); return 'SINGLE_QUOTE'; }
-<singleQuotedValue>(?:\\\\|\\[']|[^'])+         {
+<singleQuotedValue>(?:\\\\|\\[']|[^'])+    {
                                              if (parser.handleQuotedValueWithCursor(this, yytext, yylloc, '\'')) {
                                              if (parser.handleQuotedValueWithCursor(this, yytext, yylloc, '\'')) {
                                                return 'PARTIAL_VALUE';
                                                return 'PARTIAL_VALUE';
                                              }
                                              }

+ 3 - 3
desktop/core/src/desktop/js/parse/jison/sql/impala/sql.jisonlex

@@ -455,9 +455,9 @@ SYSTEM\s*\(                                { yy.lexer.unput('('); yytext = 'syst
 
 
 <hdfs>'\u2020'                             { parser.yy.cursorFound = true; return 'CURSOR'; }
 <hdfs>'\u2020'                             { parser.yy.cursorFound = true; return 'CURSOR'; }
 <hdfs>'\u2021'                             { parser.yy.cursorFound = true; return 'PARTIAL_CURSOR'; }
 <hdfs>'\u2021'                             { parser.yy.cursorFound = true; return 'PARTIAL_CURSOR'; }
-<hdfs>\s+[']                               { return 'HDFS_START_QUOTE'; }
-<hdfs>[^'\u2020\u2021]+                    { parser.addFileLocation(yylloc, yytext); return 'HDFS_PATH'; }
-<hdfs>[']                                  { this.popState(); return 'HDFS_END_QUOTE'; }
+<hdfs>\s+['"]                              { return 'HDFS_START_QUOTE'; }
+<hdfs>[^'"\u2020\u2021]+                   { parser.addFileLocation(yylloc, yytext); return 'HDFS_PATH'; }
+<hdfs>['"]                                 { this.popState(); return 'HDFS_END_QUOTE'; }
 <hdfs><<EOF>>                              { return 'EOF'; }
 <hdfs><<EOF>>                              { return 'EOF'; }
 
 
 '&&'                                       { return 'AND'; }
 '&&'                                       { return 'AND'; }

File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/generic/genericAutocompleteParser.js


File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/generic/genericSyntaxParser.js


File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/hive/hiveAutocompleteParser.js


File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/hive/hiveSyntaxParser.js


+ 11 - 0
desktop/core/src/desktop/js/parse/sql/hive/spec/hiveAutocompleteParser_Load_Spec.js

@@ -105,6 +105,17 @@ describe('hiveAutocompleteParser.js LOAD statements', () => {
     });
     });
   });
   });
 
 
+  it('should suggest hdfs paths for "LOAD DATA INPATH "/|""', () => {
+    assertAutoComplete({
+      beforeCursor: 'LOAD DATA INPATH "/',
+      afterCursor: '"',
+      expectedResult: {
+        lowerCase: false,
+        suggestHdfs: { path: '/' }
+      }
+    });
+  });
+
   it('should suggest keywords for "LOAD DATA INPATH \'baa\' |"', () => {
   it('should suggest keywords for "LOAD DATA INPATH \'baa\' |"', () => {
     assertAutoComplete({
     assertAutoComplete({
       beforeCursor: "LOAD DATA INPATH 'baa' ",
       beforeCursor: "LOAD DATA INPATH 'baa' ",

File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/impala/impalaAutocompleteParser.js


File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/js/parse/sql/impala/impalaSyntaxParser.js


+ 11 - 0
desktop/core/src/desktop/js/parse/sql/impala/spec/impalaAutocompleteParser_Load_Spec.js

@@ -81,6 +81,17 @@ describe('impalaAutocompleteParser.js LOAD statements', () => {
     });
     });
   });
   });
 
 
+  it('should suggest hdfs paths for "LOAD DATA INPATH "|"', () => {
+    assertAutoComplete({
+      beforeCursor: 'LOAD DATA INPATH "',
+      afterCursor: '"',
+      expectedResult: {
+        lowerCase: false,
+        suggestHdfs: { path: '' }
+      }
+    });
+  });
+
   it('should suggest hdfs paths for "LOAD DATA INPATH \'/|"', () => {
   it('should suggest hdfs paths for "LOAD DATA INPATH \'/|"', () => {
     assertAutoComplete({
     assertAutoComplete({
       beforeCursor: "LOAD DATA INPATH '/",
       beforeCursor: "LOAD DATA INPATH '/",

Some files were not shown because too many files changed in this diff