public static Table addTable(String name, Dialect dialect, boolean nativeCase) { String physicalName = dialect.getTableName(name); if (!nativeCase && name.length() == physicalName.length()) { // we can keep the name specified in the config physicalName = name; } return new TableImpl(dialect, physicalName, physicalName); }
@Override public void addIndex(String indexName, IndexType indexType, String... columnNames) { addIndex(columnNames); indexNames.put(columnNames, indexName); indexTypes.put(columnNames, indexType); if (indexType == IndexType.FULLTEXT) { hasFulltextIndex = true; } }
/** * Computes the SQL statement to alter a table and add a column to it. * * @param column the column to add * @return the SQL alter table string */ @Override public String getAddColumnSql(Column column) { StringBuilder buf = new StringBuilder(); buf.append("ALTER TABLE "); buf.append(getQuotedName()); buf.append(' '); buf.append(dialect.getAddColumnString()); buf.append(' '); addOneColumn(buf, column); return buf.toString(); }
protected void createTable(Connection connection) throws SQLException { try (Statement st = connection.createStatement()) { String createSQL = table.getCreateSql(); logger.log(createSQL); st.execute(createSQL); for (String sql : table.getPostCreateSqls(null)) { logger.log(sql); st.execute(sql); } } }
protected void getTable(Connection connection, String tbl) throws SQLException { String tablePhysicalName = dialect.getTableName(tbl); table = new TableImpl(dialect, tablePhysicalName, tablePhysicalName); keyCol = addColumn(KEY_COL, ColumnType.SYSNAME); keyCol.setPrimary(true); keyCol.setNullable(false); longCol = addColumn(LONG_COL, ColumnType.LONG); stringCol = addColumn(STRING_COL, ColumnType.CLOB); bytesCol = addColumn(BYTES_COL, ColumnType.BLOB); ttlCol = addColumn(TTL_COL, ColumnType.LONG); table.addIndex(TTL_COL); tableName = table.getQuotedName(); keyColName = keyCol.getQuotedName(); longColName = longCol.getQuotedName(); stringColName = stringCol.getQuotedName(); bytesColName = bytesCol.getQuotedName(); ttlColName = ttlCol.getQuotedName(); if (!tableExists(connection)) { createTable(connection); } checkColumns(connection); }
public static Column addColumn(Table table, String fieldName, ColumnType type, boolean nativeCase) { String physicalName = table.getDialect().getColumnName(fieldName); if (!nativeCase && fieldName.length() == physicalName.length()) { // we can keep the name specified in the config physicalName = fieldName; } Column column = new Column(table, physicalName, type, fieldName); return ((TableImpl) table).addColumn(fieldName, column); }
+ dialect.closeQuote(); buf.append("ALTER TABLE "); buf.append(getQuotedName()); buf.append(dialect.getAddPrimaryKeyConstraintString(constraintName)); buf.append('('); StringBuilder buf = new StringBuilder(); buf.append("ALTER TABLE "); buf.append(getQuotedName()); buf.append(dialect.getAddForeignKeyConstraintString(constraintName, new String[] { column.getQuotedName() }, ft.getQuotedName(), new String[] { fc.getQuotedName() }, for (Column c : getColumns()) { String key = c.getKey(); names.remove(key); Column col = getColumn(name); cols.add(col);
DatabaseMetaData metadata = connection.getMetaData(); String schemaName = getDatabaseSchemaName(connection); try (ResultSet rs = metadata.getColumns(null, schemaName, table.getPhysicalName(), "%")) { while (rs.next()) { String schema = rs.getString("TABLE_SCHEM"); int actualSize = rs.getInt("COLUMN_SIZE"); Column column = null; for (Column c : table.getColumns()) { String upperName = c.getPhysicalName().toUpperCase(); if (upperName.equals(columnName)) {
protected boolean tableExists(Connection connection) throws SQLException { DatabaseMetaData metadata = connection.getMetaData(); String schemaName = getDatabaseSchemaName(connection); try (ResultSet rs = metadata.getTables(null, schemaName, table.getPhysicalName(), new String[] { "TABLE" })) { boolean exists = rs.next(); log.trace("Checking if table {} exists: {}", table.getPhysicalName(), exists); return exists; } }
/** * Computes the SQL statement to drop the table. * <p> * TODO drop constraints and indexes * * @return the SQL drop string. */ @Override public String getDropSql() { StringBuilder buf = new StringBuilder(); buf.append("DROP TABLE "); if (dialect.supportsIfExistsBeforeTableName()) { buf.append("IF EXISTS "); } buf.append(getQuotedName()); buf.append(dialect.getCascadeDropConstraintsString()); if (dialect.supportsIfExistsAfterTableName()) { buf.append(" IF EXISTS"); } return buf.toString(); }
@Override public Column addColumn(String name, ColumnType type, String key, Model model) { String physicalName = dialect.getColumnName(name); Column column = new Column(this, physicalName, type, key); return addColumn(name, column); }
protected Column addColumn(String columnName, ColumnType type) { String colPhysicalName = dialect.getColumnName(columnName); Column column = new Column(table, colPhysicalName, type, columnName); return table.addColumn(column.getKey(), column); }
public Table addTable(String name) throws IllegalArgumentException { String physicalName = dialect.getTableName(name); if (!physicalTables.add(physicalName)) { throw new IllegalArgumentException("Duplicate table name: " + physicalName); } Table table = new TableImpl(dialect, physicalName, name); tables.put(name, table); return table; }
/** * Computes the SQL statement to create the table. * * @return the SQL create string. */ @Override public String getCreateSql() { StringBuilder buf = new StringBuilder(); buf.append("CREATE TABLE "); buf.append(getQuotedName()); buf.append(" ("); String custom = dialect.getCustomColumnDefinition(this); if (custom != null) { buf.append(custom); buf.append(", "); } for (Iterator<Column> it = columns.values().iterator(); it.hasNext();) { addOneColumn(buf, it.next()); if (it.hasNext()) { buf.append(", "); } } // unique // check buf.append(')'); buf.append(dialect.getTableTypeString(this)); return buf.toString(); }