public SQLHelper(Connection connection, Table table, String policy) { this.table = table; this.connection = connection; this.policy = policy; tableName = table.getPhysicalName(); }
@Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("Table("); buf.append(table.getPhysicalName()); buf.append(" AS "); buf.append(alias); buf.append(')'); return buf.toString(); }
@Override public String getCreateFulltextIndexSql(String indexName, String quotedIndexName, Table table, List<Column> columns, Model model) { String columnNames = columns.stream() .map(column -> "'" + column.getPhysicalName() + "'") .collect(Collectors.joining(", ")); String fullIndexName = String.format("PUBLIC_%s_%s", table.getPhysicalName(), indexName); return String.format("CALL NXFT_CREATE_INDEX('%s', 'PUBLIC', '%s', (%s), '%s')", fullIndexName, table.getPhysicalName(), columnNames, fulltextAnalyzer); }
@Override public String getIdentityGeneratedKeySql(Column column) { String table = column.getTable().getPhysicalName(); String seq = table + "_IDSEQ"; return String.format("SELECT \"%s\".CURRVAL FROM DUAL", seq); }
@Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append(getClass().getSimpleName()); buf.append('('); for (Iterator<Table> iter = tables.values().iterator(); iter.hasNext();) { Table table = iter.next(); buf.append(table.getPhysicalName()); if (iter.hasNext()) { buf.append(','); } } buf.append(')'); return buf.toString(); }
@Override public List<String> getPostCreateIdentityColumnSql(Column column) { String table = column.getTable().getPhysicalName(); String col = column.getPhysicalName(); String seq = table + "_IDSEQ"; String trig = table + "_IDTRIG"; String createSeq = String.format("CREATE SEQUENCE \"%s\"", seq); String createTrig = String.format("CREATE TRIGGER \"%s\"\n" // + " BEFORE INSERT ON \"%s\"\n" // + " FOR EACH ROW WHEN (NEW.\"%s\" IS NULL)\n" // + "BEGIN\n" // + " SELECT \"%s\".NEXTVAL INTO :NEW.\"%s\" FROM DUAL;\n" // + "END;", trig, table, col, seq, col); return Arrays.asList(createSeq, createTrig); }
private boolean tableExists() { try { // Check if table exists using metadata DatabaseMetaData metaData = connection.getMetaData(); String schemaName = null; String productName = metaData.getDatabaseProductName(); if ("Oracle".equals(productName)) { try (Statement st = connection.createStatement()) { String sql = "SELECT SYS_CONTEXT('USERENV', 'SESSION_USER') FROM DUAL"; log.trace("SQL: " + sql); try (ResultSet rs = st.executeQuery(sql)) { rs.next(); schemaName = rs.getString(1); log.trace("checking existing tables for oracle database, schema: " + schemaName); } } } try (ResultSet rs = metaData.getTables(null, schemaName, table.getPhysicalName(), new String[] { "TABLE" })) { boolean exists = rs.next(); log.debug(String.format("checking if table %s exists: %s", table.getPhysicalName(), Boolean.valueOf(exists))); return exists; } } catch (SQLException e) { throw new DirectoryException(e); } }
} else if (collectionUniqueConstraintEnabled && model.isCollectionFragment(key)) { String name = table.getPhysicalName(); String indexName = makeName(name, "", "_unique_pos", getMaxIndexNameSize()); sqls.add(String.format("CREATE UNIQUE INDEX \"%s\" ON \"%s\" (\"%s\", \"%s\")", indexName, name,
@Override public FulltextMatchInfo getFulltextScoredMatchInfo(String fulltextQuery, String indexName, int nthMatch, Column mainColumn, Model model, Database database) { String phftname = database.getTable(Model.FULLTEXT_TABLE_NAME).getPhysicalName(); String fullIndexName = "PUBLIC_" + phftname + "_" + indexName; String nthSuffix = nthMatch == 1 ? "" : String.valueOf(nthMatch); String tableAlias = "_NXFTTBL" + nthSuffix; String quotedTableAlias = openQuote() + tableAlias + closeQuote(); FulltextMatchInfo info = new FulltextMatchInfo(); info.joins = Collections.singletonList( // new Join(Join.LEFT, // String.format("NXFT_SEARCH('%s', ?)", fullIndexName), tableAlias, // alias fulltextQuery, // param String.format("%s.KEY", quotedTableAlias), // on1 mainColumn.getFullQuotedName() // on2 )); info.whereExpr = String.format("%s.KEY IS NOT NULL", quotedTableAlias); info.scoreExpr = "1"; info.scoreAlias = "_NXSCORE" + nthSuffix; info.scoreCol = new Column(mainColumn.getTable(), null, ColumnType.DOUBLE, null); return info; }
Column fc = ft.getColumn(column.getForeignKey()); String constraintName = dialect.openQuote() + dialect.getForeignKeyConstraintName(key, column.getPhysicalName(), ft.getPhysicalName()) + dialect.closeQuote(); StringBuilder buf = new StringBuilder();
String tableName = getTableName(table.getPhysicalName()); if (!tableNames.contains(tableName.toUpperCase())) {