001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.hive.THiveGrantRoleSqlNode; 005import gudusoft.gsqlparser.nodes.hive.THiveGrantSqlNode; 006import gudusoft.gsqlparser.nodes.mssql.TMssqlStmtStubSqlNode; 007import gudusoft.gsqlparser.stmt.*; 008import gudusoft.gsqlparser.stmt.hive.*; 009import gudusoft.gsqlparser.stmt.mysql.*; 010import gudusoft.gsqlparser.stmt.db2.*; 011import gudusoft.gsqlparser.stmt.oracle.*; 012import gudusoft.gsqlparser.stmt.mssql.*; 013import gudusoft.gsqlparser.stmt.postgresql.TMoveStmt; 014import gudusoft.gsqlparser.stmt.postgresql.TPerformanceStmt; 015import gudusoft.gsqlparser.stmt.snowflake.*; 016import gudusoft.gsqlparser.stmt.sybase.TSybaseDeleteStatistics; 017import gudusoft.gsqlparser.stmt.sybase.TSybaseDumpTran; 018import gudusoft.gsqlparser.stmt.sybase.TSybaseUpdateIndexStatistics; 019import gudusoft.gsqlparser.stmt.sybase.TSybaseWritetext; 020import gudusoft.gsqlparser.stmt.teradata.*; 021import gudusoft.gsqlparser.nodes.teradata.TTeradataStmtStubSqlNode; 022 023 024 025public class TStatementSqlNode extends TParseTreeNode { 026 027 public final static int caseExpression = 41; 028 public final static int truncateTable = 77; 029 030 public final static int stubStmtSqlNode = 80; 031 public final static int rolllbackSqlNode = 82; 032 public final static int commitSqlNode = 83; 033 034 035 public final static int select = 100; 036 public final static int delete = 101; 037 public final static int update = 102; 038 public final static int insert = 103; 039 public final static int createtable = 104; 040 public final static int CreateProcedureSqlNode = 105; 041 public final static int CreateFunctionSqlNode = 106; 042 public final static int block = 107; // sql server block, plsql_block, 043 public final static int returnstmt = 108; 044 public final static int createviewstmt = 110; 045 public final static int ifstmt = 112; 046 public final static int declare = 113; 047 public final static int CreateIndexSqlNode = 116; 048 public final static int DropTableSqlNode = 119; 049 public final static int DropIndexSqlNode = 120; 050 public final static int DropViewSqlNode = 121; 051 public final static int AlterTableSqlNode = 123; 052 public final static int MergeSqlNode = 124; 053 public final static int ContinueSqlNode = 125; 054 public final static int BreakSqlNode = 126; 055 public final static int GrantSqlNode = 127; 056 public final static int FetchSqlNode = 128; 057 public final static int OpenSqlNode = 129; 058 public final static int CloseSqlNode = 130; 059 public final static int ExecuteAsSqlNode = 131; 060 public final static int ExecuteSqlNode = 132; 061 public final static int RevokeSqlNode = 133; 062 public final static int DropDbObjectSqlNode = 135; 063 public final static int CollectStatisticsSqlNode = 136; 064 public final static int callSqlNode = 137; 065 public final static int createDatabaseSqlNode = 151; 066 public final static int createSchemaSqlNode = 153; 067 public final static int DenySqlNode = 155; 068 069 public final static int CommentSqlNode = 185; 070 071 public final static int alterViewSqlNode = 355; 072 public final static int alterIndexSqlNode = 356; 073 public final static int alterDatabaseSqlNode = 357; 074 075 public final static int dropSequenceSqlNode = 364; 076 public final static int dropProcedureSqlNode = 366; 077 public final static int dropDatabaseSqlNode = 367; 078 public final static int dropSchemaSqlNode = 368; 079 public final static int dropFunctionSqlNode = 369; 080 081 public final static int IterateSqlNode = 410; 082 083 084 085 public final static int ExecImmeNode = 514; 086 087 public final static int createSynonymSqlNode = 552; 088 public final static int OracleConstructorSpec = 585; 089 public final static int OracleConstructorBody = 587; 090 public final static int OracleCompoundTriggerBody = 597; 091 092 public final static int EndTranSqlNode = 610; 093 public final static int MssqlSetSqlNode = 611; 094 public final static int BeginTranSqlNode = 612; 095 public final static int MssqlRaiserrorSqlNode = 613; 096 public final static int MssqlGotoSqlNode = 614; 097 public final static int MssqlLabelSqlNode = 615; 098 public final static int MssqlDeallocateSqlNode = 616; 099 public final static int MssqlBeginDialogSqlNode = 619; 100 public final static int MssqlSendOnConversationSqlNode = 620; 101 public final static int MssqlEndConversationSqlNode = 621; 102 public final static int MssqlRevertSqlNode = 622; 103 public final static int MssqlBulkInsert = 625; 104 public final static int MssqlUpdateTextSqlNode = 626; 105 public final static int MssqlStmtStubSqlNode = 627; 106 public final static int MssqlSetRowCountSqlNode = 714; 107 public final static int MssqlThrowSqlNode = 716; 108 public final static int MssqlReconfigureSqlNode = 717; 109 public final static int MssqlCreateTypeSqlNode = 718; 110 public final static int MssqlCreateXmlSchemaCollectionSqlNode = 724; 111 public final static int MssqlBeginConversationTimerSqlNode = 726; 112 113 public final static int T_DisableEnableTriggerSqlNode = 737; 114 public final static int TCreatePartitionFunctionSqlNode = 747; 115 public final static int TAlterPartitionFunctionSqlNode = 748; 116 public final static int TCreatePartitionSchemeSqlNode = 750; 117 public final static int TAlterPartitionSchemeSqlNode = 751; 118 119 public final static int PrepareSqlNode = 808; 120 public final static int DeallocatePrepareSqlNode = 817; 121 public final static int LeaveSqlNode = 820; 122 123 public final static int T_CompoundSqlNode = 911; 124 125 126 public final static int ForSqlNode = 913; 127 public final static int SetSqlNode = 919; 128 public final static int UnsetSqlNode = 920; 129 public final static int WhileSqlNode = 921; 130 public final static int RepeatSqlNode = 923; 131 public final static int LoopSqlNode = 925; 132 //public final static int ContinueSqlNode = 926; 133 134 public final static int ParseErrorNode = 990; 135 public final static int CreateTypeSqlNode = 992; 136 137 public final static int dummyNode = 1000; 138 public final static int dummyListNode = 1001; 139 140 //teradata 141 public final static int T_TeradataStmtStubSqlNode = 1105; 142 public final static int T_TeradataUsingSqlNode = 1106; 143 public final static int T_TeradataLockSqlNode = 1107; 144 public final static int T_TeradataLockClause = 1108; 145 public final static int T_TeradataGiveSqlNode = 1109; 146 public final static int T_CreateMacroSqlNode = 1110; 147 public final static int T_SetSessionSqlNode = 1117; 148 149 150 151 //postgresql 152 public final static int performanceSqlNode = 1264; 153 public final static int getDiagSqlNode = 1266; 154 public final static int moveSqlNode = 1268; 155 156 public final static int hiveLoadSqlNode = 1839; 157 public final static int hiveExportSqlNode = 1841; 158 public final static int hiveImportSqlNode = 1843; 159 public final static int hiveSwitchDBSqlNode = 1847; 160 public final static int hiveDropDBSqlNode = 1849; 161 public final static int hiveDescribeSqlNode = 1861; 162 public final static int hiveShowSqlNode = 1863; 163 public final static int msckSqlNode = 1865; 164 public final static int hiveDropFunctionSqlNode = 1867; 165 public final static int analyzeSqlNode = 1869; 166 public final static int LockSqlNode = 1871; 167 public final static int hiveCreateRoleSqlNode = 1873; 168 public final static int hiveGrantSqlNode = 1875; 169 public final static int hiveDropRoleSqlNode = 1887; 170 public final static int hiveShowGrantSqlNode = 1891; 171 public final static int hiveShowRoleGrantSqlNode = 1893; 172 public final static int hiveGrantRoleSqlNode = 1895; 173 public final static int hiveFromQuerySqlNode = 1897; 174 public final static int sybaseDumpTranSqlNode = 2001; 175 public final static int sybaseUpdateIndexStatisticsSqlNode = 2003; 176 public final static int sybaseInsertBulkSqlNode = 2005; 177 public final static int sybaseWritetextSqlNode = 2007; 178 public final static int sybaseDeleteStatisticsSqlNode = 2009; 179 180 public final static int upsertSqlNode = 5520; 181 182 public final static int TSignalSqlNode = 6701; 183 184 public final static int TCreateStageSqlNode = 6505;//snowflake 185 public final static int TCreateStreamSqlNode = 6506;//snowflake 186 public final static int TCreatePipeSqlNode = 6507;//snowflake 187 public final static int TCreateTaskSqlNode= 6508;//snowflake 188 public final static int TAlterSessionSqlNode= 6515;//snowflake 189 public final static int TResetSqlNode= 6610;//gaussdb 190 191 192 193 public final static int TDoExecuteBlockSqlNode = 6611;//gaussdb 194 195 private TParseTreeNode sqlNode = null; 196 private TCustomSqlStatement stmt = null; 197 198 public TCustomSqlStatement getStmt() { 199 return stmt; 200 } 201 202 private boolean isParsed = true; 203 204 public void setParsed(boolean parsed) { 205 isParsed = parsed; 206 } 207 208 public void setSqlNode(TParseTreeNode sqlNode) { 209 this.sqlNode = sqlNode; 210 } 211 212 public void init(Object arg1){ 213 if (arg1 instanceof TCustomSqlStatement){ 214 stmt = (TCustomSqlStatement)arg1; 215 }else{ 216 sqlNode = (TParseTreeNode)arg1; 217 } 218 } 219 220 private TObjectName endlabelName; 221 222 public void setEndlabelName(TObjectName endlabelName) { 223 this.endlabelName = endlabelName; 224 } 225 226 public TObjectName getEndlabelName() { 227 228 return endlabelName; 229 } 230 231 private TObjectName labelName; 232 233 public void setLabelName(TObjectName labelName) { 234 this.labelName = labelName; 235 } 236 237 public TObjectName getLabelName() { 238 239 return labelName; 240 } 241 242 public void init(Object arg1,Object arg2){ 243 this.init(arg1); 244 this.labelName = (TObjectName)arg2; 245 } 246 247 248 public void doParse(TCustomSqlStatement psql, ESqlClause plocation){ 249 if (stmt != null){ 250 // stmt in plsql already create stmt descends from TCustomSqlStatement 251 if (!isParsed){ 252 stmt.parsestatement(psql,isParsed); 253 }else{ 254 stmt.doParseStatement(psql); 255 } 256 if (stmt.getLabelName() == null){ 257 stmt.setLabelName(this.labelName); 258 } 259 return; 260 } 261 262 if (sqlNode == null) return ; 263 264 switch(sqlNode.getNodeType()){ 265 case(select): 266// TSelectSqlNode selectSqlNode = (TSelectSqlNode)sqlNode; 267// if (selectSqlNode.isHiveFromQuery()){ 268// stmt = new THiveFromQuery(psql.dbvendor); 269// }else{ 270// stmt = new TSelectSqlStatement(psql.dbvendor); 271// } 272 273 stmt = new TSelectSqlStatement(psql.dbvendor); 274 break; 275 case(delete): 276 stmt = new TDeleteSqlStatement(psql.dbvendor); 277 break; 278 case(update): 279 stmt = new TUpdateSqlStatement(psql.dbvendor); 280 break; 281 case(insert): 282 stmt = new TInsertSqlStatement(psql.dbvendor); 283 break; 284 case(MssqlBulkInsert): 285 stmt = new TMssqlBulkInsert(psql.dbvendor); 286 break; 287 case(MssqlUpdateTextSqlNode): 288 stmt = new TMssqlUpdateText(psql.dbvendor); 289 break; 290 case (MssqlSetRowCountSqlNode): 291 stmt = new TMssqlSetRowCount(psql.dbvendor); 292 break; 293 case (MssqlThrowSqlNode): 294 stmt = new TMssqlThrow(psql.dbvendor); 295 break; 296 case MssqlReconfigureSqlNode: 297 stmt = new TReconfigure(psql.dbvendor); 298 break; 299 case MssqlCreateTypeSqlNode: 300 stmt = new TMssqlCreateType(psql.dbvendor); 301 break; 302 case(createtable): 303 stmt = new TCreateTableSqlStatement(psql.dbvendor); 304 break; 305 case(declare): 306 if ((psql.dbvendor == EDbVendor.dbvmssql)||(psql.dbvendor == EDbVendor.dbvsybase)||(psql.dbvendor == EDbVendor.dbvhana)){ 307 stmt = new TMssqlDeclare(psql.dbvendor); 308 }else if ((psql.dbvendor == EDbVendor.dbvmysql)||(psql.dbvendor == EDbVendor.dbvbigquery)){ 309 stmt = new TMssqlDeclare(psql.dbvendor); 310 }else if (psql.dbvendor == EDbVendor.dbvteradata){ 311 stmt = new TMssqlDeclare(psql.dbvendor); 312 }else if (psql.dbvendor == EDbVendor.dbvdb2){ 313 TDeclareSqlNode declareNode = (TDeclareSqlNode)sqlNode; 314 switch(declareNode.getDeclareType()){ 315 case variable: 316 stmt = new TDb2SqlVariableDeclaration(psql.dbvendor); 317 break; 318 case conditions: 319 stmt = new TDb2ConditionDeclaration(psql.dbvendor); 320 break; 321 case returnCode: 322 stmt = new TDb2ReturnCodesDeclaration(psql.dbvendor); 323 break; 324 case statement: 325 stmt = new TDb2StatementDeclaration(psql.dbvendor); 326 break; 327 case cursor: 328 stmt = new TDb2DeclareCursorStatement(psql.dbvendor); 329 break; 330 case handlers: 331 stmt = new TDb2HandlerDeclaration(psql.dbvendor); 332 break; 333 default: 334 break; 335 } 336 } 337 break; 338 case T_CompoundSqlNode: //db2 compound sql node 339 stmt = new TCommonBlock(psql.dbvendor); 340 break; 341 case(block): 342 switch (psql.dbvendor){ 343 case dbvmssql: 344 case dbvsybase: 345 // case dbvazuresql: 346 stmt = new TMssqlBlock(psql.dbvendor); 347 break; 348 case dbvoracle: 349 case dbvpostgresql: 350 case dbvteradata: 351 case dbvbigquery: 352 case dbvsnowflake: 353 case dbvmysql: 354 case dbvnetezza: 355 case dbvgreenplum: 356 case dbvgaussdb: 357 case dbvredshift: 358 359 stmt = new TCommonBlock(psql.dbvendor); 360 break; 361 default: 362 System.out.println("block type not implemented: "+psql.dbvendor.toString()); 363 break; 364 } 365// if ((psql.dbvendor == EDbVendor.dbvmssql)||(psql.dbvendor == EDbVendor.dbvsybase)){ 366// stmt = new TMssqlBlock(psql.dbvendor); 367// }else if ((psql.dbvendor == EDbVendor.dbvoracle)||(psql.dbvendor == EDbVendor.dbvpostgresql) 368// ||(psql.dbvendor == EDbVendor.dbvteradata)||(psql.dbvendor == EDbVendor.dbvbigquery)){ 369// stmt = new TCommonBlock(psql.dbvendor); 370// }else if (psql.dbvendor == EDbVendor.dbvmysql){ 371// stmt = new TCommonBlock(psql.dbvendor); 372// }else{ 373// System.out.println("block type not implemented: "+psql.dbvendor.toString()); 374// } 375 break; 376 case(returnstmt): 377 if ((psql.dbvendor == EDbVendor.dbvmssql)||(psql.dbvendor == EDbVendor.dbvsybase)||(psql.dbvendor == EDbVendor.dbvhana)){ 378 stmt = new TMssqlReturn(psql.dbvendor); 379 }else if (psql.dbvendor == EDbVendor.dbvdb2){ 380 stmt = new TDb2ReturnStmt(psql.dbvendor); 381 }else if (psql.dbvendor == EDbVendor.dbvmysql){ 382 stmt = new TReturnStmt(psql.dbvendor); 383 } 384 break; 385 case(ifstmt): 386 switch (psql.dbvendor){ 387 case dbvmssql: 388 case dbvsybase: 389 stmt = new TMssqlIfElse(psql.dbvendor); 390 break; 391 case dbvmysql: 392 stmt = new TMySQLIfStmt(psql.dbvendor); 393 break; 394 case dbvbigquery: 395 case dbvdb2: 396 case dbvhana: 397 stmt = new TIfStmt(psql.dbvendor); 398 break; 399 } 400 401 402 break; 403 case (CreateProcedureSqlNode): 404 if ((psql.dbvendor == EDbVendor.dbvoracle)||(psql.dbvendor == EDbVendor.dbvgaussdb)){ 405 // plsql procedure declaration or specification 406 stmt = new TPlsqlCreateProcedure(EDbVendor.dbvoracle); 407 ((TPlsqlCreateProcedure)stmt).setKind(((TCreateProcedureSqlNode)sqlNode).getKind()); 408 }else if ((psql.dbvendor == EDbVendor.dbvmssql)||(psql.dbvendor == EDbVendor.dbvsybase)){ 409 stmt = new TMssqlCreateProcedure(psql.dbvendor); 410 }else if (psql.dbvendor == EDbVendor.dbvdb2){ 411 stmt = new TCreateProcedureStmt(psql.dbvendor); 412 }else{ 413 System.out.println("create procedure not implemented: "+psql.dbvendor.toString()); 414 } 415 break; 416 case (CreateFunctionSqlNode): 417 switch (psql.dbvendor){ 418 case dbvoracle: 419 stmt = new TPlsqlCreateFunction(EDbVendor.dbvoracle); 420 ((TPlsqlCreateFunction)stmt).setKind(((TCreateFunctionSqlNode)sqlNode).getKind()); 421 break; 422 case dbvmssql: 423 case dbvsybase: 424 stmt = new TMssqlCreateFunction(psql.dbvendor); 425 break; 426 case dbvdb2: 427 case dbvgreenplum: 428 case dbvbigquery: 429 case dbvgaussdb: 430 stmt = new TCreateFunctionStmt(psql.dbvendor); 431 break; 432 case dbvhive: 433 stmt = new THiveCreateFunction(psql.dbvendor); 434 break; 435 default: 436 System.out.println("create function not implemented: "+psql.dbvendor.toString()); 437 break; 438 } 439 break; 440 case (ExecImmeNode): 441 stmt = new TExecImmeStmt(EDbVendor.dbvoracle); 442 break; 443 case (ContinueSqlNode): 444 if ((psql.dbvendor == EDbVendor.dbvmssql)||(psql.dbvendor == EDbVendor.dbvsybase)) { 445 stmt = new TMssqlContinue(psql.dbvendor); 446 }else if (psql.dbvendor == EDbVendor.dbvoracle){ 447 stmt = new TPlsqlContinue(psql.dbvendor); 448 } 449 break; 450 case (BreakSqlNode): 451 stmt = new TBreakStmt(psql.dbvendor); 452 break; 453 case (GrantSqlNode): 454 stmt = new TGrantStmt(psql.dbvendor); 455 break; 456 case (DenySqlNode): 457 stmt = new TDenyStmt(psql.dbvendor); 458 break; 459 case (RevokeSqlNode): 460 stmt = new TRevokeStmt(psql.dbvendor); 461 break; 462 case (FetchSqlNode): 463 if ((psql.dbvendor == EDbVendor.dbvmssql) 464 ||(psql.dbvendor == EDbVendor.dbvsybase)||(psql.dbvendor == EDbVendor.dbvteradata)||(psql.dbvendor == EDbVendor.dbvhana)){ 465 stmt = new TMssqlFetch(psql.dbvendor); 466 }else if (psql.dbvendor == EDbVendor.dbvdb2){ 467 stmt = new TDb2FetchCursorStmt(psql.dbvendor); 468 }else if (psql.dbvendor == EDbVendor.dbvmysql){ 469 stmt = new TFetchStmt(psql.dbvendor); 470 } 471 break; 472 case (OpenSqlNode): 473 if ((psql.dbvendor == EDbVendor.dbvmssql)||(psql.dbvendor == EDbVendor.dbvsybase)||(psql.dbvendor == EDbVendor.dbvhana)){ 474 stmt = new TMssqlOpen(psql.dbvendor); 475 }else if (psql.dbvendor == EDbVendor.dbvdb2){ 476 stmt = new TDb2OpenCursorStmt(psql.dbvendor); 477 }else if (psql.dbvendor == EDbVendor.dbvmysql){ 478 stmt = new TOpenStmt(psql.dbvendor); 479 }else if (psql.dbvendor == EDbVendor.dbvteradata){ 480 stmt = new TMssqlOpen(psql.dbvendor); 481 } 482 break; 483 case (CloseSqlNode): 484 if ((psql.dbvendor == EDbVendor.dbvmssql)||(psql.dbvendor == EDbVendor.dbvsybase)||(psql.dbvendor == EDbVendor.dbvhana)){ 485 stmt = new TMssqlClose(psql.dbvendor); 486 }else if (psql.dbvendor == EDbVendor.dbvdb2){ 487 stmt = new TDb2CloseCursorStmt(psql.dbvendor); 488 }else if (psql.dbvendor == EDbVendor.dbvteradata){ 489 stmt = new TCloseStmt(EDbVendor.dbvteradata); 490 }else if (psql.dbvendor == EDbVendor.dbvmysql){ 491 stmt = new TCloseStmt(psql.dbvendor); 492 }else if (psql.dbvendor == EDbVendor.dbvredshift){ 493 stmt = new TCloseStmt(psql.dbvendor); 494 } 495 break; 496 case (CreateIndexSqlNode): 497 stmt = new TCreateIndexSqlStatement(psql.dbvendor); 498 break; 499 case (DropTableSqlNode): 500 stmt = new TDropTableSqlStatement(psql.dbvendor); 501 break; 502 case (DropIndexSqlNode): 503 stmt = new TDropIndexSqlStatement(psql.dbvendor); 504 break; 505 case (DropViewSqlNode): 506 stmt = new TDropViewSqlStatement(psql.dbvendor); 507 break; 508 case (DropDbObjectSqlNode): 509 stmt = new TMssqlDropDbObject(psql.dbvendor); 510 break; 511 case (AlterTableSqlNode): 512 stmt = new TAlterTableStatement(psql.dbvendor); 513 break; 514 case (alterViewSqlNode): 515 stmt = new TAlterViewStatement(psql.dbvendor); 516 break; 517 case (alterDatabaseSqlNode): 518 stmt = new TAlterDatabaseStmt(psql.dbvendor); 519 break; 520 case (alterIndexSqlNode): 521 stmt = new TAlterIndexStmt(psql.dbvendor); 522 break; 523 case (MssqlDeallocateSqlNode): 524 stmt = new TMssqlDeallocate(psql.dbvendor); 525 break; 526 case(ExecuteSqlNode): 527 switch (psql.dbvendor){ 528 case dbvteradata: 529 stmt = new TTeradataExecute(psql.dbvendor); 530 break; 531 case dbvpostgresql: 532 case dbvsnowflake: 533 case dbvnetezza: 534 case dbvredshift: 535 stmt = new TExecuteSqlStatement(psql.dbvendor); 536 break; 537 default: 538 stmt = new TMssqlExecute(psql.dbvendor); 539 break; 540 } 541 542 break; 543 case(ExecuteAsSqlNode): 544 stmt = new TMssqlExecuteAs(psql.dbvendor); 545 break; 546 case(BeginTranSqlNode): 547 stmt = new TBeginTran(psql.dbvendor); 548 break; 549 case(EndTranSqlNode): 550 stmt = new TEndTran(psql.dbvendor); 551 break; 552 case(MssqlRaiserrorSqlNode): 553 stmt = new TMssqlRaiserror(psql.dbvendor); 554 break; 555 case(MssqlLabelSqlNode): 556 stmt = new TMssqlLabel(psql.dbvendor); 557 break; 558 case(MssqlGotoSqlNode): 559 stmt = new TMssqlGoTo(psql.dbvendor); 560 break; 561 case(MssqlRevertSqlNode): 562 stmt = new TMssqlRevert(psql.dbvendor); 563 break; 564 case MssqlSendOnConversationSqlNode: 565 stmt = new TMssqlSendOnConversation(psql.dbvendor); 566 break; 567 case(MssqlEndConversationSqlNode): 568 stmt = new TMssqlEndConversation(psql.dbvendor); 569 break; 570 case(MssqlBeginDialogSqlNode): 571 stmt = new TMssqlBeginDialog(psql.dbvendor); 572 break; 573 case MssqlSetSqlNode: 574 stmt = new TMssqlSet(psql.dbvendor); 575 break; 576 case LoopSqlNode: 577 switch (psql.dbvendor){ 578 case dbvdb2: 579 stmt = new TDb2LoopStmt(EDbVendor.dbvdb2); 580 break; 581 default: 582 stmt = new TLoopStmt(psql.dbvendor); 583 break; 584 585 } 586 break; 587 case RepeatSqlNode: 588 stmt = new TRepeatStmt(psql.dbvendor); 589// if (psql.dbvendor == EDbVendor.dbvdb2){ 590// stmt = new TRepeatStmt(EDbVendor.dbvdb2); 591// }else if (psql.dbvendor == EDbVendor.dbvmysql){ 592// stmt = new TMySQLRepeatStmt(EDbVendor.dbvmysql); 593// } 594 break; 595 case WhileSqlNode: 596 stmt = new TWhileStmt(psql.dbvendor); 597// if (psql.dbvendor == EDbVendor.dbvdb2){ 598// stmt = new TWhileStmt(EDbVendor.dbvdb2); 599// }else if (psql.dbvendor == EDbVendor.dbvmysql){ 600// stmt = new TMySQLWhileStmt(EDbVendor.dbvmysql); 601// } 602 break; 603 case ForSqlNode: 604 stmt = new TForStmt(dbvendor); 605 break; 606 case SetSqlNode: 607 switch (psql.dbvendor){ 608 case dbvhive: 609 stmt = new THiveSet(EDbVendor.dbvhive); 610 break; 611 case dbvmysql: 612 case dbvbigquery: 613 case dbvteradata: 614 case dbvgaussdb: 615 stmt = new TSetStmt(psql.dbvendor); 616 break; 617 default: 618 stmt = new TDb2SetVariableStmt(EDbVendor.dbvdb2); 619 break; 620 } 621 622 break; 623 case UnsetSqlNode: 624 stmt = new TUnsetStmt(psql.dbvendor); 625 break; 626 case caseExpression: 627 switch (psql.dbvendor){ 628 case dbvdb2: 629 stmt = new TDb2CaseStmt(EDbVendor.dbvdb2); 630 break; 631 case dbvmysql: 632 stmt = new TMySQLCaseStmt(EDbVendor.dbvmysql); 633 break; 634 case dbvteradata: 635 stmt = new TCaseStmt(EDbVendor.dbvmysql); 636 break; 637 default: 638 break; 639 } 640 641 break; 642 case(MssqlStmtStubSqlNode): 643 //TMssqlStmtStubSqlNode stmt1 = (TMssqlStmtStubSqlNode)sqlNode; 644 if (((TMssqlStmtStubSqlNode)sqlNode).getSqlStatementType() == ESqlStatementType.sstmssqlset){ 645 stmt = new TMssqlSet(psql.dbvendor); 646 //((TMssqlSet)stmt).setSetType(TBaseType.mstSetCmd); 647 stmt.setStartToken(sqlNode); 648 stmt.setEndToken(sqlNode); 649 }else{ 650 stmt = new TMssqlStmtStub(psql.dbvendor); 651 ((TMssqlStmtStub)stmt).setSqlStatementType( ((TMssqlStmtStubSqlNode)sqlNode).getSqlStatementType() ); 652 } 653 break; 654 case T_TeradataStmtStubSqlNode: 655 switch (((TTeradataStmtStubSqlNode)sqlNode).getSqlStatementType()){ 656 case sstRevoke: 657 stmt = new TRevokeStmt(psql.dbvendor); 658 break; 659 default: 660 stmt = new TTeradataStmtStub(psql.dbvendor); 661 ((TTeradataStmtStub)stmt).sqlstatementtype = ( ((TTeradataStmtStubSqlNode)sqlNode).getSqlStatementType() ); 662 } 663 break; 664 case stubStmtSqlNode: 665 TStubStmtSqlNode stubNode = (TStubStmtSqlNode)sqlNode; 666 667 switch(stubNode.getSqlStatementType()){ 668 case sstdb2signal: 669 case sstsignal: 670 stmt = new TSignalStmt(psql.dbvendor); 671 break; 672 default: 673 break; 674 } 675 676 if (psql.dbvendor == EDbVendor.dbvdb2){ 677 switch(stubNode.getSqlStatementType()){ 678 case sstdb2iterate: 679 stmt = new TDb2IterateStmt(EDbVendor.dbvdb2); 680 break; 681 case sstdb2call: 682 stmt = new TDb2CallStmt(EDbVendor.dbvdb2); 683 break; 684 case sstdb2leave: 685 stmt = new TDb2LeaveStmt(EDbVendor.dbvdb2); 686 break; 687 case sstdb2signal: 688 break; 689 case sstdb2goto: 690 stmt = new TDb2GotoStmt(EDbVendor.dbvdb2); 691 break; 692 case sstdb2set: 693 stmt = new TDb2SetStmt(EDbVendor.dbvdb2); 694 break; 695 default: 696 stmt = new TDb2StmtStub(EDbVendor.dbvdb2); 697 ((TDb2StmtStub)stmt).setSqlStatementType( ((TStubStmtSqlNode)sqlNode).getSqlStatementType() ); 698 break; 699 } 700 }else if (psql.dbvendor == EDbVendor.dbvmysql){ 701 stmt = new TMySQLStmtStub(EDbVendor.dbvmysql); 702 ((TMySQLStmtStub)stmt).setSqlStatementType( ((TStubStmtSqlNode)sqlNode).getSqlStatementType() ); 703 } 704 break; 705 case(dummyNode): 706 TDummy dummy = (TDummy)sqlNode; 707 708 switch (dummy.sqlstatementtype){ 709 case sstcommit: 710 stmt = new TCommitStmt(psql.dbvendor); 711 break; 712 case sstmssqlcommit: 713 stmt = new TMssqlCommit(psql.dbvendor); 714 break; 715 case sstmssqlrollback: 716 stmt = new TMssqlRollback(psql.dbvendor); 717 break; 718 case sstrollback: 719 stmt = new TRollbackStmt(psql.dbvendor); 720 break; 721 case sstmssqlsavetran: 722 stmt = new TMssqlSaveTran(psql.dbvendor); 723 break; 724 case sstmssqlprint: 725 stmt = new TMssqlPrint(psql.dbvendor); 726 break; 727 case sstmssqluse: 728 stmt = new TUseDatabase(psql.dbvendor); 729 break; 730 case sstmssqlgo: 731 stmt = new TMssqlGo(psql.dbvendor); 732 break; 733 case sstHelpProcedure: 734 stmt = new THelpProcedure(psql.dbvendor); 735 break; 736 case sstShowProcedure: 737 stmt = new TShowProcedure(psql.dbvendor); 738 break; 739 case sstRevoke: 740 stmt = new TRevokeStmt(psql.dbvendor); 741 break; 742 case sstAllocate: 743 stmt = new TAllocateStmt(psql.dbvendor); 744 break; 745 case sstDrop: 746 stmt = new TDropStmt(psql.dbvendor); 747 break; 748 } 749 break; 750 case(ParseErrorNode): 751 stmt = new TParseErrorSqlStatement(psql.dbvendor); 752 break; 753 case (truncateTable): 754 stmt = new TTruncateStatement(psql.dbvendor); 755 break; 756 case(hiveLoadSqlNode): 757 stmt = new THiveLoad(EDbVendor.dbvhive); 758 break; 759 case (hiveExportSqlNode): 760 stmt = new THiveExportTable(EDbVendor.dbvhive); 761 break; 762 case (hiveImportSqlNode): 763 stmt = new THiveImportTable(EDbVendor.dbvhive); 764 break; 765 case (createDatabaseSqlNode): 766 stmt = new TCreateDatabaseSqlStatement(psql.dbvendor); 767 break; 768 case (hiveSwitchDBSqlNode): 769 stmt = new THiveSwitchDatabase(psql.dbvendor); 770 break; 771 case (hiveDropDBSqlNode): 772 stmt = new THiveDropDatabase(psql.dbvendor); 773 break; 774 case (hiveDescribeSqlNode): 775 stmt = new THiveDescribe(psql.dbvendor); 776 break; 777 case (hiveShowSqlNode): 778 stmt = new THiveShow(psql.dbvendor); 779 break; 780 case (msckSqlNode): 781 stmt = new TMSCKStmt(psql.dbvendor); 782 break; 783 case (hiveDropFunctionSqlNode): 784 stmt = new THiveDropFunction(psql.dbvendor); 785 break; 786 case (analyzeSqlNode): 787 stmt = new TAnalyzeStmt(psql.dbvendor); 788 break; 789 case (LockSqlNode): 790 stmt = new TLockTableStmt(psql.dbvendor); 791 break; 792 case (hiveCreateRoleSqlNode): 793 stmt = new THiveCreateRole(psql.dbvendor); 794 break; 795 case (hiveGrantSqlNode): 796 if (((THiveGrantSqlNode)sqlNode).isRevoke()){ 797 stmt = new THiveRevoke(EDbVendor.dbvhive); 798 }else{ 799 stmt = new THiveGrant(EDbVendor.dbvhive); 800 } 801 break; 802 case (hiveShowGrantSqlNode): 803 stmt = new THiveShowGrant(psql.dbvendor); 804 break; 805 case (hiveDropRoleSqlNode): 806 stmt = new THiveDropRole(psql.dbvendor); 807 break; 808 case (hiveShowRoleGrantSqlNode): 809 stmt = new THiveShowRoleGrant(psql.dbvendor); 810 break; 811 case (hiveGrantRoleSqlNode): 812 if(((THiveGrantRoleSqlNode)sqlNode).isRevoke()){ 813 stmt = new THiveRevokeRole(psql.dbvendor); 814 }else{ 815 stmt = new THiveGrantRole(psql.dbvendor); 816 } 817 818 break; 819// case hiveFromQuerySqlNode: 820// stmt = new THiveFromQuery(EDbVendor.dbvhive); 821// break; 822 case sybaseDumpTranSqlNode: 823 stmt = new TSybaseDumpTran(EDbVendor.dbvsybase); 824 break; 825 case sybaseUpdateIndexStatisticsSqlNode: 826 stmt = new TSybaseUpdateIndexStatistics(EDbVendor.dbvsybase); 827 break; 828 case sybaseWritetextSqlNode: 829 stmt = new TSybaseWritetext(EDbVendor.dbvsybase); 830 break; 831 case sybaseDeleteStatisticsSqlNode: 832 stmt = new TSybaseDeleteStatistics(EDbVendor.dbvsybase); 833 break; 834 case callSqlNode: 835 stmt = new TCallStatement(psql.dbvendor); 836 break; 837 case moveSqlNode: 838 stmt = new TMoveStmt(EDbVendor.dbvpostgresql); 839 break; 840 case MergeSqlNode: 841 stmt = new TMergeSqlStatement(psql.dbvendor) ; 842 break; 843 case dropSequenceSqlNode: 844 stmt = new TDropSequenceStmt(psql.dbvendor); 845 break; 846 case dropProcedureSqlNode: 847 stmt = new TDropProcedureStmt(psql.dbvendor); 848 break; 849 case OracleCompoundTriggerBody: 850 stmt = new TCompoundTriggerBody(psql.dbvendor); 851 break; 852 case createSynonymSqlNode: 853 stmt = new TCreateSynonymStmt(psql.dbvendor); 854 break; 855 case T_TeradataLockSqlNode: 856 stmt = new TTeradataLock(psql.dbvendor); 857 break; 858 case MssqlCreateXmlSchemaCollectionSqlNode: 859 stmt = new TMssqlCreateXmlSchemaCollectionStmt(psql.dbvendor); 860 break; 861 case DeallocatePrepareSqlNode: 862 stmt = new TMySQLDeallocatePrepareStmt(psql.dbvendor); 863 break; 864 case createSchemaSqlNode: 865 stmt = new TCreateSchemaSqlStatement(psql.dbvendor); 866 break; 867 case dropDatabaseSqlNode: 868 stmt = new TDropDatabaseStmt(psql.dbvendor); 869 break; 870 case dropSchemaSqlNode: 871 stmt = new TDropSchemaSqlStatement(psql.dbvendor); 872 break; 873 case MssqlBeginConversationTimerSqlNode: 874 stmt = new TMssqlBeginConversationTimer(psql.dbvendor); 875 break; 876 case getDiagSqlNode: 877 stmt = new TGetDiagStmt(psql.dbvendor); 878 break; 879 case dropFunctionSqlNode: 880 stmt = new TDropFunctionStmt(psql.dbvendor); 881 break; 882 case performanceSqlNode: 883 stmt = new TPerformanceStmt(psql.dbvendor); 884 break; 885 case PrepareSqlNode: 886 stmt = new TPrepareStmt(psql.dbvendor); 887 break; 888 case upsertSqlNode: 889 stmt = new TUpsertStmt(psql.dbvendor); 890 break; 891 case createviewstmt: 892 stmt = new TCreateViewSqlStatement(dbvendor); 893 break; 894 case LeaveSqlNode: 895 stmt = new TLeaveStmt(dbvendor); 896 break; 897 case TSignalSqlNode: 898 stmt = new TSignalStmt(dbvendor); 899 break; 900 case rolllbackSqlNode: 901 stmt = new TRollbackStmt(dbvendor); 902 break; 903 case commitSqlNode: 904 stmt = new TCommitStmt(dbvendor); 905 break; 906 case IterateSqlNode: 907 stmt = new TIterateStmt(dbvendor); 908 break; 909 case T_SetSessionSqlNode: 910 stmt = new TTeradataSetSession(dbvendor); 911 break; 912 case T_DisableEnableTriggerSqlNode: 913 stmt = new TDisableEnableTriggerStmt(dbvendor); 914 break; 915 case CommentSqlNode: 916 stmt = new TCommentOnSqlStmt(dbvendor); 917 break; 918 case CreateTypeSqlNode: 919 stmt = new TCreateTypeStmt(dbvendor); 920 break; 921 case TCreateStageSqlNode: 922 stmt = new TCreateStageStmt(dbvendor); 923 break; 924 case TCreateStreamSqlNode: 925 stmt = new TCreateStreamStmt(dbvendor); 926 break; 927 case TCreatePipeSqlNode: 928 stmt = new TCreatePipeStmt(dbvendor); 929 break; 930 case CollectStatisticsSqlNode: 931 stmt = new TTeradataCollectStatistics(dbvendor); 932 break; 933 case TResetSqlNode: 934 stmt = new TResetStmt(dbvendor); 935 break; 936 case TAlterSessionSqlNode: 937 stmt = new TAlterSessionStatement(dbvendor); 938 break; 939 case TCreateTaskSqlNode: 940 stmt = new TCreateTaskStmt(dbvendor); 941 break; 942 case TCreatePartitionFunctionSqlNode: 943 stmt = new TCreatePartitionFunctionStmt(dbvendor); 944 break; 945 case TAlterPartitionFunctionSqlNode: 946 stmt = new TAlterPartitionFunctionStmt(dbvendor); 947 break; 948 case TCreatePartitionSchemeSqlNode: 949 stmt = new TCreatePartitionSchemeSqlStatement(dbvendor); 950 break; 951 case TAlterPartitionSchemeSqlNode: 952 stmt = new TAlterPartitionSchemeSqlStatement(dbvendor); 953 break; 954 default: 955 break; 956 } 957 958 if (stmt != null){ 959 stmt.rootNode = sqlNode; 960 stmt.setStartToken(sqlNode); 961 stmt.setEndToken(sqlNode); 962 stmt.setLabelName(this.labelName); 963 stmt.doParseStatement(psql); 964 965// if (stmt.getStartToken() == null){ 966// stmt.setStartToken(sqlNode.getStartToken()); 967// } 968// if (stmt.getEndToken() == null){ 969// stmt.setEndToken(sqlNode.getEndToken()); 970// } 971 }else{ 972 // System.out.println("stmt is null:"+sqlNode.getNodeType()); 973 } 974 975 } 976} 977