3
3
4
4
import gudusoft .gsqlparser .*;
5
5
import gudusoft .gsqlparser .nodes .*;
6
+ import gudusoft .gsqlparser .nodes .bigquery .TReplaceExprAsIdentifier ;
6
7
import gudusoft .gsqlparser .nodes .hive .THiveTablePartition ;
7
8
import gudusoft .gsqlparser .nodes .mdx .EMdxExpSyntax ;
8
9
import gudusoft .gsqlparser .nodes .mdx .IMdxIdentifierSegment ;
28
29
import gudusoft .gsqlparser .nodes .mssql .TForXMLClause ;
29
30
import gudusoft .gsqlparser .nodes .mssql .TXMLCommonDirective ;
30
31
import gudusoft .gsqlparser .nodes .oracle .TTableProperties ;
32
+ import gudusoft .gsqlparser .nodes .postgresql .TPartitionBoundSpecSqlNode ;
31
33
import gudusoft .gsqlparser .nodes .teradata .*;
32
34
import gudusoft .gsqlparser .stmt .*;
33
35
import gudusoft .gsqlparser .stmt .databricks .TCreateExternalLocationStmt ;
@@ -803,6 +805,19 @@ public void postVisit(TResultColumnList node) {
803
805
appendEndTag (node );
804
806
}
805
807
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
+
806
821
public void preVisit (TResultColumn node ) {
807
822
// appendStartTag(node);
808
823
e_parent = (Element ) elementStack .peek ();
@@ -818,6 +833,16 @@ public void preVisit(TResultColumn node) {
818
833
if (node .getExceptColumnList () != null ){
819
834
addElementOfNode ("except_columns" ,node .getExceptColumnList ());
820
835
}
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
+ }
821
846
elementStack .pop ();
822
847
}
823
848
@@ -1980,23 +2005,26 @@ public void preVisit(TObjectName node) {
1980
2005
e_object_name .appendChild (e_server );
1981
2006
e_server .setTextContent (node .getServerToken ().toString ());
1982
2007
}
1983
- if ((node .getDatabaseToken () != null ) || (node .getImplictDatabaseString () != null )) {
2008
+
2009
+ Boolean showImplicitDBOrSchema = false ;
2010
+
2011
+ if ((node .getDatabaseToken () != null ) || (showImplicitDBOrSchema && (node .getImplictDatabaseString () != null ))) {
1984
2012
Element e_database = xmldoc .createElement ("database_name" );
1985
2013
e_object_name .appendChild (e_database );
1986
2014
if (node .getDatabaseToken () != null ) {
1987
2015
e_database .setTextContent (node .getDatabaseToken ().toString ());
1988
2016
} else {
1989
- e_database .setTextContent (node .getImplictDatabaseString ());
2017
+ e_database .setTextContent (node .getImplictDatabaseString ());
1990
2018
}
1991
2019
1992
2020
}
1993
- if (((node .getSchemaToken () != null ) && (!node .isImplicitSchema ())) || (node .getImplictSchemaString () != null )) {
2021
+ if (((node .getSchemaToken () != null ) && (!node .isImplicitSchema ())) || ( showImplicitDBOrSchema && ( node .getImplictSchemaString () != null ) )) {
1994
2022
Element e_schema = xmldoc .createElement ("schema_name" );
1995
2023
e_object_name .appendChild (e_schema );
1996
2024
if ((node .getSchemaToken () != null ) && (!node .isImplicitSchema ())) {
1997
2025
e_schema .setTextContent (node .getSchemaToken ().toString ());
1998
2026
} else {
1999
- e_schema .setTextContent (node .getImplictSchemaString ());
2027
+ e_schema .setTextContent (node .getImplictSchemaString ());
2000
2028
}
2001
2029
}
2002
2030
if (node .getObjectToken () != null ) {
@@ -2579,6 +2607,25 @@ public void preVisit(TMssqlCreateFunction node) {
2579
2607
2580
2608
}
2581
2609
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
+
2582
2629
public void preVisit (TCreateFunctionStmt node ) {
2583
2630
e_parent = (Element ) elementStack .peek ();
2584
2631
Element e_function = xmldoc .createElement ("create_function_statement" );
@@ -2606,7 +2653,10 @@ public void preVisit(TCreateFunctionStmt node) {
2606
2653
node .getParameterDeclarations ().accept (this );
2607
2654
}
2608
2655
2609
- if (node .getBodyStatements ().size () > 0 ) {
2656
+ if (node .getBlockBody () != null ){
2657
+ node .getBlockBody ().accept (this );
2658
+ }
2659
+ else if (node .getBodyStatements ().size () > 0 ) {
2610
2660
current_statement_list_tag = "body_statement_list" ;
2611
2661
node .getBodyStatements ().accept (this );
2612
2662
}
@@ -2885,6 +2935,9 @@ public void preVisit(TAlterTableOption node) {
2885
2935
e_alter_table_option .appendChild (e_option );
2886
2936
elementStack .push (e_option );
2887
2937
node .getColumnName ().accept (this );
2938
+ if (node .getNewDataType () != null ){
2939
+ node .getNewDataType ().accept (this );
2940
+ }
2888
2941
elementStack .pop ();
2889
2942
break ;
2890
2943
case ChangeColumn :
@@ -2953,6 +3006,10 @@ public void preVisit(TAlterTableOption node) {
2953
3006
node .getPartitionSpecList ().get (i ).accept (this );
2954
3007
}
2955
3008
break ;
3009
+ case attachPartition :
3010
+ node .getPartitionName ().accept (this );
3011
+ node .getPartitionBoundSpec ().accept (this );
3012
+ break ;
2956
3013
default :
2957
3014
e_option = xmldoc .createElement ("not_implemented_option" );
2958
3015
e_alter_table_option .appendChild (e_option );
@@ -3544,10 +3601,45 @@ public void preVisit(TCreateTriggerStmt stmt) {
3544
3601
e_parent .appendChild (e_create_trigger );
3545
3602
elementStack .push (e_create_trigger );
3546
3603
addElementOfNode ("trigger_name" , stmt .getTriggerName ());
3604
+ stmt .getTriggeringClause ().accept (this );
3547
3605
stmt .getBodyStatements ().accept (this );
3606
+ if (stmt .getFunctionCall () != null ){
3607
+ addElementOfNode ("execute_function" ,stmt .getFunctionCall ());
3608
+ }
3609
+ elementStack .pop ();
3610
+ }
3611
+
3612
+ public void preVisit (TDmlEventItem node ) {
3613
+ e_parent = (Element ) elementStack .peek ();
3614
+ Element e_trigger_dml_event = xmldoc .createElement ("dml_event" );
3615
+ e_parent .appendChild (e_trigger_dml_event );
3616
+ elementStack .push (e_trigger_dml_event );
3617
+ e_trigger_dml_event .setAttribute ("event_type" ,node .getDmlType ().toString ());
3618
+ if (node .getColumnList () != null ){
3619
+ node .getColumnList ().accept (this );
3620
+ }
3548
3621
elementStack .pop ();
3549
3622
}
3550
3623
3624
+ public void preVisit (TSimpleDmlTriggerClause node ) {
3625
+ e_parent = (Element ) elementStack .peek ();
3626
+ Element e_create_trigger_clause = xmldoc .createElement ("simple_dml_trigger_clause" );
3627
+ e_parent .appendChild (e_create_trigger_clause );
3628
+ elementStack .push (e_create_trigger_clause );
3629
+ e_create_trigger_clause .setAttribute ("granularity" ,node .getGranularity ().toString ());
3630
+ if (node .getEventClause () instanceof TDmlEventClause ){
3631
+ TDmlEventClause dmlEventClause = (TDmlEventClause )node .getEventClause ();
3632
+ e_create_trigger_clause .setAttribute ("source_table" ,dmlEventClause .getTableName ().toString ());
3633
+ for (int i =0 ;i <dmlEventClause .getEventItems ().size ();i ++){
3634
+ TDmlEventItem dmlEventItem = (TDmlEventItem )dmlEventClause .getEventItems ().get (i );
3635
+ dmlEventItem .accept (this );
3636
+ }
3637
+ }
3638
+ elementStack .pop ();
3639
+ }
3640
+
3641
+
3642
+
3551
3643
public void preVisit (TCreateVariableStmt stmt ) {
3552
3644
e_parent = (Element ) elementStack .peek ();
3553
3645
Element e_create_variable = xmldoc .createElement ("create_variable_statement" );
@@ -3855,7 +3947,6 @@ public void preVisit(TOutputClause node) {
3855
3947
node .getSelectItemList ().getElement (i ).accept (this );
3856
3948
}
3857
3949
elementStack .pop ();
3858
-
3859
3950
}
3860
3951
3861
3952
public void preVisit (TCreateIndexSqlStatement stmt ) {
@@ -3888,6 +3979,29 @@ public void preVisit(TCreateIndexSqlStatement stmt) {
3888
3979
elementStack .pop ();
3889
3980
}
3890
3981
3982
+ if (stmt .getWhereCondition () != null ){
3983
+ stmt .getWhereCondition ().accept (this );
3984
+ }
3985
+
3986
+ elementStack .pop ();
3987
+ }
3988
+
3989
+ public void preVisit (TPartitionBoundSpecSqlNode node ) {
3990
+ e_parent = (Element ) elementStack .peek ();
3991
+ Element e_partition_bound_spec = xmldoc .createElement ("partition_bound_spec" );
3992
+ e_partition_bound_spec .setAttribute ("type" ,node .getSpecType ().toString ());
3993
+ e_parent .appendChild (e_partition_bound_spec );
3994
+ elementStack .push (e_partition_bound_spec );
3995
+ switch (node .getSpecType ()){
3996
+ case typeIn :
3997
+ node .getPartition_bound_expr_list ().accept (this );
3998
+ break ;
3999
+ case typeFromTo :
4000
+ node .getPartition_bound_expr_list_from ().accept (this );
4001
+ node .getPartition_bound_expr_list_to ().accept (this );
4002
+ break ;
4003
+ }
4004
+
3891
4005
elementStack .pop ();
3892
4006
}
3893
4007
@@ -3938,6 +4052,10 @@ public void preVisit(TCreateTableSqlStatement stmt) {
3938
4052
case copy :
3939
4053
addElementOfNode ("copy_table" ,stmt .getCloneSourceTable ());
3940
4054
break ;
4055
+ case partitionOf :
4056
+ addElementOfNode ("parent_table" ,stmt .getSuperTableName ());
4057
+ stmt .getPartitionBoundSpec ().accept (this );
4058
+ break ;
3941
4059
}
3942
4060
3943
4061
if (stmt .getTableOptions () != null ) {
@@ -5599,12 +5717,18 @@ public void preVisit( TRepeatStmt stmt ) {
5599
5717
5600
5718
public void preVisit ( TBlockSqlNode node ) {
5601
5719
e_parent = (Element ) elementStack .peek ( );
5602
- Element e_begin_end = xmldoc .createElement ( "plsql_block" );
5720
+ Element e_plsql_block = xmldoc .createElement ( "plsql_block" );
5603
5721
if (node .getLabelName () != null ){
5604
- 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
+ }
5605
5729
}
5606
- e_parent .appendChild ( e_begin_end );
5607
- elementStack .push ( e_begin_end );
5730
+ e_parent .appendChild ( e_plsql_block );
5731
+ elementStack .push ( e_plsql_block );
5608
5732
if (node .getDeclareStatements ().size () > 0 ){
5609
5733
current_statement_list_tag = "declare_statement_list" ;
5610
5734
node .getDeclareStatements ().accept (this );
0 commit comments