@Override public boolean equals(Object obj) { if (this == obj) { return true; } if ((obj == null) || (getClass() != obj.getClass())) { return false; } KuduTableHandle other = (KuduTableHandle) obj; return Objects.equals(this.connectorId, other.connectorId) && this.schemaTableName .equals(other.getSchemaTableName()); }
public InternalTable getInformationSchemaTable(Session session, String catalog, SchemaTableName table, Set<QualifiedTablePrefix> prefixes) { if (table.equals(TABLE_COLUMNS)) { return buildColumns(session, prefixes); } if (table.equals(TABLE_TABLES)) { return buildTables(session, prefixes); } if (table.equals(TABLE_VIEWS)) { return buildViews(session, prefixes); } if (table.equals(TABLE_SCHEMATA)) { return buildSchemata(session, catalog); } if (table.equals(TABLE_TABLE_PRIVILEGES)) { return buildTablePrivileges(session, prefixes); } if (table.equals(TABLE_ROLES)) { return buildRoles(session, catalog); } if (table.equals(TABLE_APPLICABLE_ROLES)) { return buildApplicableRoles(session, catalog); } if (table.equals(TABLE_ENABLED_ROLES)) { return buildEnabledRoles(session, catalog); } throw new IllegalArgumentException(format("table does not exist: %s", table)); }
public InternalTable getInformationSchemaTable(Session session, String catalog, SchemaTableName table, Set<QualifiedTablePrefix> prefixes) { if (table.equals(TABLE_COLUMNS)) { return buildColumns(session, prefixes); } if (table.equals(TABLE_TABLES)) { return buildTables(session, prefixes); } if (table.equals(TABLE_VIEWS)) { return buildViews(session, prefixes); } if (table.equals(TABLE_SCHEMATA)) { return buildSchemata(session, catalog); } if (table.equals(TABLE_TABLE_PRIVILEGES)) { return buildTablePrivileges(session, prefixes); } if (table.equals(TABLE_ROLES)) { return buildRoles(session, catalog); } if (table.equals(TABLE_APPLICABLE_ROLES)) { return buildApplicableRoles(session, catalog); } if (table.equals(TABLE_ENABLED_ROLES)) { return buildEnabledRoles(session, catalog); } throw new IllegalArgumentException(format("table does not exist: %s", table)); }
private boolean checkTablePermission( ConnectorTransactionHandle transaction, ConnectorIdentity identity, SchemaTableName tableName, HivePrivilege requiredPrivilege, boolean grantOptionRequired) { if (isAdmin(transaction, identity)) { return true; } if (tableName.equals(ROLES)) { return false; } if (INFORMATION_SCHEMA_NAME.equals(tableName.getSchemaName())) { return true; } SemiTransactionalHiveMetastore metastore = metastoreProvider.apply(((HiveTransactionHandle) transaction)); return listEnabledTablePrivileges(metastore, tableName.getSchemaName(), tableName.getTableName(), identity) .filter(privilegeInfo -> !grantOptionRequired || privilegeInfo.isGrantOption()) .anyMatch(privilegeInfo -> privilegeInfo.getHivePrivilege().equals(requiredPrivilege)); }
@Override public Void visitTableWriter(TableWriterNode node, Void context) { TableWriterNode.WriterTarget writerTarget = node.getTarget(); if (writerTarget instanceof TableWriterNode.CreateHandle) { connectorId = ((TableWriterNode.CreateHandle) writerTarget).getHandle().getConnectorId(); checkState(schemaTableName == null || schemaTableName.equals(((TableWriterNode.CreateHandle) writerTarget).getSchemaTableName()), "cannot have more than a single create, insert or delete in a query"); schemaTableName = ((TableWriterNode.CreateHandle) writerTarget).getSchemaTableName(); } if (writerTarget instanceof TableWriterNode.InsertHandle) { connectorId = ((TableWriterNode.InsertHandle) writerTarget).getHandle().getConnectorId(); checkState(schemaTableName == null || schemaTableName.equals(((TableWriterNode.InsertHandle) writerTarget).getSchemaTableName()), "cannot have more than a single create, insert or delete in a query"); schemaTableName = ((TableWriterNode.InsertHandle) writerTarget).getSchemaTableName(); } if (writerTarget instanceof TableWriterNode.DeleteHandle) { connectorId = ((TableWriterNode.DeleteHandle) writerTarget).getHandle().getConnectorId(); checkState(schemaTableName == null || schemaTableName.equals(((TableWriterNode.DeleteHandle) writerTarget).getSchemaTableName()), "cannot have more than a single create, insert or delete in a query"); schemaTableName = ((TableWriterNode.DeleteHandle) writerTarget).getSchemaTableName(); } return null; }
@Override public Void visitTableWriter(TableWriterNode node, Void context) { TableWriterNode.WriterTarget writerTarget = node.getTarget(); if (writerTarget instanceof TableWriterNode.CreateHandle) { connectorId = ((TableWriterNode.CreateHandle) writerTarget).getHandle().getConnectorId(); checkState(schemaTableName == null || schemaTableName.equals(((TableWriterNode.CreateHandle) writerTarget).getSchemaTableName()), "cannot have more than a single create, insert or delete in a query"); schemaTableName = ((TableWriterNode.CreateHandle) writerTarget).getSchemaTableName(); } if (writerTarget instanceof TableWriterNode.InsertHandle) { connectorId = ((TableWriterNode.InsertHandle) writerTarget).getHandle().getConnectorId(); checkState(schemaTableName == null || schemaTableName.equals(((TableWriterNode.InsertHandle) writerTarget).getSchemaTableName()), "cannot have more than a single create, insert or delete in a query"); schemaTableName = ((TableWriterNode.InsertHandle) writerTarget).getSchemaTableName(); } if (writerTarget instanceof TableWriterNode.DeleteHandle) { connectorId = ((TableWriterNode.DeleteHandle) writerTarget).getHandle().getConnectorId(); checkState(schemaTableName == null || schemaTableName.equals(((TableWriterNode.DeleteHandle) writerTarget).getSchemaTableName()), "cannot have more than a single create, insert or delete in a query"); schemaTableName = ((TableWriterNode.DeleteHandle) writerTarget).getSchemaTableName(); } return null; }
@Override public synchronized void alterTable(String databaseName, String tableName, Table newTable) { SchemaTableName oldName = new SchemaTableName(databaseName, tableName); SchemaTableName newName = new SchemaTableName(newTable.getDbName(), newTable.getTableName()); // if the name did not change, this is a simple schema change if (oldName.equals(newName)) { if (relations.replace(oldName, newTable) == null) { throw new TableNotFoundException(oldName); } return; } // remove old table definition and add the new one Table table = relations.get(oldName); if (table == null) { throw new TableNotFoundException(oldName); } if (relations.putIfAbsent(newName, newTable) != null) { throw new TableAlreadyExistsException(newName); } relations.remove(oldName); }
@Override public synchronized void alterTable(String databaseName, String tableName, Table newTable) { SchemaTableName oldName = new SchemaTableName(databaseName, tableName); SchemaTableName newName = new SchemaTableName(newTable.getDbName(), newTable.getTableName()); // if the name did not change, this is a simple schema change if (oldName.equals(newName)) { if (relations.replace(oldName, newTable) == null) { throw new TableNotFoundException(oldName); } return; } // remove old table definition and add the new one Table table = relations.get(oldName); if (table == null) { throw new TableNotFoundException(oldName); } if (relations.putIfAbsent(newName, newTable) != null) { throw new TableAlreadyExistsException(newName); } relations.remove(oldName); }