@@ -118,9 +118,9 @@ public void destroy()
118
118
}
119
119
120
120
@ Override
121
- public Set <String > getSchemaNames ()
121
+ public Set <String > getSchemaNames (JdbcIdentity identity )
122
122
{
123
- try (Connection connection = connectionFactory .openConnection ();
123
+ try (Connection connection = connectionFactory .openConnection (identity );
124
124
ResultSet resultSet = connection .getMetaData ().getSchemas ()) {
125
125
ImmutableSet .Builder <String > schemaNames = ImmutableSet .builder ();
126
126
while (resultSet .next ()) {
@@ -138,9 +138,9 @@ public Set<String> getSchemaNames()
138
138
}
139
139
140
140
@ Override
141
- public List <SchemaTableName > getTableNames (@ Nullable String schema )
141
+ public List <SchemaTableName > getTableNames (JdbcIdentity identity , @ Nullable String schema )
142
142
{
143
- try (Connection connection = connectionFactory .openConnection ()) {
143
+ try (Connection connection = connectionFactory .openConnection (identity )) {
144
144
DatabaseMetaData metadata = connection .getMetaData ();
145
145
if (metadata .storesUpperCaseIdentifiers () && (schema != null )) {
146
146
schema = schema .toUpperCase (ENGLISH );
@@ -160,9 +160,9 @@ public List<SchemaTableName> getTableNames(@Nullable String schema)
160
160
161
161
@ Nullable
162
162
@ Override
163
- public JdbcTableHandle getTableHandle (SchemaTableName schemaTableName )
163
+ public JdbcTableHandle getTableHandle (JdbcIdentity identity , SchemaTableName schemaTableName )
164
164
{
165
- try (Connection connection = connectionFactory .openConnection ()) {
165
+ try (Connection connection = connectionFactory .openConnection (identity )) {
166
166
DatabaseMetaData metadata = connection .getMetaData ();
167
167
String jdbcSchemaName = schemaTableName .getSchemaName ();
168
168
String jdbcTableName = schemaTableName .getTableName ();
@@ -197,7 +197,7 @@ public JdbcTableHandle getTableHandle(SchemaTableName schemaTableName)
197
197
@ Override
198
198
public List <JdbcColumnHandle > getColumns (ConnectorSession session , JdbcTableHandle tableHandle )
199
199
{
200
- try (Connection connection = connectionFactory .openConnection ()) {
200
+ try (Connection connection = connectionFactory .openConnection (JdbcIdentity . from ( session ) )) {
201
201
try (ResultSet resultSet = getColumns (tableHandle , connection .getMetaData ())) {
202
202
List <JdbcColumnHandle > columns = new ArrayList <>();
203
203
while (resultSet .next ()) {
@@ -232,7 +232,7 @@ public Optional<ReadMapping> toPrestoType(ConnectorSession session, JdbcTypeHand
232
232
}
233
233
234
234
@ Override
235
- public ConnectorSplitSource getSplits (JdbcTableLayoutHandle layoutHandle )
235
+ public ConnectorSplitSource getSplits (JdbcIdentity identity , JdbcTableLayoutHandle layoutHandle )
236
236
{
237
237
JdbcTableHandle tableHandle = layoutHandle .getTable ();
238
238
JdbcSplit jdbcSplit = new JdbcSplit (
@@ -246,10 +246,10 @@ public ConnectorSplitSource getSplits(JdbcTableLayoutHandle layoutHandle)
246
246
}
247
247
248
248
@ Override
249
- public Connection getConnection (JdbcSplit split )
249
+ public Connection getConnection (JdbcIdentity identity , JdbcSplit split )
250
250
throws SQLException
251
251
{
252
- Connection connection = connectionFactory .openConnection ();
252
+ Connection connection = connectionFactory .openConnection (identity );
253
253
try {
254
254
connection .setReadOnly (true );
255
255
}
@@ -276,10 +276,10 @@ public PreparedStatement buildSql(Connection connection, JdbcSplit split, List<J
276
276
}
277
277
278
278
@ Override
279
- public void createTable (ConnectorTableMetadata tableMetadata )
279
+ public void createTable (ConnectorSession session , ConnectorTableMetadata tableMetadata )
280
280
{
281
281
try {
282
- createTable (tableMetadata , null , tableMetadata .getTable ().getTableName ());
282
+ createTable (tableMetadata , session , tableMetadata .getTable ().getTableName ());
283
283
}
284
284
catch (SQLException e ) {
285
285
throw new PrestoException (JDBC_ERROR , e );
@@ -315,11 +315,12 @@ protected JdbcOutputTableHandle createTable(ConnectorTableMetadata tableMetadata
315
315
String schema = schemaTableName .getSchemaName ();
316
316
String table = schemaTableName .getTableName ();
317
317
318
- if (!getSchemaNames ().contains (schema )) {
318
+ JdbcIdentity identity = JdbcIdentity .from (session );
319
+ if (!getSchemaNames (identity ).contains (schema )) {
319
320
throw new PrestoException (NOT_FOUND , "Schema not found: " + schema );
320
321
}
321
322
322
- try (Connection connection = connectionFactory .openConnection ()) {
323
+ try (Connection connection = connectionFactory .openConnection (identity )) {
323
324
boolean uppercase = connection .getMetaData ().storesUpperCaseIdentifiers ();
324
325
if (uppercase ) {
325
326
schema = schema .toUpperCase (ENGLISH );
@@ -377,24 +378,26 @@ protected String generateTemporaryTableName()
377
378
return "tmp_presto_" + UUID .randomUUID ().toString ().replace ("-" , "" );
378
379
}
379
380
381
+ //todo
380
382
@ Override
381
- public void commitCreateTable (JdbcOutputTableHandle handle )
383
+ public void commitCreateTable (JdbcIdentity identity , JdbcOutputTableHandle handle )
382
384
{
383
385
renameTable (
386
+ identity ,
384
387
handle .getCatalogName (),
385
388
new SchemaTableName (handle .getSchemaName (), handle .getTemporaryTableName ()),
386
389
new SchemaTableName (handle .getSchemaName (), handle .getTableName ()));
387
390
}
388
391
389
392
@ Override
390
- public void renameTable (JdbcTableHandle handle , SchemaTableName newTable )
393
+ public void renameTable (JdbcIdentity identity , JdbcTableHandle handle , SchemaTableName newTable )
391
394
{
392
- renameTable (handle .getCatalogName (), handle .getSchemaTableName (), newTable );
395
+ renameTable (identity , handle .getCatalogName (), handle .getSchemaTableName (), newTable );
393
396
}
394
397
395
- protected void renameTable (String catalogName , SchemaTableName oldTable , SchemaTableName newTable )
398
+ protected void renameTable (JdbcIdentity identity , String catalogName , SchemaTableName oldTable , SchemaTableName newTable )
396
399
{
397
- try (Connection connection = connectionFactory .openConnection ()) {
400
+ try (Connection connection = connectionFactory .openConnection (identity )) {
398
401
DatabaseMetaData metadata = connection .getMetaData ();
399
402
String schemaName = oldTable .getSchemaName ();
400
403
String tableName = oldTable .getTableName ();
@@ -418,21 +421,21 @@ protected void renameTable(String catalogName, SchemaTableName oldTable, SchemaT
418
421
}
419
422
420
423
@ Override
421
- public void finishInsertTable (JdbcOutputTableHandle handle )
424
+ public void finishInsertTable (JdbcIdentity identity , JdbcOutputTableHandle handle )
422
425
{
423
426
String temporaryTable = quoted (handle .getCatalogName (), handle .getSchemaName (), handle .getTemporaryTableName ());
424
427
String targetTable = quoted (handle .getCatalogName (), handle .getSchemaName (), handle .getTableName ());
425
428
String insertSql = format ("INSERT INTO %s SELECT * FROM %s" , targetTable , temporaryTable );
426
429
String cleanupSql = "DROP TABLE " + temporaryTable ;
427
430
428
- try (Connection connection = getConnection (handle )) {
431
+ try (Connection connection = getConnection (identity , handle )) {
429
432
execute (connection , insertSql );
430
433
}
431
434
catch (SQLException e ) {
432
435
throw new PrestoException (JDBC_ERROR , e );
433
436
}
434
437
435
- try (Connection connection = getConnection (handle )) {
438
+ try (Connection connection = getConnection (identity , handle )) {
436
439
execute (connection , cleanupSql );
437
440
}
438
441
catch (SQLException e ) {
@@ -441,9 +444,9 @@ public void finishInsertTable(JdbcOutputTableHandle handle)
441
444
}
442
445
443
446
@ Override
444
- public void addColumn (JdbcTableHandle handle , ColumnMetadata column )
447
+ public void addColumn (JdbcIdentity identity , JdbcTableHandle handle , ColumnMetadata column )
445
448
{
446
- try (Connection connection = connectionFactory .openConnection ()) {
449
+ try (Connection connection = connectionFactory .openConnection (identity )) {
447
450
String schema = handle .getSchemaName ();
448
451
String table = handle .getTableName ();
449
452
String columnName = column .getName ();
@@ -465,9 +468,9 @@ public void addColumn(JdbcTableHandle handle, ColumnMetadata column)
465
468
}
466
469
467
470
@ Override
468
- public void renameColumn (JdbcTableHandle handle , JdbcColumnHandle jdbcColumn , String newColumnName )
471
+ public void renameColumn (JdbcIdentity identity , JdbcTableHandle handle , JdbcColumnHandle jdbcColumn , String newColumnName )
469
472
{
470
- try (Connection connection = connectionFactory .openConnection ()) {
473
+ try (Connection connection = connectionFactory .openConnection (identity )) {
471
474
DatabaseMetaData metadata = connection .getMetaData ();
472
475
if (metadata .storesUpperCaseIdentifiers ()) {
473
476
newColumnName = newColumnName .toUpperCase (ENGLISH );
@@ -485,9 +488,9 @@ public void renameColumn(JdbcTableHandle handle, JdbcColumnHandle jdbcColumn, St
485
488
}
486
489
487
490
@ Override
488
- public void dropColumn (JdbcTableHandle handle , JdbcColumnHandle column )
491
+ public void dropColumn (JdbcIdentity identity , JdbcTableHandle handle , JdbcColumnHandle column )
489
492
{
490
- try (Connection connection = connectionFactory .openConnection ()) {
493
+ try (Connection connection = connectionFactory .openConnection (identity )) {
491
494
String sql = format (
492
495
"ALTER TABLE %s DROP COLUMN %s" ,
493
496
quoted (handle .getCatalogName (), handle .getSchemaName (), handle .getTableName ()),
@@ -500,13 +503,13 @@ public void dropColumn(JdbcTableHandle handle, JdbcColumnHandle column)
500
503
}
501
504
502
505
@ Override
503
- public void dropTable (JdbcTableHandle handle )
506
+ public void dropTable (JdbcIdentity identity , JdbcTableHandle handle )
504
507
{
505
508
StringBuilder sql = new StringBuilder ()
506
509
.append ("DROP TABLE " )
507
510
.append (quoted (handle .getCatalogName (), handle .getSchemaName (), handle .getTableName ()));
508
511
509
- try (Connection connection = connectionFactory .openConnection ()) {
512
+ try (Connection connection = connectionFactory .openConnection (identity )) {
510
513
execute (connection , sql .toString ());
511
514
}
512
515
catch (SQLException e ) {
@@ -515,9 +518,9 @@ public void dropTable(JdbcTableHandle handle)
515
518
}
516
519
517
520
@ Override
518
- public void rollbackCreateTable (JdbcOutputTableHandle handle )
521
+ public void rollbackCreateTable (JdbcIdentity identity , JdbcOutputTableHandle handle )
519
522
{
520
- dropTable (new JdbcTableHandle (
523
+ dropTable (identity , new JdbcTableHandle (
521
524
handle .getConnectorId (),
522
525
new SchemaTableName (handle .getSchemaName (), handle .getTemporaryTableName ()),
523
526
handle .getCatalogName (),
@@ -537,10 +540,10 @@ public String buildInsertSql(JdbcOutputTableHandle handle)
537
540
}
538
541
539
542
@ Override
540
- public Connection getConnection (JdbcOutputTableHandle handle )
543
+ public Connection getConnection (JdbcIdentity identity , JdbcOutputTableHandle handle )
541
544
throws SQLException
542
545
{
543
- return connectionFactory .openConnection ();
546
+ return connectionFactory .openConnection (identity );
544
547
}
545
548
546
549
@ Override
0 commit comments