add hive sql automComplate
This commit is contained in:
parent
9c527994ab
commit
34290d2a3a
9277
core/sqlAutoCompleteParser.js
Normal file
9277
core/sqlAutoCompleteParser.js
Normal file
File diff suppressed because one or more lines are too long
36
jison/hue-sql-autocomplete.sh
Executable file
36
jison/hue-sql-autocomplete.sh
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Licensed to Cloudera, Inc. under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. Cloudera, Inc. licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
echo "Make sure you install jison first (npm install jison -g)"
|
||||||
|
echo ""
|
||||||
|
echo "Generating parser..."
|
||||||
|
|
||||||
|
pushd jison
|
||||||
|
|
||||||
|
# For quick version of just SELECT statements without value expressions
|
||||||
|
# cat autocomplete_header.jison sql_main.jison autocomplete_footer.jison > sqlAutocompleteParser.jison
|
||||||
|
cat autocomplete_header.jison sql_main.jison sql_valueExpression.jison sql_error.jison sql_alter.jison sql_analyze.jison sql_create.jison sql_drop.jison sql_grant.jison sql_insert.jison sql_load.jison sql_set.jison sql_show.jison sql_update.jison sql_use.jison autocomplete_footer.jison > sqlAutocompleteParser.jison
|
||||||
|
|
||||||
|
echo "Creating SQL autocomplete parser..."
|
||||||
|
jison sqlAutocompleteParser.jison sql.jisonlex
|
||||||
|
grunt uglify:sqlAutocompleteParser
|
||||||
|
cat sqlParseSupport.js sqlAutocompleteParser.js > ../core/sqlAutoCompleteParser.js
|
||||||
|
rm sqlAutocompleteParser.jison
|
||||||
|
rm sqlAutocompleteParser.js
|
||||||
|
|
||||||
|
popd
|
||||||
|
echo "Done!"
|
@ -1,20 +1,21 @@
|
|||||||
const Parser = require('../core/astParser');
|
const Parser = require('../core/astParser');
|
||||||
const Cache = require("../core/cache");
|
const Cache = require("../core/cache");
|
||||||
const dtSqlParser=require("../core/sqlSyntaxParser");
|
const sqlSyntaxParser = require("../core/sqlSyntaxParser");
|
||||||
|
const sqlAutoCompleteParser = require("../core/sqlAutoCompleteParser");
|
||||||
const filter = require("./filter");
|
const filter = require("./filter");
|
||||||
|
|
||||||
|
|
||||||
const astCache=new Cache();
|
const astCache = new Cache();
|
||||||
|
|
||||||
function parse(sql){
|
function parse(sql) {
|
||||||
const cleanSql=filter.cleanSql(sql);
|
const cleanSql = filter.cleanSql(sql);
|
||||||
console.log(cleanSql)
|
console.log(cleanSql)
|
||||||
let ast=astCache.get(cleanSql);
|
let ast = astCache.get(cleanSql);
|
||||||
if(ast){
|
if (ast) {
|
||||||
return ast
|
return ast
|
||||||
}else{
|
} else {
|
||||||
ast=Parser.parse(cleanSql).ast;
|
ast = Parser.parse(cleanSql).ast;
|
||||||
astCache.set(cleanSql,ast);
|
astCache.set(cleanSql, ast);
|
||||||
return ast;
|
return ast;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -24,12 +25,20 @@ function parse(sql){
|
|||||||
* type 语法类型。默认hive
|
* type 语法类型。默认hive
|
||||||
* return 返回解析对象
|
* return 返回解析对象
|
||||||
*/
|
*/
|
||||||
function parseSyntax(sql,type){
|
function parseSyntax(sql, type) {
|
||||||
if(typeof type=="undefined"){
|
if (typeof type == "undefined") {
|
||||||
type="hive"
|
type = "hive"
|
||||||
}
|
}
|
||||||
return dtSqlParser.parser.parseSyntax(sql,'',type,false)
|
return sqlSyntaxParser.parser.parseSyntax(sql, '', type, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.parse=parse;
|
function parserSql(sql, type) {
|
||||||
exports.parseSyntax=parseSyntax;
|
if (typeof type == "undefined") {
|
||||||
|
type = "hive"
|
||||||
|
}
|
||||||
|
return sqlAutoCompleteParser.parser.parseSql(sql, '', type, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.parse = parse;
|
||||||
|
exports.parseSyntax = parseSyntax;
|
||||||
|
exports.parserSql = parserSql;
|
||||||
|
0
peg/autoComplete.pegjs
Normal file
0
peg/autoComplete.pegjs
Normal file
Loading…
Reference in New Issue
Block a user