@Override public List<String> getCustomPostCreateSqls(Table table, Model model) { if (!needsClusteredColumn(table)) { return Collections.emptyList(); } String quotedIndexName = getIndexName(table.getKey(), Collections.singletonList(CLUSTER_INDEX_COL)); String sql = String.format("CREATE UNIQUE CLUSTERED INDEX [%s] ON %s ([%s])", quotedIndexName, table.getQuotedName(), CLUSTER_INDEX_COL); return Collections.singletonList(sql); }
@Override public String getCreateFulltextIndexSql(String indexName, String quotedIndexName, Table table, List<Column> columns, Model model) { StringBuilder buf = new StringBuilder(); buf.append(String.format("CREATE FULLTEXT INDEX ON %s (", table.getQuotedName())); Iterator<Column> it = columns.iterator(); while (it.hasNext()) { buf.append(String.format("%s LANGUAGE %s", it.next().getQuotedName(), getQuotedFulltextAnalyzer())); if (it.hasNext()) { buf.append(", "); } } String fulltextUniqueIndex = "[fulltext_pk]"; buf.append(String.format(") KEY INDEX %s ON [%s]", fulltextUniqueIndex, fulltextCatalog)); return buf.toString(); }
case STRING: if (type.isUnconstrained()) { return jdbcInfo("NVARCHAR(4000)", Types.VARCHAR); } else if (type.isClob() || type.length > 4000) { return jdbcInfo("NVARCHAR(MAX)", Types.CLOB); } else { return jdbcInfo("NVARCHAR(%d)", type.length, Types.VARCHAR); return jdbcInfo("BIT", Types.BIT); case LONG: return jdbcInfo("BIGINT", Types.BIGINT); case DOUBLE: return jdbcInfo("DOUBLE PRECISION", Types.DOUBLE); case TIMESTAMP: return jdbcInfo("DATETIME2(3)", Types.TIMESTAMP); case BLOBID: return jdbcInfo("NVARCHAR(250)", Types.VARCHAR); case BLOB: return jdbcInfo("VARBINARY(MAX)", Types.VARBINARY); switch (idType) { case VARCHAR: return jdbcInfo("NVARCHAR(36)", Types.VARCHAR); case SEQUENCE: return jdbcInfo("BIGINT", Types.BIGINT); default: case SYSNAME: case SYSNAMEARRAY:
properties.put("idSequenceName", idSequenceName); properties.put("lockEscalationDisabled", Boolean.valueOf(supportsLockEscalationDisable())); properties.put("md5HashString", getMd5HashString()); properties.put("reseedAclrModified", azure ? "" : "DBCC CHECKIDENT('aclr_modified', RESEED, 0);"); properties.put("fulltextEnabled", Boolean.valueOf(!fulltextDisabled)); properties.put("usersSeparator", getUsersSeparator()); return properties;
@Override @SuppressWarnings("boxing") public Serializable getFromResultSet(ResultSet rs, int index, Column column) throws SQLException { switch (column.getJdbcType()) { case Types.VARCHAR: case Types.CLOB: return getFromResultSetString(rs, index, column); case Types.BIT: return rs.getBoolean(index); case Types.TINYINT: case Types.INTEGER: case Types.BIGINT: return rs.getLong(index); case Types.DOUBLE: return rs.getDouble(index); case Types.TIMESTAMP: return getFromResultSetTimestamp(rs, index, column); case Types.VARBINARY: return rs.getBytes(index); } throw new SQLException("Unhandled JDBC type: " + column.getJdbcType()); }
public DialectSQLServer(DatabaseMetaData metadata, RepositoryDescriptor repositoryDescriptor) { super(metadata, repositoryDescriptor); try { checkDatabaseConfiguration(metadata.getConnection()); majorVersion = metadata.getDatabaseMajorVersion(); engineEdition = getEngineEdition(metadata.getConnection());
@Override public String getCustomColumnDefinition(Table table) { if (!needsClusteredColumn(table)) { return null; } return String.format("[%s] BIGINT NOT NULL IDENTITY", CLUSTER_INDEX_COL); }
new Join(Join.LEFT, // String.format("CONTAINSTABLE(%s, *, ?, LANGUAGE %s)", ft.getQuotedName(), getQuotedFulltextAnalyzer()),