Skip to content

Commit 491c1d1

Browse files
committed
2.6.5.4
1 parent 2c43aeb commit 491c1d1

File tree

2 files changed

+78
-5
lines changed

2 files changed

+78
-5
lines changed

src/main/java/demos/visitors/xmlVisitor.java

Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import gudusoft.gsqlparser.*;
55
import gudusoft.gsqlparser.nodes.*;
6+
import gudusoft.gsqlparser.nodes.bigquery.TReplaceExprAsIdentifier;
67
import gudusoft.gsqlparser.nodes.hive.THiveTablePartition;
78
import gudusoft.gsqlparser.nodes.mdx.EMdxExpSyntax;
89
import gudusoft.gsqlparser.nodes.mdx.IMdxIdentifierSegment;
@@ -804,6 +805,19 @@ public void postVisit(TResultColumnList node) {
804805
appendEndTag(node);
805806
}
806807

808+
809+
public void preVisit(TReplaceExprAsIdentifier node) {
810+
// appendStartTag(node);
811+
e_parent = (Element) elementStack.peek();
812+
Element e_expr_as_ident = xmldoc.createElement("expr_as_identifier");
813+
e_parent.appendChild(e_expr_as_ident);
814+
elementStack.push(e_expr_as_ident);
815+
node.getExpr().accept(this);
816+
node.getIdentifier().accept(this);
817+
elementStack.pop();
818+
819+
}
820+
807821
public void preVisit(TResultColumn node) {
808822
// appendStartTag(node);
809823
e_parent = (Element) elementStack.peek();
@@ -819,6 +833,16 @@ public void preVisit(TResultColumn node) {
819833
if (node.getExceptColumnList() != null){
820834
addElementOfNode("except_columns",node.getExceptColumnList());
821835
}
836+
837+
if (node.getReplaceExprAsIdentifiers() != null){
838+
Element e_replace_clause = xmldoc.createElement("replace_clause");
839+
e_result_column.appendChild(e_replace_clause);
840+
elementStack.push(e_replace_clause);
841+
for(int i=0;i<node.getReplaceExprAsIdentifiers().size();i++){
842+
node.getReplaceExprAsIdentifiers().get(i).accept(this);
843+
}
844+
elementStack.pop();
845+
}
822846
elementStack.pop();
823847
}
824848

@@ -2583,6 +2607,25 @@ public void preVisit(TMssqlCreateFunction node) {
25832607

25842608
}
25852609

2610+
2611+
public void preVisit(TUnloadStmt stmt) {
2612+
e_parent = (Element) elementStack.peek();
2613+
Element e_unload_stmt = xmldoc.createElement("unload_stmt");
2614+
e_parent.appendChild(e_unload_stmt);
2615+
elementStack.push(e_unload_stmt);
2616+
if (stmt.getSelectSqlStatement() != null){
2617+
stmt.getSelectSqlStatement().accept(this);
2618+
}
2619+
2620+
if (stmt.getS3() != null){
2621+
addElementOfString("s3_path",stmt.getS3());
2622+
}
2623+
2624+
2625+
elementStack.pop();
2626+
2627+
}
2628+
25862629
public void preVisit(TCreateFunctionStmt node) {
25872630
e_parent = (Element) elementStack.peek();
25882631
Element e_function = xmldoc.createElement("create_function_statement");
@@ -2610,7 +2653,10 @@ public void preVisit(TCreateFunctionStmt node) {
26102653
node.getParameterDeclarations().accept(this);
26112654
}
26122655

2613-
if (node.getBodyStatements().size() > 0) {
2656+
if (node.getBlockBody() != null){
2657+
node.getBlockBody().accept(this);
2658+
}
2659+
else if (node.getBodyStatements().size() > 0) {
26142660
current_statement_list_tag = "body_statement_list";
26152661
node.getBodyStatements().accept(this);
26162662
}
@@ -2889,6 +2935,9 @@ public void preVisit(TAlterTableOption node) {
28892935
e_alter_table_option.appendChild(e_option);
28902936
elementStack.push(e_option);
28912937
node.getColumnName().accept(this);
2938+
if (node.getNewDataType() != null){
2939+
node.getNewDataType().accept(this);
2940+
}
28922941
elementStack.pop();
28932942
break;
28942943
case ChangeColumn:
@@ -5668,12 +5717,18 @@ public void preVisit( TRepeatStmt stmt ) {
56685717

56695718
public void preVisit( TBlockSqlNode node ) {
56705719
e_parent = (Element) elementStack.peek( );
5671-
Element e_begin_end = xmldoc.createElement( "plsql_block" );
5720+
Element e_plsql_block = xmldoc.createElement( "plsql_block" );
56725721
if (node.getLabelName() != null){
5673-
e_begin_end.setAttribute("label",node.getLabelNameStr());
5722+
e_plsql_block.setAttribute("label",node.getLabelNameStr());
5723+
}
5724+
if (node.getParent() != null){
5725+
if (node.getParent() instanceof TStoredProcedureSqlStatement){
5726+
TStoredProcedureSqlStatement p = (TStoredProcedureSqlStatement)node.getParent();
5727+
e_plsql_block.setAttribute("parent_name",p.getStoredProcedureName().toString());
5728+
}
56745729
}
5675-
e_parent.appendChild( e_begin_end );
5676-
elementStack.push( e_begin_end );
5730+
e_parent.appendChild( e_plsql_block );
5731+
elementStack.push( e_plsql_block );
56775732
if (node.getDeclareStatements().size() > 0){
56785733
current_statement_list_tag = "declare_statement_list";
56795734
node.getDeclareStatements().accept(this);

src/test/java/common/testAsCanonical.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,22 @@ public void testReplaceFdecrypt2(){
9393
assertTrue(sqlparser.sqlstatements.get(0).toString().trim().equalsIgnoreCase(sqlparser.sqltext.trim()));
9494
}
9595

96+
public void testReplaceFdecrypt3(){
97+
TGSqlParser sqlparser = new TGSqlParser(EDbVendor.dbvredshift);
98+
sqlparser.sqltext = "select business_partner_type,bp_cid, f_decrypt(name,z9rmt42l85qkf8v3dec23tep) as name , \n" +
99+
"name as encrypted_name, language_name,source_system \n" +
100+
"from public.mio03_business_partner where bp_cid = 'placeholder_str';";
101+
TBaseType.as_canonical_f_decrypt_replace_password = true;
102+
TBaseType.clearCryptFunctions();
103+
TBaseType.addToCryptFunctions("f_decrypt",2);
104+
105+
assertTrue(sqlparser.parse() == 0);
106+
// System.out.println(sqlparser.sqlstatements.get(0).asCanonical().trim());
107+
108+
assertTrue (sqlparser.sqlstatements.get(0).asCanonical().trim().equalsIgnoreCase("select business_partner_type,bp_cid, f_decrypt(name,'***') as name , \n" +
109+
"name as encrypted_name, language_name,source_system \n" +
110+
"from public.mio03_business_partner where bp_cid = 'placeholder_str'"));
111+
}
112+
113+
96114
}

0 commit comments

Comments
 (0)