• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

HotelsDotCom / waggle-dance / #445

24 Jul 2025 02:27PM UTC coverage: 69.257% (-7.1%) from 76.395%
#445

push

patduin
Merge branch 'hive-3.x' of github.com:ExpediaGroup/waggle-dance into hive-3.x

2620 of 3783 relevant lines covered (69.26%)

0.69 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

62.05
/waggle-dance-core/src/main/java/com/hotels/bdp/waggledance/mapping/model/DatabaseMappingImpl.java
1
/**
2
 * Copyright (C) 2016-2025 Expedia, Inc.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 * http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
package com.hotels.bdp.waggledance.mapping.model;
17

18
import java.io.IOException;
19
import java.util.ArrayList;
20
import java.util.List;
21

22
import org.apache.hadoop.hive.metastore.MetaStoreFilterHook;
23
import org.apache.hadoop.hive.metastore.api.AddCheckConstraintRequest;
24
import org.apache.hadoop.hive.metastore.api.AddDefaultConstraintRequest;
25
import org.apache.hadoop.hive.metastore.api.AddDynamicPartitions;
26
import org.apache.hadoop.hive.metastore.api.AddForeignKeyRequest;
27
import org.apache.hadoop.hive.metastore.api.AddNotNullConstraintRequest;
28
import org.apache.hadoop.hive.metastore.api.AddPartitionsRequest;
29
import org.apache.hadoop.hive.metastore.api.AddPartitionsResult;
30
import org.apache.hadoop.hive.metastore.api.AddUniqueConstraintRequest;
31
import org.apache.hadoop.hive.metastore.api.AllocateTableWriteIdsRequest;
32
import org.apache.hadoop.hive.metastore.api.AlreadyExistsException;
33
import org.apache.hadoop.hive.metastore.api.AlterISchemaRequest;
34
import org.apache.hadoop.hive.metastore.api.CacheFileMetadataRequest;
35
import org.apache.hadoop.hive.metastore.api.CheckConstraintsRequest;
36
import org.apache.hadoop.hive.metastore.api.CheckConstraintsResponse;
37
import org.apache.hadoop.hive.metastore.api.ClientCapabilities;
38
import org.apache.hadoop.hive.metastore.api.ClientCapability;
39
import org.apache.hadoop.hive.metastore.api.ColumnStatistics;
40
import org.apache.hadoop.hive.metastore.api.CompactionRequest;
41
import org.apache.hadoop.hive.metastore.api.CreationMetadata;
42
import org.apache.hadoop.hive.metastore.api.Database;
43
import org.apache.hadoop.hive.metastore.api.DefaultConstraintsRequest;
44
import org.apache.hadoop.hive.metastore.api.DefaultConstraintsResponse;
45
import org.apache.hadoop.hive.metastore.api.DropConstraintRequest;
46
import org.apache.hadoop.hive.metastore.api.DropPartitionsRequest;
47
import org.apache.hadoop.hive.metastore.api.DropPartitionsResult;
48
import org.apache.hadoop.hive.metastore.api.FindSchemasByColsResp;
49
import org.apache.hadoop.hive.metastore.api.FireEventRequest;
50
import org.apache.hadoop.hive.metastore.api.ForeignKeysRequest;
51
import org.apache.hadoop.hive.metastore.api.ForeignKeysResponse;
52
import org.apache.hadoop.hive.metastore.api.Function;
53
import org.apache.hadoop.hive.metastore.api.GetTableRequest;
54
import org.apache.hadoop.hive.metastore.api.GetTableResult;
55
import org.apache.hadoop.hive.metastore.api.GetTablesRequest;
56
import org.apache.hadoop.hive.metastore.api.GetTablesResult;
57
import org.apache.hadoop.hive.metastore.api.GrantRevokePrivilegeRequest;
58
import org.apache.hadoop.hive.metastore.api.HiveObjectPrivilege;
59
import org.apache.hadoop.hive.metastore.api.HiveObjectRef;
60
import org.apache.hadoop.hive.metastore.api.HiveObjectType;
61
import org.apache.hadoop.hive.metastore.api.ISchema;
62
import org.apache.hadoop.hive.metastore.api.ISchemaName;
63
import org.apache.hadoop.hive.metastore.api.InvalidObjectException;
64
import org.apache.hadoop.hive.metastore.api.LockComponent;
65
import org.apache.hadoop.hive.metastore.api.LockRequest;
66
import org.apache.hadoop.hive.metastore.api.MapSchemaVersionToSerdeRequest;
67
import org.apache.hadoop.hive.metastore.api.MetaException;
68
import org.apache.hadoop.hive.metastore.api.NotNullConstraintsRequest;
69
import org.apache.hadoop.hive.metastore.api.NotNullConstraintsResponse;
70
import org.apache.hadoop.hive.metastore.api.NotificationEventsCountRequest;
71
import org.apache.hadoop.hive.metastore.api.Partition;
72
import org.apache.hadoop.hive.metastore.api.PartitionSpec;
73
import org.apache.hadoop.hive.metastore.api.PartitionValuesRequest;
74
import org.apache.hadoop.hive.metastore.api.PartitionsByExprRequest;
75
import org.apache.hadoop.hive.metastore.api.PartitionsByExprResult;
76
import org.apache.hadoop.hive.metastore.api.PartitionsStatsRequest;
77
import org.apache.hadoop.hive.metastore.api.PrimaryKeysRequest;
78
import org.apache.hadoop.hive.metastore.api.PrimaryKeysResponse;
79
import org.apache.hadoop.hive.metastore.api.PrivilegeBag;
80
import org.apache.hadoop.hive.metastore.api.ReplTblWriteIdStateRequest;
81
import org.apache.hadoop.hive.metastore.api.SQLCheckConstraint;
82
import org.apache.hadoop.hive.metastore.api.SQLDefaultConstraint;
83
import org.apache.hadoop.hive.metastore.api.SQLForeignKey;
84
import org.apache.hadoop.hive.metastore.api.SQLNotNullConstraint;
85
import org.apache.hadoop.hive.metastore.api.SQLPrimaryKey;
86
import org.apache.hadoop.hive.metastore.api.SQLUniqueConstraint;
87
import org.apache.hadoop.hive.metastore.api.SchemaVersion;
88
import org.apache.hadoop.hive.metastore.api.SchemaVersionDescriptor;
89
import org.apache.hadoop.hive.metastore.api.SetPartitionsStatsRequest;
90
import org.apache.hadoop.hive.metastore.api.SetSchemaVersionStateRequest;
91
import org.apache.hadoop.hive.metastore.api.Table;
92
import org.apache.hadoop.hive.metastore.api.TableMeta;
93
import org.apache.hadoop.hive.metastore.api.TableStatsRequest;
94
import org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore.Iface;
95
import org.apache.hadoop.hive.metastore.api.UniqueConstraintsRequest;
96
import org.apache.hadoop.hive.metastore.api.UniqueConstraintsResponse;
97
import org.apache.thrift.TException;
98

99
import lombok.AllArgsConstructor;
100
import lombok.extern.log4j.Log4j2;
101

102
import com.hotels.bdp.waggledance.api.WaggleDanceException;
103
import com.hotels.bdp.waggledance.mapping.service.GrammarUtils;
104

105
@AllArgsConstructor
106
@Log4j2
1✔
107
public class DatabaseMappingImpl implements DatabaseMapping {
108

109
  private final MetaStoreMapping metaStoreMapping;
110
  private final QueryMapping queryMapping;
111

112
  @Override
113
  public MetaStoreFilterHook getMetastoreFilter() {
114
    return metaStoreMapping.getMetastoreFilter();
×
115
  }
116

117
  @Override
118
  public Table transformOutboundTable(Table table) {
119
    String originalDatabaseName = table.getDbName();
1✔
120
    String databaseName = metaStoreMapping.transformOutboundDatabaseName(originalDatabaseName);
1✔
121
    table.setDbName(databaseName);
1✔
122
    if (databaseName.equalsIgnoreCase(originalDatabaseName)) {
1✔
123
      // Skip all the view parsing if nothing is going to change, the parsing is not without problems and we can't catch
124
      // all use cases here. For instance Presto creates views that are stored in these fields and this is stored
125
      // differently than Hive. There might be others.
126
      return table;
1✔
127
    }
128
    if (table.isSetViewExpandedText()) {
1✔
129
      try {
130
        log.debug("Transforming ViewExpandedText: {}", table.getViewExpandedText());
1✔
131
        table
1✔
132
            .setViewExpandedText(
1✔
133
                queryMapping.transformOutboundDatabaseName(metaStoreMapping, table.getViewExpandedText()));
1✔
134
      } catch (WaggleDanceException e) {
1✔
135
        log.debug("Error while transforming databaseName in ViewExpandedText, keeping original", e);
1✔
136
      }
1✔
137
    }
138
    if (table.isSetViewOriginalText()) {
1✔
139
      try {
140
        log.debug("Transforming ViewOriginalText: {}", table.getViewOriginalText());
1✔
141
        table
1✔
142
            .setViewOriginalText(
1✔
143
                queryMapping.transformOutboundDatabaseName(metaStoreMapping, table.getViewOriginalText()));
1✔
144
      } catch (WaggleDanceException e) {
1✔
145
        // We are hitting a bug in hive (https://issues.apache.org/jira/browse/HIVE-19896) that prevents the
146
        // ViewOriginalText to be parsed, if we leave the ViewOriginalText we'll have the wrong database names in it so
147
        // we set the ViewExpandedText to at least return a "correct" view query string. Hard to see what is the usage
148
        // and impact of this.
149
        log.debug("Error while transforming databaseName in ViewOriginalText, using ViewExpandedText if available", e);
1✔
150
        if (table.isSetViewExpandedText()) {
1✔
151
          table.setViewOriginalText(table.getViewExpandedText());
1✔
152
        }
153
      }
1✔
154
    }
155
    return table;
1✔
156
  }
157

158
  @Override
159
  public Partition transformOutboundPartition(Partition partition) {
160
    partition.setDbName(metaStoreMapping.transformOutboundDatabaseName(partition.getDbName()));
1✔
161
    return partition;
1✔
162
  }
163

164
  @Override
165
  public ISchema transformOutboundISchema(ISchema iSchema) {
166
    iSchema.setDbName(metaStoreMapping.transformOutboundDatabaseName(iSchema.getDbName()));
1✔
167
    return iSchema;
1✔
168
  }
169

170
  @Override
171
  public Table transformInboundTable(Table table) {
172
    table.setDbName(metaStoreMapping.transformInboundDatabaseName(table.getDbName()));
1✔
173
    return table;
1✔
174
  }
175

176
  @Override
177
  public Partition transformInboundPartition(Partition partition) {
178
    partition.setDbName(metaStoreMapping.transformInboundDatabaseName(partition.getDbName()));
1✔
179
    return partition;
1✔
180
  }
181

182
  @Override
183
  public ISchema transformInboundISchema(ISchema iSchema) {
184
    iSchema.setDbName(metaStoreMapping.transformInboundDatabaseName(iSchema.getDbName()));
1✔
185
    return iSchema;
1✔
186
  }
187

188
  @Override
189
  public Function transformOutboundFunction(Function function) {
190
    function.setDbName(metaStoreMapping.transformOutboundDatabaseName(function.getDbName()));
1✔
191
    return function;
1✔
192
  }
193

194
  @Override
195
  public HiveObjectRef transformInboundHiveObjectRef(HiveObjectRef obj) {
196
    obj.setDbName(metaStoreMapping.transformInboundDatabaseName(obj.getDbName()));
1✔
197
    if (obj.getObjectName() != null && obj.getObjectType() == HiveObjectType.DATABASE) {
1✔
198
      obj.setObjectName(metaStoreMapping.transformInboundDatabaseName(obj.getObjectName()));
1✔
199
    }
200
    return obj;
1✔
201
  }
202

203
  @Override
204
  public HiveObjectRef transformOutboundHiveObjectRef(HiveObjectRef obj) {
205
    obj.setDbName(metaStoreMapping.transformOutboundDatabaseName(obj.getDbName()));
1✔
206
    if (obj.getObjectType() == HiveObjectType.DATABASE) {
1✔
207
      obj.setObjectName(metaStoreMapping.transformOutboundDatabaseName(obj.getObjectName()));
1✔
208
    }
209
    return obj;
1✔
210
  }
211

212
  @Override
213
  public PartitionSpec transformOutboundPartitionSpec(PartitionSpec partitionSpec) {
214
    partitionSpec.setDbName(metaStoreMapping.transformOutboundDatabaseName(partitionSpec.getDbName()));
1✔
215
    return partitionSpec;
1✔
216
  }
217

218
  @Override
219
  public PartitionsStatsRequest transformInboundPartitionsStatsRequest(PartitionsStatsRequest request) {
220
    request.setDbName(metaStoreMapping.transformInboundDatabaseName(request.getDbName()));
1✔
221
    return request;
1✔
222
  }
223

224
  @Override
225
  public TableStatsRequest transformInboundTableStatsRequest(TableStatsRequest request) {
226
    request.setDbName(metaStoreMapping.transformInboundDatabaseName(request.getDbName()));
1✔
227
    return request;
1✔
228
  }
229

230
  @Override
231
  public PartitionsByExprRequest transformInboundPartitionsByExprRequest(PartitionsByExprRequest req) {
232
    req.setDbName(metaStoreMapping.transformInboundDatabaseName(req.getDbName()));
1✔
233
    return req;
1✔
234
  }
235

236
  @Override
237
  public PartitionsByExprResult transformOutboundPartitionsByExprResult(PartitionsByExprResult result) {
238
    result.setPartitions(transformOutboundPartitions(result.getPartitions()));
1✔
239
    return result;
1✔
240
  }
241

242
  @Override
243
  public Iface getClient() {
244
    return metaStoreMapping.getClient();
1✔
245
  }
246

247
  @Override
248
  public String transformOutboundDatabaseName(String databaseName) {
249
    databaseName = GrammarUtils.removeCatName(databaseName);
1✔
250
    return metaStoreMapping.transformOutboundDatabaseName(databaseName);
1✔
251
  }
252

253
  @Override
254
  public List<String> transformOutboundDatabaseNameMultiple(String databaseName) {
255
    databaseName = GrammarUtils.removeCatName(databaseName);
1✔
256
    return metaStoreMapping.transformOutboundDatabaseNameMultiple(databaseName);
1✔
257
  }
258

259
  @Override
260
  public Database transformOutboundDatabase(Database database) {
261
    return metaStoreMapping.transformOutboundDatabase(database);
1✔
262
  }
263

264
  @Override
265
  public String transformInboundDatabaseName(String databaseName) {
266
    databaseName = GrammarUtils.removeCatName(databaseName);
1✔
267
    return metaStoreMapping.transformInboundDatabaseName(databaseName);
1✔
268
  }
269

270
  @Override
271
  public String getDatabasePrefix() {
272
    return metaStoreMapping.getDatabasePrefix();
1✔
273
  }
274

275
  @Override
276
  public String getMetastoreMappingName() {
277
    return metaStoreMapping.getMetastoreMappingName();
1✔
278
  }
279

280
  @Override
281
  public CacheFileMetadataRequest transformInboundCacheFileMetadataRequest(CacheFileMetadataRequest req) {
282
    req.setDbName(metaStoreMapping.transformInboundDatabaseName(req.getDbName()));
1✔
283
    return req;
1✔
284
  }
285

286
  @Override
287
  public FireEventRequest transformInboundFireEventRequest(FireEventRequest rqst) {
288
    rqst.setDbName(metaStoreMapping.transformInboundDatabaseName(rqst.getDbName()));
1✔
289
    return rqst;
1✔
290
  }
291

292
  @Override
293
  public ForeignKeysRequest transformInboundForeignKeysRequest(ForeignKeysRequest request) {
294
    String parentDbName = request.getParent_db_name() == null ? null
1✔
295
        : metaStoreMapping.transformInboundDatabaseName(request.getParent_db_name());
1✔
296
    String foreignDbName = request.getForeign_db_name() == null ? null
1✔
297
        : metaStoreMapping.transformInboundDatabaseName(request.getForeign_db_name());
1✔
298

299
    request.setParent_db_name(parentDbName);
1✔
300
    request.setForeign_db_name(foreignDbName);
1✔
301
    return request;
1✔
302
  }
303

304
  @Override
305
  public ForeignKeysResponse transformOutboundForeignKeysResponse(ForeignKeysResponse response) {
306
    for (SQLForeignKey key : response.getForeignKeys()) {
1✔
307
      key.setPktable_db(metaStoreMapping.transformOutboundDatabaseName(key.getPktable_db()));
1✔
308
      key.setFktable_db(metaStoreMapping.transformOutboundDatabaseName(key.getFktable_db()));
1✔
309
    }
1✔
310
    return response;
1✔
311
  }
312

313
  @Override
314
  public PrimaryKeysRequest transformInboundPrimaryKeysRequest(PrimaryKeysRequest request) {
315
    request.setDb_name(metaStoreMapping.transformInboundDatabaseName(request.getDb_name()));
1✔
316
    return request;
1✔
317
  }
318

319
  @Override
320
  public PrimaryKeysResponse transformOutboundPrimaryKeysResponse(PrimaryKeysResponse response) {
321
    for (SQLPrimaryKey key : response.getPrimaryKeys()) {
1✔
322
      key.setTable_db(metaStoreMapping.transformOutboundDatabaseName(key.getTable_db()));
1✔
323
    }
1✔
324
    return response;
1✔
325
  }
326

327
  @Override
328
  public TableMeta transformOutboundTableMeta(TableMeta tableMeta) {
329
    tableMeta.setDbName(metaStoreMapping.transformOutboundDatabaseName(tableMeta.getDbName()));
1✔
330
    return tableMeta;
1✔
331
  }
332

333
  @Override
334
  public AddDynamicPartitions transformInboundAddDynamicPartitions(AddDynamicPartitions request) {
335
    request.setDbname(metaStoreMapping.transformInboundDatabaseName(request.getDbname()));
1✔
336
    return request;
1✔
337
  }
338

339
  @Override
340
  public void close() throws IOException {
341
    metaStoreMapping.close();
1✔
342
  }
1✔
343

344
  @Override
345
  public boolean isAvailable() {
346
    return metaStoreMapping.isAvailable();
1✔
347
  }
348

349
  @Override
350
  public MetaStoreMapping checkWritePermissions(String databaseName) throws IllegalArgumentException {
351
    databaseName = GrammarUtils.removeCatName(databaseName);
1✔
352
    return metaStoreMapping.checkWritePermissions(transformInboundDatabaseName(databaseName));
1✔
353
  }
354

355
  @Override
356
  public DropConstraintRequest transformInboundDropConstraintRequest(DropConstraintRequest request) {
357
    request.setDbname(metaStoreMapping.transformInboundDatabaseName(request.getDbname()));
1✔
358
    return request;
1✔
359
  }
360

361
  @Override
362
  public AddPartitionsRequest transformInboundAddPartitionsRequest(AddPartitionsRequest request) {
363
    request.setDbName(metaStoreMapping.transformInboundDatabaseName(request.getDbName()));
1✔
364
    request.setParts(transformInboundPartitions(request.getParts()));
1✔
365
    return request;
1✔
366
  }
367

368
  @Override
369
  public AddPartitionsResult transformOutboundAddPartitionsResult(AddPartitionsResult result) {
370
    result.setPartitions(transformOutboundPartitions(result.getPartitions()));
1✔
371
    return result;
1✔
372
  }
373

374
  @Override
375
  public DropPartitionsRequest transformInboundDropPartitionRequest(DropPartitionsRequest request) {
376
    request.setDbName(metaStoreMapping.transformInboundDatabaseName(request.getDbName()));
1✔
377
    return request;
1✔
378
  }
379

380
  @Override
381
  public DropPartitionsResult transformOutboundDropPartitionsResult(DropPartitionsResult result) {
382
    result.setPartitions(transformOutboundPartitions(result.getPartitions()));
1✔
383
    return result;
1✔
384
  }
385

386
  @Override
387
  public List<Partition> transformOutboundPartitions(List<Partition> partitions) {
388
    for (Partition partition : partitions) {
1✔
389
      transformOutboundPartition(partition);
1✔
390
    }
1✔
391
    return partitions;
1✔
392
  }
393

394
  @Override
395
  public List<PartitionSpec> transformOutboundPartitionSpecs(List<PartitionSpec> partitionSpecs) {
396
    for (PartitionSpec partitionSpec : partitionSpecs) {
1✔
397
      transformOutboundPartitionSpec(partitionSpec);
1✔
398
    }
1✔
399
    return partitionSpecs;
1✔
400
  }
401

402
  @Override
403
  public List<Partition> transformInboundPartitions(List<Partition> partitions) {
404
    for (Partition partition : partitions) {
1✔
405
      transformInboundPartition(partition);
1✔
406
    }
1✔
407
    return partitions;
1✔
408
  }
409

410
  @Override
411
  public List<ISchema> transformOutboundISchemas(List<ISchema> iSchemaList) {
412
    for (ISchema iSchema : iSchemaList) {
1✔
413
      transformOutboundISchema(iSchema);
1✔
414
    }
1✔
415
    return iSchemaList;
1✔
416
  }
417

418
  @Override
419
  public ColumnStatistics transformInboundColumnStatistics(ColumnStatistics columnStatistics) {
420
    columnStatistics
1✔
421
        .getStatsDesc()
1✔
422
        .setDbName(metaStoreMapping.transformInboundDatabaseName(columnStatistics.getStatsDesc().getDbName()));
1✔
423
    return columnStatistics;
1✔
424
  }
425

426
  @Override
427
  public ColumnStatistics transformOutboundColumnStatistics(ColumnStatistics columnStatistics) {
428
    columnStatistics
1✔
429
        .getStatsDesc()
1✔
430
        .setDbName(metaStoreMapping.transformOutboundDatabaseName(columnStatistics.getStatsDesc().getDbName()));
1✔
431
    return columnStatistics;
1✔
432
  }
433

434
  @Override
435
  public SetPartitionsStatsRequest transformInboundSetPartitionStatsRequest(SetPartitionsStatsRequest request) {
436
    if (request.isSetColStats()) {
1✔
437
      for (ColumnStatistics stats : request.getColStats()) {
1✔
438
        transformInboundColumnStatistics(stats);
1✔
439
      }
1✔
440
    }
441
    return request;
1✔
442
  }
443

444
  @Override
445
  public Function transformInboundFunction(Function function) {
446
    function.setDbName(metaStoreMapping.transformInboundDatabaseName(function.getDbName()));
1✔
447
    return function;
1✔
448
  }
449

450
  @Override
451
  public List<HiveObjectPrivilege> transformOutboundHiveObjectPrivileges(List<HiveObjectPrivilege> privileges) {
452
    for (HiveObjectPrivilege privilege : privileges) {
1✔
453
      privilege.setHiveObject(transformOutboundHiveObjectRef(privilege.getHiveObject()));
1✔
454
    }
1✔
455
    return privileges;
1✔
456
  }
457

458
  @Override
459
  public PrivilegeBag transformInboundPrivilegeBag(PrivilegeBag privilegeBag) {
460
    if (privilegeBag.isSetPrivileges()) {
1✔
461
      for (HiveObjectPrivilege privilege : privilegeBag.getPrivileges()) {
1✔
462
        privilege.setHiveObject(transformInboundHiveObjectRef(privilege.getHiveObject()));
1✔
463
      }
1✔
464
    }
465
    return privilegeBag;
1✔
466
  }
467

468
  @Override
469
  public GrantRevokePrivilegeRequest transformInboundGrantRevokePrivilegesRequest(GrantRevokePrivilegeRequest request) {
470
    if (request.isSetPrivileges()) {
1✔
471
      request.setPrivileges(transformInboundPrivilegeBag(request.getPrivileges()));
1✔
472
    }
473
    return request;
1✔
474
  }
475

476
  @Override
477
  public LockRequest transformInboundLockRequest(LockRequest request) {
478
    if (request.isSetComponent()) {
1✔
479
      for (LockComponent component : request.getComponent()) {
1✔
480
        component.setDbname(metaStoreMapping.transformInboundDatabaseName(component.getDbname()));
1✔
481
      }
1✔
482
    }
483
    return request;
1✔
484
  }
485

486
  @Override
487
  public CompactionRequest transformInboundCompactionRequest(CompactionRequest request) {
488
    request.setDbname(metaStoreMapping.transformInboundDatabaseName(request.getDbname()));
1✔
489
    return request;
1✔
490
  }
491

492
  @Override
493
  public void createDatabase(Database database)
494
    throws AlreadyExistsException, InvalidObjectException, MetaException, TException {
495
    metaStoreMapping.createDatabase(database);
1✔
496
  }
1✔
497

498
  @Override
499
  public Database transformInboundDatabase(Database database) {
500
    database.setName(metaStoreMapping.transformInboundDatabaseName(database.getName()));
1✔
501
    return database;
1✔
502
  }
503

504
  @Override
505
  public List<PartitionSpec> transformInboundPartitionSpecs(List<PartitionSpec> partitionSpecs) {
506
    for (PartitionSpec partitionSpec : partitionSpecs) {
1✔
507
      partitionSpec.setDbName(metaStoreMapping.transformInboundDatabaseName(partitionSpec.getDbName()));
1✔
508
    }
1✔
509
    return partitionSpecs;
1✔
510
  }
511

512
  @Override
513
  public GetTableRequest transformInboundGetTableRequest(GetTableRequest request) {
514
    request.setDbName(metaStoreMapping.transformInboundDatabaseName(request.getDbName()));
1✔
515
    cleanupClientCapabilities(request.getCapabilities());
1✔
516
    return request;
1✔
517
  }
518

519
  private void cleanupClientCapabilities(ClientCapabilities clientCapabilities) {
520
    if (clientCapabilities != null) {
1✔
521
      List<ClientCapability> values = new ArrayList<>();
1✔
522
      for (ClientCapability value : clientCapabilities.getValues()) {
1✔
523
        if (value != null) {
1✔
524
          values.add(value);
1✔
525
        }
526
      }
1✔
527
      clientCapabilities.setValues(values);
1✔
528
    }
529
  }
1✔
530

531
  @Override
532
  public GetTableResult transformOutboundGetTableResult(GetTableResult result) {
533
    transformOutboundTable(result.getTable());
1✔
534
    return result;
1✔
535
  }
536

537
  @Override
538
  public GetTablesRequest transformInboundGetTablesRequest(GetTablesRequest request) {
539
    request.setDbName(metaStoreMapping.transformInboundDatabaseName(request.getDbName()));
1✔
540
    cleanupClientCapabilities(request.getCapabilities());
1✔
541
    return request;
1✔
542
  }
543

544
  @Override
545
  public GetTablesResult transformOutboundGetTablesResult(GetTablesResult result) {
546
    for (Table table : result.getTables()) {
1✔
547
      transformOutboundTable(table);
1✔
548
    }
1✔
549
    return result;
1✔
550
  }
551

552
  @Override
553
  public PartitionValuesRequest transformInboundPartitionValuesRequest(PartitionValuesRequest request) {
554
    request.setDbName(transformInboundDatabaseName(request.getDbName()));
1✔
555
    return request;
1✔
556
  }
557

558
  @Override
559
  public List<SQLPrimaryKey> transformInboundSQLPrimaryKeys(List<SQLPrimaryKey> sqlPrimaryKeys) {
560
    for(SQLPrimaryKey sqlPrimaryKey: sqlPrimaryKeys) {
×
561
      sqlPrimaryKey.setTable_db(transformInboundDatabaseName(sqlPrimaryKey.getTable_db()));
×
562
    }
×
563
    return sqlPrimaryKeys;
×
564
  }
565

566
  @Override
567
  public List<SQLForeignKey> transformInboundSQLForeignKeys(List<SQLForeignKey> sqlForeignKeys) {
568
    for(SQLForeignKey sqlForeignKey: sqlForeignKeys) {
×
569
      sqlForeignKey.setPktable_db(transformInboundDatabaseName(sqlForeignKey.getPktable_db()));
×
570
      sqlForeignKey.setFktable_db(transformInboundDatabaseName(sqlForeignKey.getFktable_db()));
×
571
    }
×
572
    return sqlForeignKeys;
×
573
  }
574

575
  @Override
576
  public List<SQLUniqueConstraint> transformInboundSQLUniqueConstraints(List<SQLUniqueConstraint> sqlUniqueConstraints) {
577
    for(SQLUniqueConstraint sqlUniqueConstraint: sqlUniqueConstraints) {
×
578
      sqlUniqueConstraint.setTable_db(transformInboundDatabaseName(sqlUniqueConstraint.getTable_db()));
×
579
    }
×
580
    return sqlUniqueConstraints;
×
581
  }
582

583
  @Override
584
  public List<SQLNotNullConstraint> transformInboundSQLNotNullConstraints(List<SQLNotNullConstraint> sqlNotNullConstraints) {
585
    for(SQLNotNullConstraint sqlNotNullConstraint: sqlNotNullConstraints) {
×
586
      sqlNotNullConstraint.setTable_db(transformInboundDatabaseName(sqlNotNullConstraint.getTable_db()));
×
587
    }
×
588
    return sqlNotNullConstraints;
×
589
  }
590

591
  @Override
592
  public List<SQLDefaultConstraint> transformInboundSQLDefaultConstraints(List<SQLDefaultConstraint> sqlDefaultConstraints) {
593
    for(SQLDefaultConstraint sqlDefaultConstraint: sqlDefaultConstraints) {
×
594
      sqlDefaultConstraint.setTable_db(transformInboundDatabaseName(sqlDefaultConstraint.getTable_db()));
×
595
    }
×
596
    return sqlDefaultConstraints;
×
597
  }
598

599
  @Override
600
  public List<SQLCheckConstraint> transformInboundSQLCheckConstraints(List<SQLCheckConstraint> sqlCheckConstraints) {
601
    for(SQLCheckConstraint sqlCheckConstraint: sqlCheckConstraints) {
×
602
      sqlCheckConstraint.setTable_db(transformInboundDatabaseName(sqlCheckConstraint.getTable_db()));
×
603
    }
×
604
    return sqlCheckConstraints;
×
605
  }
606

607

608
  @Override
609
  public ReplTblWriteIdStateRequest transformInboundReplTblWriteIdStateRequest(ReplTblWriteIdStateRequest request) {
610
    request.setDbName(transformInboundDatabaseName(request.getDbName()));
×
611
    return request;
×
612
  }
613

614

615
  @Override
616
  public AllocateTableWriteIdsRequest transformInboundAllocateTableWriteIdsRequest(AllocateTableWriteIdsRequest request) {
617
    request.setDbName(transformInboundDatabaseName(request.getDbName()));
×
618
    return request;
×
619
  }
620

621

622
  @Override
623
  public AlterISchemaRequest transformInboundAlterISchemaRequest(AlterISchemaRequest request) {
624
    if(request.getName() !=null) {
×
625
      request.setName(transformInboundISchemaName(request.getName()));
×
626
    }
627
    if(request.getNewSchema() != null) {
×
628
      request.setNewSchema(transformInboundISchema(request.getNewSchema()));
×
629
    }
630
    return request;
×
631
  }
632

633

634
  @Override
635
  public SchemaVersion transformInboundSchemaVersion(SchemaVersion schemaVersion) {
636
    if(schemaVersion.getSchema() !=null ) {
×
637
      schemaVersion.getSchema().setDbName(transformInboundDatabaseName(schemaVersion.getSchema().getDbName()));
×
638
    }
639
    return schemaVersion;
×
640
  }
641

642

643
  @Override
644
  public SchemaVersion transformOutboundSchemaVersion(SchemaVersion schemaVersion) {
645
    if(schemaVersion.getSchema() !=null ) {
×
646
      schemaVersion.getSchema().setDbName(metaStoreMapping.transformOutboundDatabaseName(
×
647
              schemaVersion.getSchema().getDbName()));
×
648
    }
649
    return schemaVersion;
×
650
  }
651

652
  @Override
653
  public List<SchemaVersion> transformOutboundSchemaVersions(List<SchemaVersion> schemaVersions) {
654
    for(SchemaVersion schemaVersion: schemaVersions) {
×
655
      transformOutboundSchemaVersion(schemaVersion);
×
656
    }
×
657
    return schemaVersions;
×
658
  }
659

660
  @Override
661
  public ISchemaName transformInboundISchemaName(ISchemaName iSchemaName) {
662
    iSchemaName.setDbName(transformInboundDatabaseName(iSchemaName.getDbName()));
×
663
    return iSchemaName;
×
664
  }
665

666
  @Override
667
  public ISchemaName transformOutboundISchemaName(ISchemaName iSchemaName) {
668
    iSchemaName.setDbName(transformOutboundDatabaseName(iSchemaName.getDbName()));
×
669
    return iSchemaName;
×
670
  }
671

672
  @Override
673
  public AddForeignKeyRequest transformInboundAddForeignKeyRequest(AddForeignKeyRequest request) {
674
    for(SQLForeignKey sqlForeignKey: request.getForeignKeyCols()) {
×
675
      sqlForeignKey.setPktable_db(transformInboundDatabaseName(sqlForeignKey.getPktable_db()));
×
676
      sqlForeignKey.setFktable_db(transformInboundDatabaseName(sqlForeignKey.getFktable_db()));
×
677
    }
×
678
    return request;
×
679
  }
680

681

682
  @Override
683
  public AddUniqueConstraintRequest transformInboundAddUniqueConstraintRequest(AddUniqueConstraintRequest request) {
684
    for(SQLUniqueConstraint sqlUniqueConstraint: request.getUniqueConstraintCols()) {
×
685
      sqlUniqueConstraint.setTable_db(transformInboundDatabaseName(sqlUniqueConstraint.getTable_db()));
×
686
    }
×
687
    return request;
×
688
  }
689

690

691
  @Override
692
  public AddNotNullConstraintRequest transformInboundAddNotNullConstraintRequest(AddNotNullConstraintRequest request) {
693
    for(SQLNotNullConstraint sqlNotNullConstraint: request.getNotNullConstraintCols()) {
×
694
      sqlNotNullConstraint.setTable_db(transformInboundDatabaseName(sqlNotNullConstraint.getTable_db()));
×
695
    }
×
696
    return request;
×
697
  }
698

699

700
  @Override
701
  public AddDefaultConstraintRequest transformInboundAddDefaultConstraintRequest(AddDefaultConstraintRequest request) {
702
    for(SQLDefaultConstraint sqlDefaultConstraint: request.getDefaultConstraintCols()) {
×
703
      sqlDefaultConstraint.setTable_db(transformInboundDatabaseName(sqlDefaultConstraint.getTable_db()));
×
704
    }
×
705
    return request;
×
706
  }
707

708

709
  @Override
710
  public AddCheckConstraintRequest transformInboundAddCheckConstraintRequest(AddCheckConstraintRequest request) {
711
    for(SQLCheckConstraint sqlCheckConstraint: request.getCheckConstraintCols()) {
×
712
      sqlCheckConstraint.setTable_db(transformInboundDatabaseName(sqlCheckConstraint.getTable_db()));
×
713
    }
×
714
    return request;
×
715
  }
716

717

718
  @Override
719
  public FindSchemasByColsResp transformOutboundFindSchemasByColsResp(FindSchemasByColsResp response) {
720
    for(SchemaVersionDescriptor schemaVersionDescriptor: response.getSchemaVersions()) {
×
721
      if(schemaVersionDescriptor.getSchema() != null) {
×
722
        schemaVersionDescriptor.setSchema(transformOutboundISchemaName(schemaVersionDescriptor.getSchema()));
×
723
      }
724
    }
×
725
    return response;
×
726
  }
727

728

729
  @Override
730
  public SchemaVersionDescriptor transformInboundSchemaVersionDescriptor(SchemaVersionDescriptor request) {
731
    if(request.getSchema() !=null) {
×
732
      request.getSchema().setDbName(transformInboundDatabaseName(request.getSchema().getDbName()));
×
733
    }
734
    return request;
×
735
  }
736

737

738
  @Override
739
  public MapSchemaVersionToSerdeRequest transformInboundMapSchemaVersionToSerdeRequest(MapSchemaVersionToSerdeRequest request) {
740
    if(request.getSchemaVersion() != null && request.getSchemaVersion().getSchema() !=null) {
×
741
      request.getSchemaVersion().getSchema().setDbName(transformInboundDatabaseName(
×
742
              request.getSchemaVersion().getSchema().getDbName()));
×
743
    }
744
    return request;
×
745
  }
746

747

748
  @Override
749
  public SetSchemaVersionStateRequest transformInboundSetSchemaVersionStateRequest(SetSchemaVersionStateRequest request) {
750
    if(request.getSchemaVersion() != null && request.getSchemaVersion().getSchema() !=null) {
×
751
      request.getSchemaVersion().getSchema().setDbName(transformInboundDatabaseName(
×
752
              request.getSchemaVersion().getSchema().getDbName()));
×
753
    }
754
    return request;
×
755
  }
756

757

758
  @Override
759
  public NotificationEventsCountRequest transformInboundNotificationEventsCountRequest(NotificationEventsCountRequest request) {
760
    request.setDbName(transformInboundDatabaseName(request.getDbName()));
×
761
    return request;
×
762
  }
763

764

765
  @Override
766
  public UniqueConstraintsRequest transformInboundUniqueConstraintsRequest(UniqueConstraintsRequest request) {
767
    request.setDb_name(transformInboundDatabaseName(request.getDb_name()));
×
768
    return request;
×
769
  }
770

771
  @Override
772
  public UniqueConstraintsResponse transformOutboundUniqueConstraintsResponse(UniqueConstraintsResponse response) {
773
    for(SQLUniqueConstraint sqlUniqueConstraint: response.getUniqueConstraints()) {
×
774
      sqlUniqueConstraint.setTable_db(transformOutboundDatabaseName(sqlUniqueConstraint.getTable_db()));
×
775
    }
×
776
    return response;
×
777
  }
778

779

780
  @Override
781
  public NotNullConstraintsRequest transformInboundNotNullConstraintsRequest(NotNullConstraintsRequest request) {
782
    request.setDb_name(transformInboundDatabaseName(request.getDb_name()));
×
783
    return request;
×
784
  }
785

786
  @Override
787
  public NotNullConstraintsResponse transformOutboundNotNullConstraintsResponse(NotNullConstraintsResponse response) {
788
    for(SQLNotNullConstraint sqlNotNullConstraint: response.getNotNullConstraints()) {
×
789
      sqlNotNullConstraint.setTable_db(transformOutboundDatabaseName(sqlNotNullConstraint.getTable_db()));
×
790
    }
×
791
    return response;
×
792
  }
793

794

795
  @Override
796
  public DefaultConstraintsRequest transformInboundDefaultConstraintsRequest(DefaultConstraintsRequest request) {
797
    request.setDb_name(transformInboundDatabaseName(request.getDb_name()));
×
798
    return request;
×
799
  }
800

801
  @Override
802
  public DefaultConstraintsResponse transformOutboundDefaultConstraintsResponse(DefaultConstraintsResponse response) {
803
    for(SQLDefaultConstraint sqlDefaultConstraint: response.getDefaultConstraints()) {
×
804
      sqlDefaultConstraint.setTable_db(transformOutboundDatabaseName(sqlDefaultConstraint.getTable_db()));
×
805
    }
×
806
    return response;
×
807
  }
808

809

810
  @Override
811
  public CheckConstraintsRequest transformInboundCheckConstraintsRequest(CheckConstraintsRequest request) {
812
    request.setDb_name(transformInboundDatabaseName(request.getDb_name()));
×
813
    return request;
×
814
  }
815

816
  @Override
817
  public CheckConstraintsResponse transformOutboundCheckConstraintsResponse(CheckConstraintsResponse response) {
818
    for(SQLCheckConstraint sqlCheckConstraint: response.getCheckConstraints()) {
×
819
      sqlCheckConstraint.setTable_db(transformOutboundDatabaseName(sqlCheckConstraint.getTable_db()));
×
820
    }
×
821
    return response;
×
822
  }
823

824

825
  @Override
826
  public CreationMetadata transformInboundCreationMetadata(CreationMetadata request) {
827
    request.setDbName(transformInboundDatabaseName(request.getDbName()));
×
828
    return request;
×
829
  }
830

831

832
  @Override
833
  public long getLatency() {
834
    return metaStoreMapping.getLatency();
1✔
835
  }
836

837
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc