@Override public DatabaseMetaData getMetaData() throws SQLException { checkOpen(); return new PhoenixDatabaseMetaData(this); }
" and " + COLUMN_FAMILY + " is null" + " and " + TABLE_NAME + " != '" + MetaDataClient.EMPTY_TABLE + "'"); addTenantIdFilter(buf, catalog); if (schemaPattern != null) { buf.append(" and " + TABLE_SCHEM + (schemaPattern.length() == 0 ? " is null" : " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'" )); " from " + SYSTEM_SEQUENCE + "\n"); StringBuilder whereClause = new StringBuilder(); addTenantIdFilter(whereClause, catalog); if (schemaPattern != null) { appendConjunction(whereClause); whereClause.append(SEQUENCE_SCHEMA + (schemaPattern.length() == 0 ? " is null" : " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'\n" )); appendConjunction(whereClause); whereClause.append(SEQUENCE_NAME + " like '" + StringUtil.escapeStringConstant(tableNamePattern) + "'\n" );
@Override public String getDatabaseProductVersion() throws SQLException { return Integer.toString(getDatabaseMajorVersion()) + "." + Integer.toString(getDatabaseMinorVersion()); }
@Override public ResultSet getCatalogs() throws SQLException { StringBuilder buf = new StringBuilder("select \n" + " DISTINCT " + TENANT_ID + " " + TABLE_CAT + " from " + SYSTEM_CATALOG + " " + SYSTEM_CATALOG_ALIAS + " where " + COLUMN_NAME + " is null" + " and " + COLUMN_FAMILY + " is null" + " and " + TENANT_ID + " is not null"); addTenantIdFilter(buf, null); buf.append(" order by " + TENANT_ID); Statement stmt = connection.createStatement(); return stmt.executeQuery(buf.toString()); }
boolean isTenantSpecificConnection = connection.getTenantId() != null; List<Tuple> tuples = Lists.newArrayListWithExpectedSize(10); ResultSet rs = getTables(catalog, schemaPattern, tableNamePattern, null); while (rs.next()) { String schemaName = rs.getString(TABLE_SCHEM); String columnName = column.getName().getString(); if (cfPattern != null && cfPattern.length() > 0) { // if null or empty, will pick up all columns if (columnFamily==null || !match(columnFamily, cfPattern)) { continue; if (!match(columnName, colPattern)) { continue;
@Override public ResultSet getSchemas() throws SQLException { return getSchemas("", null); }
private void addTenantIdFilter(StringBuilder buf, String tenantIdPattern) { PName tenantId = connection.getTenantId(); if (tenantIdPattern == null) { if (tenantId != null) { appendConjunction(buf); buf.append(" (" + TENANT_ID + " IS NULL " + " OR " + TENANT_ID + " = '" + StringUtil.escapeStringConstant(tenantId.getString()) + "') "); } } else if (tenantIdPattern.length() == 0) { appendConjunction(buf); buf.append(TENANT_ID + " IS NULL "); } else { appendConjunction(buf); buf.append(" TENANT_ID LIKE '" + StringUtil.escapeStringConstant(tenantIdPattern) + "' "); if (tenantId != null) { buf.append(" and TENANT_ID = '" + StringUtil.escapeStringConstant(tenantId.getString()) + "' "); } } }
ResultSet rs = getTables(catalog, schemaName, tableName, null); while (rs.next()) { String tenantId = rs.getString(TABLE_CAT);
@Override // TODO does this need to change to use the PARENT_TABLE link public ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) throws SQLException { StringBuilder buf = new StringBuilder("select \n" + TENANT_ID + " " + TABLE_CAT + "," + // Use tenantId for catalog TABLE_SCHEM + "," + TABLE_NAME + "," + COLUMN_FAMILY + " " + SUPERTABLE_NAME + " from " + SYSTEM_CATALOG + " " + SYSTEM_CATALOG_ALIAS + " where " + COLUMN_NAME + " is null" + " and " + LINK_TYPE + " = " + LinkType.PHYSICAL_TABLE.getSerializedValue()); addTenantIdFilter(buf, catalog); if (schemaPattern != null) { buf.append(" and " + TABLE_SCHEM + (schemaPattern.length() == 0 ? " is null" : " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'" )); } if (tableNamePattern != null) { buf.append(" and " + TABLE_NAME + " like '" + StringUtil.escapeStringConstant(tableNamePattern) + "'" ); } buf.append(" order by " + TENANT_ID + "," + TABLE_SCHEM + "," +TABLE_NAME + "," + SUPERTABLE_NAME); Statement stmt = connection.createStatement(); return stmt.executeQuery(buf.toString()); }
boolean isTenantSpecificConnection = connection.getTenantId() != null; List<Tuple> tuples = Lists.newArrayListWithExpectedSize(10); ResultSet rs = getTables(catalog, schemaPattern, tableNamePattern, null); while (rs.next()) { String schemaName = rs.getString(TABLE_SCHEM); String columnName = column.getName().getString(); if (cfPattern != null && cfPattern.length() > 0) { // if null or empty, will pick up all columns if (columnFamily==null || !match(columnFamily, cfPattern)) { continue; if (!match(columnName, colPattern)) { continue;
@Override public ResultSet getSchemas() throws SQLException { return getSchemas("", null); }
private void addTenantIdFilter(StringBuilder buf, String tenantIdPattern) { PName tenantId = connection.getTenantId(); if (tenantIdPattern == null) { if (tenantId != null) { appendConjunction(buf); buf.append(" (" + TENANT_ID + " IS NULL " + " OR " + TENANT_ID + " = '" + StringUtil.escapeStringConstant(tenantId.getString()) + "') "); } } else if (tenantIdPattern.length() == 0) { appendConjunction(buf); buf.append(TENANT_ID + " IS NULL "); } else { appendConjunction(buf); buf.append(" TENANT_ID LIKE '" + StringUtil.escapeStringConstant(tenantIdPattern) + "' "); if (tenantId != null) { buf.append(" and TENANT_ID = '" + StringUtil.escapeStringConstant(tenantId.getString()) + "' "); } } }
ResultSet rs = getTables(catalog, schemaName, tableName, null); while (rs.next()) { String tenantId = rs.getString(TABLE_CAT);
" from " + SYSTEM_CATALOG + " " + SYSTEM_CATALOG_ALIAS + "(" + TENANT_POS_SHIFT + " BOOLEAN)"); StringBuilder where = new StringBuilder(); addTenantIdFilter(where, catalog); if (schemaPattern != null) { appendConjunction(where); where.append(TABLE_SCHEM + (schemaPattern.length() == 0 ? " is null" : " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'" )); appendConjunction(where); where.append(TABLE_NAME + " like '" + StringUtil.escapeStringConstant(tableNamePattern) + "'" ); appendConjunction(where); where.append(COLUMN_FAMILY + " like '" + StringUtil.escapeStringConstant(cfPattern) + "'" ); appendConjunction(where); where.append(COLUMN_NAME + " like '" + StringUtil.escapeStringConstant(colPattern) + "'" ); appendConjunction(where); where.append(COLUMN_NAME + " is not null" ); appendConjunction(where); where.append(LINK_TYPE + " is null" );
@Override public ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException { StringBuilder buf = new StringBuilder("select distinct \n" + TABLE_SCHEM + "," + TENANT_ID + " " + TABLE_CATALOG + " from " + SYSTEM_CATALOG + " " + SYSTEM_CATALOG_ALIAS + " where " + COLUMN_NAME + " is null"); addTenantIdFilter(buf, catalog); if (schemaPattern != null) { buf.append(" and " + TABLE_SCHEM + " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'"); } if (SchemaUtil.isNamespaceMappingEnabled(null, connection.getQueryServices().getProps())) { buf.append(" and " + TABLE_NAME + " = '" + MetaDataClient.EMPTY_TABLE + "'"); } // TODO: we should union this with SYSTEM.SEQUENCE too, but we only have support for // UNION ALL and we really need UNION so that it dedups. Statement stmt = connection.createStatement(); return stmt.executeQuery(buf.toString()); }
@Override public String getDatabaseProductVersion() throws SQLException { return Integer.toString(getDatabaseMajorVersion()) + "." + Integer.toString(getDatabaseMinorVersion()); }
@Override public DatabaseMetaData getMetaData() throws SQLException { checkOpen(); return new PhoenixDatabaseMetaData(this); }
@Override public ResultSet getSchemas() throws SQLException { return getSchemas("", null); }
private void addTenantIdFilter(StringBuilder buf, String tenantIdPattern) { PName tenantId = connection.getTenantId(); if (tenantIdPattern == null) { if (tenantId != null) { appendConjunction(buf); buf.append(" (" + TENANT_ID + " IS NULL " + " OR " + TENANT_ID + " = '" + StringUtil.escapeStringConstant(tenantId.getString()) + "') "); } } else if (tenantIdPattern.length() == 0) { appendConjunction(buf); buf.append(TENANT_ID + " IS NULL "); } else { appendConjunction(buf); buf.append(" TENANT_ID LIKE '" + StringUtil.escapeStringConstant(tenantIdPattern) + "' "); if (tenantId != null) { buf.append(" and TENANT_ID = '" + StringUtil.escapeStringConstant(tenantId.getString()) + "' "); } } }
" and " + COLUMN_FAMILY + " is null" + " and " + TABLE_NAME + " != '" + MetaDataClient.EMPTY_TABLE + "'"); addTenantIdFilter(buf, catalog); if (schemaPattern != null) { buf.append(" and " + TABLE_SCHEM + (schemaPattern.length() == 0 ? " is null" : " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'" )); " from " + SYSTEM_SEQUENCE + "\n"); StringBuilder whereClause = new StringBuilder(); addTenantIdFilter(whereClause, catalog); if (schemaPattern != null) { appendConjunction(whereClause); whereClause.append(SEQUENCE_SCHEMA + (schemaPattern.length() == 0 ? " is null" : " like '" + StringUtil.escapeStringConstant(schemaPattern) + "'\n" )); appendConjunction(whereClause); whereClause.append(SEQUENCE_NAME + " like '" + StringUtil.escapeStringConstant(tableNamePattern) + "'\n" );