11package com .clickhouse .jdbc .internal ;
22
3- import com .clickhouse .client .api .sql .SQLUtils ;
4- import com .clickhouse .jdbc .internal .parser .ClickHouseParser ;
5- import com .clickhouse .jdbc .internal .parser .ClickHouseParserBaseListener ;
6- import org .antlr .v4 .runtime .tree .ErrorNode ;
7- import org .slf4j .Logger ;
8- import org .slf4j .LoggerFactory ;
9-
10- import java .util .ArrayList ;
113import java .util .Arrays ;
12- import java .util .Collections ;
134import java .util .List ;
145
156/**
16- * Parser listener that collects information for prepared statement.
7+ * Model of parsed statement with parameters
178 */
18- public class ParsedPreparedStatement extends ClickHouseParserBaseListener {
19- private static final Logger LOG = LoggerFactory .getLogger (ParsedPreparedStatement .class );
9+ public final class ParsedPreparedStatement {
2010
2111 private String table ;
2212
@@ -78,10 +68,18 @@ public String[] getInsertColumns() {
7868 return insertColumns ;
7969 }
8070
71+ public void setInsertColumns (String [] insertColumns ) {
72+ this .insertColumns = insertColumns ;
73+ }
74+
8175 public String getTable () {
8276 return table ;
8377 }
8478
79+ public void setTable (String table ) {
80+ this .table = table ;
81+ }
82+
8583 public int [] getParamPositions () {
8684 return paramPositions ;
8785 }
@@ -98,10 +96,18 @@ public int getAssignValuesListStartPosition() {
9896 return assignValuesListStartPosition ;
9997 }
10098
99+ public void setAssignValuesListStartPosition (int assignValuesListStartPosition ) {
100+ this .assignValuesListStartPosition = assignValuesListStartPosition ;
101+ }
102+
101103 public int getAssignValuesListStopPosition () {
102104 return assignValuesListStopPosition ;
103105 }
104106
107+ public void setAssignValuesListStopPosition (int assignValuesListStopPosition ) {
108+ this .assignValuesListStopPosition = assignValuesListStopPosition ;
109+ }
110+
105111 public void setUseDatabase (String useDatabase ) {
106112 this .useDatabase = useDatabase ;
107113 }
@@ -134,132 +140,11 @@ public void setHasErrors(boolean hasErrors) {
134140 this .hasErrors = hasErrors ;
135141 }
136142
137- @ Override
138- public void enterQueryStmt (ClickHouseParser .QueryStmtContext ctx ) {
139- if (SqlParser .isStmtWithResultSet (ctx )) {
140- setHasResultSet (true );
141- }
142- }
143-
144- @ Override
145- public void enterUseStmt (ClickHouseParser .UseStmtContext ctx ) {
146- if (ctx .databaseIdentifier () != null ) {
147- setUseDatabase (SQLUtils .unquoteIdentifier (ctx .databaseIdentifier ().getText ()));
148- }
149- }
150-
151- @ Override
152- public void enterSetRoleStmt (ClickHouseParser .SetRoleStmtContext ctx ) {
153- if (ctx .NONE () != null ) {
154- setRoles (Collections .emptyList ());
155- } else {
156- List <String > roles = new ArrayList <>();
157- for (ClickHouseParser .IdentifierContext id : ctx .setRolesList ().identifier ()) {
158- roles .add (SQLUtils .unquoteIdentifier (id .getText ()));
159- }
160- setRoles (roles );
161- }
162- }
163-
164- @ Override
165- public void enterColumnExprParam (ClickHouseParser .ColumnExprParamContext ctx ) {
166- appendParameter (ctx .start .getStartIndex ());
167- }
168-
169- @ Override
170- public void enterColumnExprPrecedence3 (ClickHouseParser .ColumnExprPrecedence3Context ctx ) {
171- super .enterColumnExprPrecedence3 (ctx );
172- }
173-
174- @ Override
175- public void enterCteUnboundColParam (ClickHouseParser .CteUnboundColParamContext ctx ) {
176- appendParameter (ctx .start .getStartIndex ());
177- }
178-
179- @ Override
180- public void visitErrorNode (ErrorNode node ) {
181- setHasErrors (true );
182- }
183-
184- @ Override
185- public void enterInsertParameterFuncExpr (ClickHouseParser .InsertParameterFuncExprContext ctx ) {
186- setUseFunction (true );
187- }
188-
189- @ Override
190- public void enterAssignmentValuesList (ClickHouseParser .AssignmentValuesListContext ctx ) {
191- assignValuesListStartPosition = ctx .getStart ().getStartIndex ();
192- assignValuesListStopPosition = ctx .getStop ().getStopIndex ();
193- }
194-
195- @ Override
196- public void enterInsertParameter (ClickHouseParser .InsertParameterContext ctx ) {
197- appendParameter (ctx .start .getStartIndex ());
198- }
199-
200- @ Override
201- public void enterFromClause (ClickHouseParser .FromClauseContext ctx ) {
202- if (ctx .JDBC_PARAM_PLACEHOLDER () != null ) {
203- appendParameter (ctx .JDBC_PARAM_PLACEHOLDER ().getSymbol ().getStartIndex ());
204- }
205- }
206-
207- @ Override
208- public void enterViewParam (ClickHouseParser .ViewParamContext ctx ) {
209- if (ctx .JDBC_PARAM_PLACEHOLDER () != null ) {
210- appendParameter (ctx .JDBC_PARAM_PLACEHOLDER ().getSymbol ().getStartIndex ());
211- }
212- }
213-
214- private void appendParameter (int startIndex ) {
143+ void appendParameter (int startIndex ) {
215144 argCount ++;
216145 if (argCount > paramPositions .length ) {
217146 paramPositions = Arrays .copyOf (paramPositions , paramPositions .length + 10 );
218147 }
219148 paramPositions [argCount - 1 ] = startIndex ;
220- if (LOG .isTraceEnabled ()) {
221- LOG .trace ("parameter position {}" , startIndex );
222- }
223- }
224-
225- @ Override
226- public void enterTableExprIdentifier (ClickHouseParser .TableExprIdentifierContext ctx ) {
227- if (ctx .tableIdentifier () != null ) {
228- this .table = SQLUtils .unquoteIdentifier (ctx .tableIdentifier ().getText ());
229- }
230- }
231-
232- @ Override
233- public void enterInsertStmt (ClickHouseParser .InsertStmtContext ctx ) {
234- ClickHouseParser .TableIdentifierContext tableId = ctx .tableIdentifier ();
235- if (tableId != null ) {
236- this .table = SQLUtils .unquoteIdentifier (tableId .getText ());
237- }
238-
239- ClickHouseParser .ColumnsClauseContext columns = ctx .columnsClause ();
240- if (columns != null ) {
241- List <ClickHouseParser .NestedIdentifierContext > names = columns .nestedIdentifier ();
242- this .insertColumns = new String [names .size ()];
243- for (int i = 0 ; i < names .size (); i ++) {
244- this .insertColumns [i ] = names .get (i ).getText ();
245- }
246- }
247-
248- setInsert (true );
249- }
250-
251- @ Override
252- public void enterDataClauseSelect (ClickHouseParser .DataClauseSelectContext ctx ) {
253- setInsertWithSelect (true );
254- }
255-
256- @ Override
257- public void enterDataClauseValues (ClickHouseParser .DataClauseValuesContext ctx ) {
258- setAssignValuesGroups (ctx .assignmentValues ().size ());
259- }
260-
261- @ Override
262- public void exitInsertParameterFuncExpr (ClickHouseParser .InsertParameterFuncExprContext ctx ) {
263- setUseFunction (true );
264149 }
265150}
0 commit comments