1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.session.query;
19
20 import lombok.AccessLevel;
21 import lombok.Getter;
22 import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
23 import org.apache.shardingsphere.infra.binder.context.type.TableAvailable;
24 import org.apache.shardingsphere.infra.hint.HintValueContext;
25
26 import java.util.List;
27 import java.util.Optional;
28
29
30
31
32 @Getter
33 public final class QueryContext {
34
35 private final SQLStatementContext sqlStatementContext;
36
37 private final String sql;
38
39 private final List<Object> parameters;
40
41 @Getter(AccessLevel.NONE)
42 private final String databaseName;
43
44 @Getter(AccessLevel.NONE)
45 private final String schemaName;
46
47 private final HintValueContext hintValueContext;
48
49 private final boolean useCache;
50
51 public QueryContext(final SQLStatementContext sqlStatementContext, final String sql, final List<Object> params, final HintValueContext hintValueContext) {
52 this(sqlStatementContext, sql, params, hintValueContext, false);
53 }
54
55 public QueryContext(final SQLStatementContext sqlStatementContext, final String sql, final List<Object> params, final HintValueContext hintValueContext, final boolean useCache) {
56 this.sqlStatementContext = sqlStatementContext;
57 this.sql = sql;
58 parameters = params;
59 databaseName = sqlStatementContext instanceof TableAvailable ? ((TableAvailable) sqlStatementContext).getTablesContext().getDatabaseName().orElse(null) : null;
60 schemaName = sqlStatementContext instanceof TableAvailable ? ((TableAvailable) sqlStatementContext).getTablesContext().getSchemaName().orElse(null) : null;
61 this.hintValueContext = hintValueContext;
62 this.useCache = useCache;
63 }
64
65
66
67
68
69
70 public Optional<String> getDatabaseNameFromSQLStatement() {
71 return Optional.ofNullable(databaseName);
72 }
73
74
75
76
77
78
79 public Optional<String> getSchemaNameFromSQLStatement() {
80 return Optional.ofNullable(schemaName);
81 }
82 }