001package gudusoft.gsqlparser.nodes; 002 003import gudusoft.gsqlparser.TSourceToken; 004import gudusoft.gsqlparser.nodes.flink.TFlinkTableProperty; 005 006/** 007 * AST node for StarRocks SUBMIT TASK statement. 008 * 009 * Syntax: 010 * SUBMIT TASK [task_name] 011 * [SCHEDULE [START(<schedule_start>)] EVERY(INTERVAL <schedule_interval>)] 012 * [PROPERTIES ("key" = "value"[, ...])] 013 * AS <etl_statement> 014 * 015 * Supported ETL statements: 016 * - CREATE TABLE AS SELECT (from v3.0) 017 * - INSERT (from v3.0) 018 * - CACHE SELECT (from v3.3) 019 */ 020public class TSubmitTaskSqlNode extends TParseTreeNode { 021 // Task identification (optional) 022 private TObjectName taskName; 023 024 // Schedule options 025 private boolean hasSchedule; 026 private TSourceToken scheduleStart; 027 private TParseTreeNode scheduleInterval; 028 029 // Properties (PROPERTIES clause) - raw type to allow parser assignment 030 private TParseTreeNode taskProperties; 031 032 // Inner ETL statement (CREATE TABLE AS SELECT, INSERT, or CACHE SELECT) 033 private TParseTreeNode innerStatement; 034 035 // Getters and setters 036 public TObjectName getTaskName() { 037 return taskName; 038 } 039 040 public void setTaskName(TObjectName taskName) { 041 this.taskName = taskName; 042 } 043 044 public boolean hasSchedule() { 045 return hasSchedule; 046 } 047 048 public void setHasSchedule(boolean hasSchedule) { 049 this.hasSchedule = hasSchedule; 050 } 051 052 public TSourceToken getScheduleStart() { 053 return scheduleStart; 054 } 055 056 public void setScheduleStart(TSourceToken scheduleStart) { 057 this.scheduleStart = scheduleStart; 058 } 059 060 public TParseTreeNode getScheduleInterval() { 061 return scheduleInterval; 062 } 063 064 public void setScheduleInterval(TParseTreeNode scheduleInterval) { 065 this.scheduleInterval = scheduleInterval; 066 } 067 068 @SuppressWarnings("unchecked") 069 public TPTNodeList<TFlinkTableProperty> getTaskProperties() { 070 return (TPTNodeList<TFlinkTableProperty>) taskProperties; 071 } 072 073 public void setTaskProperties(TParseTreeNode taskProperties) { 074 this.taskProperties = taskProperties; 075 } 076 077 public TParseTreeNode getInnerStatement() { 078 return innerStatement; 079 } 080 081 public void setInnerStatement(TParseTreeNode innerStatement) { 082 this.innerStatement = innerStatement; 083 } 084 085 public void init(Object arg1) { 086 // arg1 can be task name (TObjectName) or null 087 if (arg1 instanceof TObjectName) { 088 this.taskName = (TObjectName) arg1; 089 } 090 } 091}