1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.database.core.metadata.data.loader;
19
20 import org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
21 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
22 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
23
24 import java.sql.Array;
25 import java.sql.Blob;
26 import java.sql.CallableStatement;
27 import java.sql.Clob;
28 import java.sql.Connection;
29 import java.sql.DatabaseMetaData;
30 import java.sql.NClob;
31 import java.sql.PreparedStatement;
32 import java.sql.SQLClientInfoException;
33 import java.sql.SQLException;
34 import java.sql.SQLWarning;
35 import java.sql.SQLXML;
36 import java.sql.Savepoint;
37 import java.sql.Statement;
38 import java.sql.Struct;
39 import java.util.Map;
40 import java.util.Properties;
41 import java.util.concurrent.Executor;
42
43
44
45
46 public final class MetaDataLoaderConnection implements Connection {
47
48 private final Connection connection;
49
50 private final DialectDatabaseMetaData dialectDatabaseMetaData;
51
52 public MetaDataLoaderConnection(final DatabaseType databaseType, final Connection connection) {
53 this.connection = connection;
54 dialectDatabaseMetaData = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData();
55 }
56
57 @SuppressWarnings("ReturnOfNull")
58 @Override
59 public String getCatalog() {
60 try {
61 return connection.getCatalog();
62 } catch (final SQLException ignored) {
63 return null;
64 }
65 }
66
67 @Override
68 public void setCatalog(final String catalog) throws SQLException {
69 connection.setCatalog(catalog);
70 }
71
72 @Override
73 public String getSchema() {
74 return dialectDatabaseMetaData.getSchema(connection);
75 }
76
77 @Override
78 public void setSchema(final String schema) throws SQLException {
79 connection.setSchema(schema);
80 }
81
82 @Override
83 public Statement createStatement() throws SQLException {
84 return connection.createStatement();
85 }
86
87 @Override
88 public Statement createStatement(final int resultSetType, final int resultSetConcurrency) throws SQLException {
89 return connection.createStatement(resultSetType, resultSetConcurrency);
90 }
91
92 @Override
93 public Statement createStatement(final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability) throws SQLException {
94 return connection.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability);
95 }
96
97 @Override
98 public PreparedStatement prepareStatement(final String sql) throws SQLException {
99 return connection.prepareStatement(sql);
100 }
101
102 @Override
103 public PreparedStatement prepareStatement(final String sql, final int resultSetType, final int resultSetConcurrency) throws SQLException {
104 return connection.prepareStatement(sql, resultSetType, resultSetConcurrency);
105 }
106
107 @Override
108 public PreparedStatement prepareStatement(final String sql, final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability) throws SQLException {
109 return connection.prepareStatement(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
110 }
111
112 @Override
113 public PreparedStatement prepareStatement(final String sql, final int autoGeneratedKeys) throws SQLException {
114 return connection.prepareStatement(sql, autoGeneratedKeys);
115 }
116
117 @Override
118 public PreparedStatement prepareStatement(final String sql, final int[] columnIndexes) throws SQLException {
119 return connection.prepareStatement(sql, columnIndexes);
120 }
121
122 @Override
123 public PreparedStatement prepareStatement(final String sql, final String[] columnNames) throws SQLException {
124 return connection.prepareStatement(sql, columnNames);
125 }
126
127 @Override
128 public CallableStatement prepareCall(final String sql) throws SQLException {
129 return connection.prepareCall(sql);
130 }
131
132 @Override
133 public CallableStatement prepareCall(final String sql, final int resultSetType, final int resultSetConcurrency) throws SQLException {
134 return connection.prepareCall(sql, resultSetType, resultSetConcurrency);
135 }
136
137 @Override
138 public CallableStatement prepareCall(final String sql, final int resultSetType, final int resultSetConcurrency, final int resultSetHoldability) throws SQLException {
139 return connection.prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
140 }
141
142 @Override
143 public String nativeSQL(final String sql) throws SQLException {
144 return connection.nativeSQL(sql);
145 }
146
147 @Override
148 public void setAutoCommit(final boolean autoCommit) throws SQLException {
149 connection.setAutoCommit(autoCommit);
150 }
151
152 @Override
153 public boolean getAutoCommit() throws SQLException {
154 return connection.getAutoCommit();
155 }
156
157 @Override
158 public void commit() throws SQLException {
159 connection.commit();
160 }
161
162 @Override
163 public void close() throws SQLException {
164 connection.close();
165 }
166
167 @Override
168 public boolean isClosed() throws SQLException {
169 return connection.isClosed();
170 }
171
172 @Override
173 public DatabaseMetaData getMetaData() throws SQLException {
174 return connection.getMetaData();
175 }
176
177 @Override
178 public void setReadOnly(final boolean readOnly) throws SQLException {
179 connection.setReadOnly(readOnly);
180 }
181
182 @Override
183 public boolean isReadOnly() throws SQLException {
184 return connection.isReadOnly();
185 }
186
187 @Override
188 public void setTransactionIsolation(final int level) throws SQLException {
189 connection.setTransactionIsolation(level);
190 }
191
192 @Override
193 public int getTransactionIsolation() throws SQLException {
194 return connection.getTransactionIsolation();
195 }
196
197 @Override
198 public SQLWarning getWarnings() throws SQLException {
199 return connection.getWarnings();
200 }
201
202 @Override
203 public void clearWarnings() throws SQLException {
204 connection.clearWarnings();
205 }
206
207 @Override
208 public Map<String, Class<?>> getTypeMap() throws SQLException {
209 return connection.getTypeMap();
210 }
211
212 @Override
213 public void setTypeMap(final Map<String, Class<?>> map) throws SQLException {
214 connection.setTypeMap(map);
215 }
216
217 @Override
218 public void setHoldability(final int holdability) throws SQLException {
219 connection.setHoldability(holdability);
220 }
221
222 @Override
223 public int getHoldability() throws SQLException {
224 return connection.getHoldability();
225 }
226
227 @Override
228 public Savepoint setSavepoint() throws SQLException {
229 return connection.setSavepoint();
230 }
231
232 @Override
233 public Savepoint setSavepoint(final String name) throws SQLException {
234 return connection.setSavepoint(name);
235 }
236
237 @Override
238 public void rollback() throws SQLException {
239 connection.rollback();
240 }
241
242 @Override
243 public void rollback(final Savepoint savepoint) throws SQLException {
244 connection.rollback(savepoint);
245 }
246
247 @Override
248 public void releaseSavepoint(final Savepoint savepoint) throws SQLException {
249 connection.releaseSavepoint(savepoint);
250 }
251
252 @Override
253 public Clob createClob() throws SQLException {
254 return connection.createClob();
255 }
256
257 @Override
258 public Blob createBlob() throws SQLException {
259 return connection.createBlob();
260 }
261
262 @Override
263 public NClob createNClob() throws SQLException {
264 return connection.createNClob();
265 }
266
267 @Override
268 public SQLXML createSQLXML() throws SQLException {
269 return connection.createSQLXML();
270 }
271
272 @Override
273 public boolean isValid(final int timeout) throws SQLException {
274 return connection.isValid(timeout);
275 }
276
277 @Override
278 public void setClientInfo(final String name, final String value) throws SQLClientInfoException {
279 connection.setClientInfo(name, value);
280 }
281
282 @Override
283 public void setClientInfo(final Properties props) throws SQLClientInfoException {
284 connection.setClientInfo(props);
285 }
286
287 @Override
288 public String getClientInfo(final String name) throws SQLException {
289 return connection.getClientInfo(name);
290 }
291
292 @Override
293 public Properties getClientInfo() throws SQLException {
294 return connection.getClientInfo();
295 }
296
297 @Override
298 public Array createArrayOf(final String typeName, final Object[] elements) throws SQLException {
299 return connection.createArrayOf(typeName, elements);
300 }
301
302 @Override
303 public Struct createStruct(final String typeName, final Object[] attributes) throws SQLException {
304 return connection.createStruct(typeName, attributes);
305 }
306
307 @Override
308 public void abort(final Executor executor) throws SQLException {
309 connection.abort(executor);
310 }
311
312 @Override
313 public void setNetworkTimeout(final Executor executor, final int milliseconds) throws SQLException {
314 connection.setNetworkTimeout(executor, milliseconds);
315 }
316
317 @Override
318 public int getNetworkTimeout() throws SQLException {
319 return connection.getNetworkTimeout();
320 }
321
322 @Override
323 public <T> T unwrap(final Class<T> iface) throws SQLException {
324 return connection.unwrap(iface);
325 }
326
327 @Override
328 public boolean isWrapperFor(final Class<?> iface) throws SQLException {
329 return connection.isWrapperFor(iface);
330 }
331 }