33
44import gudusoft .gsqlparser .*;
55import gudusoft .gsqlparser .nodes .*;
6+ import gudusoft .gsqlparser .nodes .bigquery .TReplaceExprAsIdentifier ;
67import gudusoft .gsqlparser .nodes .hive .THiveTablePartition ;
78import gudusoft .gsqlparser .nodes .mdx .EMdxExpSyntax ;
89import gudusoft .gsqlparser .nodes .mdx .IMdxIdentifierSegment ;
2829import gudusoft .gsqlparser .nodes .mssql .TForXMLClause ;
2930import gudusoft .gsqlparser .nodes .mssql .TXMLCommonDirective ;
3031import gudusoft .gsqlparser .nodes .oracle .TTableProperties ;
32+ import gudusoft .gsqlparser .nodes .postgresql .TPartitionBoundSpecSqlNode ;
3133import gudusoft .gsqlparser .nodes .teradata .*;
3234import gudusoft .gsqlparser .stmt .*;
3335import gudusoft .gsqlparser .stmt .databricks .TCreateExternalLocationStmt ;
@@ -803,6 +805,19 @@ public void postVisit(TResultColumnList node) {
803805 appendEndTag (node );
804806 }
805807
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+
806821 public void preVisit (TResultColumn node ) {
807822 // appendStartTag(node);
808823 e_parent = (Element ) elementStack .peek ();
@@ -818,6 +833,16 @@ public void preVisit(TResultColumn node) {
818833 if (node .getExceptColumnList () != null ){
819834 addElementOfNode ("except_columns" ,node .getExceptColumnList ());
820835 }
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+ }
821846 elementStack .pop ();
822847 }
823848
@@ -1980,23 +2005,26 @@ public void preVisit(TObjectName node) {
19802005 e_object_name .appendChild (e_server );
19812006 e_server .setTextContent (node .getServerToken ().toString ());
19822007 }
1983- if ((node .getDatabaseToken () != null ) || (node .getImplictDatabaseString () != null )) {
2008+
2009+ Boolean showImplicitDBOrSchema = false ;
2010+
2011+ if ((node .getDatabaseToken () != null ) || (showImplicitDBOrSchema && (node .getImplictDatabaseString () != null ))) {
19842012 Element e_database = xmldoc .createElement ("database_name" );
19852013 e_object_name .appendChild (e_database );
19862014 if (node .getDatabaseToken () != null ) {
19872015 e_database .setTextContent (node .getDatabaseToken ().toString ());
19882016 } else {
1989- e_database .setTextContent (node .getImplictDatabaseString ());
2017+ e_database .setTextContent (node .getImplictDatabaseString ());
19902018 }
19912019
19922020 }
1993- if (((node .getSchemaToken () != null ) && (!node .isImplicitSchema ())) || (node .getImplictSchemaString () != null )) {
2021+ if (((node .getSchemaToken () != null ) && (!node .isImplicitSchema ())) || ( showImplicitDBOrSchema && ( node .getImplictSchemaString () != null ) )) {
19942022 Element e_schema = xmldoc .createElement ("schema_name" );
19952023 e_object_name .appendChild (e_schema );
19962024 if ((node .getSchemaToken () != null ) && (!node .isImplicitSchema ())) {
19972025 e_schema .setTextContent (node .getSchemaToken ().toString ());
19982026 } else {
1999- e_schema .setTextContent (node .getImplictSchemaString ());
2027+ e_schema .setTextContent (node .getImplictSchemaString ());
20002028 }
20012029 }
20022030 if (node .getObjectToken () != null ) {
@@ -2579,6 +2607,25 @@ public void preVisit(TMssqlCreateFunction node) {
25792607
25802608 }
25812609
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+
25822629 public void preVisit (TCreateFunctionStmt node ) {
25832630 e_parent = (Element ) elementStack .peek ();
25842631 Element e_function = xmldoc .createElement ("create_function_statement" );
@@ -2606,7 +2653,10 @@ public void preVisit(TCreateFunctionStmt node) {
26062653 node .getParameterDeclarations ().accept (this );
26072654 }
26082655
2609- if (node .getBodyStatements ().size () > 0 ) {
2656+ if (node .getBlockBody () != null ){
2657+ node .getBlockBody ().accept (this );
2658+ }
2659+ else if (node .getBodyStatements ().size () > 0 ) {
26102660 current_statement_list_tag = "body_statement_list" ;
26112661 node .getBodyStatements ().accept (this );
26122662 }
@@ -2885,6 +2935,9 @@ public void preVisit(TAlterTableOption node) {
28852935 e_alter_table_option .appendChild (e_option );
28862936 elementStack .push (e_option );
28872937 node .getColumnName ().accept (this );
2938+ if (node .getNewDataType () != null ){
2939+ node .getNewDataType ().accept (this );
2940+ }
28882941 elementStack .pop ();
28892942 break ;
28902943 case ChangeColumn :
@@ -2953,6 +3006,10 @@ public void preVisit(TAlterTableOption node) {
29533006 node .getPartitionSpecList ().get (i ).accept (this );
29543007 }
29553008 break ;
3009+ case attachPartition :
3010+ node .getPartitionName ().accept (this );
3011+ node .getPartitionBoundSpec ().accept (this );
3012+ break ;
29563013 default :
29573014 e_option = xmldoc .createElement ("not_implemented_option" );
29583015 e_alter_table_option .appendChild (e_option );
@@ -3544,10 +3601,45 @@ public void preVisit(TCreateTriggerStmt stmt) {
35443601 e_parent .appendChild (e_create_trigger );
35453602 elementStack .push (e_create_trigger );
35463603 addElementOfNode ("trigger_name" , stmt .getTriggerName ());
3604+ stmt .getTriggeringClause ().accept (this );
35473605 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+ }
35483621 elementStack .pop ();
35493622 }
35503623
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+
35513643 public void preVisit (TCreateVariableStmt stmt ) {
35523644 e_parent = (Element ) elementStack .peek ();
35533645 Element e_create_variable = xmldoc .createElement ("create_variable_statement" );
@@ -3855,7 +3947,6 @@ public void preVisit(TOutputClause node) {
38553947 node .getSelectItemList ().getElement (i ).accept (this );
38563948 }
38573949 elementStack .pop ();
3858-
38593950 }
38603951
38613952 public void preVisit (TCreateIndexSqlStatement stmt ) {
@@ -3888,6 +3979,29 @@ public void preVisit(TCreateIndexSqlStatement stmt) {
38883979 elementStack .pop ();
38893980 }
38903981
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+
38914005 elementStack .pop ();
38924006 }
38934007
@@ -3938,6 +4052,10 @@ public void preVisit(TCreateTableSqlStatement stmt) {
39384052 case copy :
39394053 addElementOfNode ("copy_table" ,stmt .getCloneSourceTable ());
39404054 break ;
4055+ case partitionOf :
4056+ addElementOfNode ("parent_table" ,stmt .getSuperTableName ());
4057+ stmt .getPartitionBoundSpec ().accept (this );
4058+ break ;
39414059 }
39424060
39434061 if (stmt .getTableOptions () != null ) {
@@ -5599,12 +5717,18 @@ public void preVisit( TRepeatStmt stmt ) {
55995717
56005718 public void preVisit ( TBlockSqlNode node ) {
56015719 e_parent = (Element ) elementStack .peek ( );
5602- Element e_begin_end = xmldoc .createElement ( "plsql_block" );
5720+ Element e_plsql_block = xmldoc .createElement ( "plsql_block" );
56035721 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+ }
56055729 }
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 );
56085732 if (node .getDeclareStatements ().size () > 0 ){
56095733 current_statement_list_tag = "declare_statement_list" ;
56105734 node .getDeclareStatements ().accept (this );
0 commit comments