/** * Encodes a field name in SQL, prefixing it with the table name (but not the schema). * * <p>Mostly useful when aliases are used. */ public String encode(String s) { StringBuffer buf = new StringBuffer(); store.dialect.encodeTableName(tableName, buf); buf.append("."); buf.append(s); return buf.toString(); } }
private void encodeAliasedColumnName( JDBCDataStore store, String colName, String typeName, StringBuffer sql, Hints hints) throws SQLException { store.dialect.encodeTableName(typeName, sql); sql.append("."); store.dialect.encodeColumnName(colName, sql); }
/** * Helper method to encode table name which checks if a schema is set and prefixes the table * name with it, with the addition of an alias to the name */ public void encodeAliasedTableName( String tableName, StringBuffer sql, Hints hints, String alias) throws SQLException { VirtualTable vtDefinition = virtualTables.get(tableName); if (vtDefinition != null) { sql.append("(").append(vtDefinition.expandParameters(hints)).append(")"); if (alias == null) { alias = "vtable"; } dialect.encodeTableAlias(alias, sql); } else { if (databaseSchema != null) { dialect.encodeSchemaName(databaseSchema, sql); sql.append("."); } dialect.encodeTableName(tableName, sql); if (alias != null) { dialect.encodeTableAlias(alias, sql); } } }
/** * Encode column name with table name included, but do not include schema name (for aliases) * * @param colName * @param typeName * @param sql * @param hints * @throws SQLException */ public void encodeColumnName2(String colName, String typeName, StringBuffer sql, Hints hints) throws SQLException { getDataStore().dialect.encodeTableName(typeName, sql); sql.append("."); getDataStore().dialect.encodeColumnName(colName, sql); }
@Override protected Expression visit(Expression expression, Object extraData) { if (!(expression instanceof JdbcMultipleValue)) { return super.visit(expression, extraData); } JdbcMultipleValue multipleValue = (JdbcMultipleValue) expression; FilterToSQL filterToSql = createFilterToSQL(multipleValue); filterToSql.setFieldEncoder( field -> { StringBuffer sql = new StringBuffer(); store.dialect.encodeTableName(multipleValue.getId(), sql); sql.append("."); sql.append(field); return sql.toString(); }); try { return new MultipleValueExpressionHolder( output, filterToSql.encodeToString(((JdbcMultipleValue) expression).getTargetValue())); } catch (FilterToSQLException exception) { throw new RuntimeException(exception); } }
sb.append("."); pgDialect.encodeTableName(delegate.getPrimaryKey().getTableName(), sb); sb.append(" order by ");
store.encodeTableName(lastType.getTypeName(), sql, null); sql.append(" "); store.dialect.encodeTableName(lastMappingStep.getAlias(), sql); return sql;
private void encodeMultipleValueJoin( FeatureTypeMapping rootMapping, String rootTableName, JDBCDataStore store, StringBuffer sql) { for (AttributeMapping attributeMapping : rootMapping.getAttributeMappings()) { if (!(attributeMapping.getMultipleValue() instanceof JdbcMultipleValue)) { continue; } JdbcMultipleValue multipleValue = (JdbcMultipleValue) attributeMapping.getMultipleValue(); sql.append(" LEFT JOIN "); String alias = String.valueOf(multipleValue.getId()); try { store.encodeAliasedTableName(multipleValue.getTargetTable(), sql, null, alias); } catch (SQLException e) { throw new RuntimeException(e); } sql.append(" ON "); store.dialect.encodeColumnName(rootTableName, sql); sql.append("."); store.dialect.encodeColumnName(multipleValue.getSourceColumn(), sql); sql.append(" = "); store.dialect.encodeTableName(alias, sql); sql.append("."); store.dialect.encodeColumnName(multipleValue.getTargetColumn(), sql); sql.append(" "); } }
private void encodeMultipleValueJoin( FeatureChainedAttributeDescriptor nestedAttribute, JDBCDataStore store, StringBuffer sql) { FeatureTypeMapping featureMapping = nestedAttribute.getFeatureTypeOwningAttribute(); AttributeMapping mapping = featureMapping.getAttributeMapping(nestedAttribute.getAttributePath()); if (mapping == null || !mapping.isMultiValued() || !(mapping.getMultipleValue() instanceof JdbcMultipleValue)) { return; } JdbcMultipleValue multipleValue = (JdbcMultipleValue) mapping.getMultipleValue(); sql.append(" LEFT JOIN "); String alias = String.valueOf(multipleValue.getId()); try { store.encodeAliasedTableName(multipleValue.getTargetTable(), sql, null, alias); } catch (SQLException e) { throw new RuntimeException(e); } sql.append(" ON "); store.dialect.encodeColumnName(nestedAttribute.getLastLink().getAlias(), sql); sql.append("."); store.dialect.encodeColumnName(multipleValue.getSourceColumn(), sql); sql.append(" = "); store.dialect.encodeTableName(alias, sql); sql.append("."); store.dialect.encodeColumnName(multipleValue.getTargetColumn(), sql); sql.append(" "); }
String newAlias = createAlias(typeName, tableNames); tableNames.add(newAlias); getDataStore().dialect.encodeTableName(newAlias, sql); sql.append(" ON ("); getDataStore().dialect.encodeColumnName(alias, id, sql);
public void testVirtualTable() throws Exception { // geopoint( id:Integer; name:String; geo:Geography(Point) ) StringBuffer sb = new StringBuffer(); sb.append("select * from "); dialect.encodeTableName(tname("geopoint"), sb); VirtualTable vt = new VirtualTable("geopoint_vt", sb.toString()); dataStore.addVirtualTable(vt); SimpleFeatureType featureType = dataStore.getSchema("geopoint_vt"); assertNotNull(featureType); assertNotNull(featureType.getGeometryDescriptor()); } }
store.encodeTableName(parentTableName, sql, null); sql.append(" "); store.dialect.encodeTableName(mappingStep.getAlias(), sql); sql.append(" ON "); encodeJoinCondition(nestedAttrDescr, i, sql);
field -> { StringBuffer fieldSql = new StringBuffer(); getDataStore().dialect.encodeTableName(mv.getTargetTable(), fieldSql); fieldSql.append("."); fieldSql.append(field); getDataStore().encodeTableName(mv.getTargetTable(), finalSql, null); finalSql.append(" INNER JOIN (").append(sql).append(") AS "); getDataStore().dialect.encodeTableName("mv", finalSql); finalSql.append(" ON "); getDataStore().dialect.encodeTableName("mv", finalSql); finalSql.append("."); getDataStore().dialect.encodeColumnName(null, mv.getSourceColumn(), finalSql);
sb.append("."); dialect.encodeTableName(tname("river"), sb); VirtualTable vt = new VirtualTable("invalid_attribute", sb.toString());
join.getJoiningTypeName(), joinClause, query.getHints()); joinClause.append(" "); getDataStore().dialect.encodeTableName(alias, joinClause); joinClause.append(" ON ( "); getDataStore().dialect.encodeTableName(TEMP_FILTER_ALIAS, sortBySQL); sortBySQL.append(" ON ( "); encodeColumnName2( getDataStore() .dialect .encodeTableName(TEMP_FILTER_ALIAS, sortBySQL); sortBySQL.append(" ON ( "); encodeColumnName2(pk, lastTableAlias, sortBySQL, null);
sb.append("."); dialect.encodeTableName(tname("river"), sb); VirtualTable vt = new VirtualTable("riverFull", sb.toString()); dataStore.addVirtualTable(vt); sb.append("."); dialect.encodeTableName(tname("river"), sb); sb.append(" where "); dialect.encodeColumnName(aname("flow"), sb); sb.append("."); dialect.encodeTableName(tname("river"), sb); sb.append(" %where%"); vt = new VirtualTable("riverParam", sb.toString());
private void encodeTableName( SQLDialect dialect, String databaseSchema, String tableName, StringBuffer sql) { if (databaseSchema != null) { dialect.encodeSchemaName(databaseSchema, sql); sql.append("."); } dialect.encodeTableName(tableName, sql); }
public String encode(String s) { StringBuffer buf = new StringBuffer(); getDataStore().dialect.encodeTableName(tableName, buf); buf.append("."); buf.append(s); return buf.toString(); } }
/** * Helper method to encode table name which checks if a schema is set and * prefixes the table name with it. */ protected void encodeTableName(String tableName, StringBuffer sql) { if (databaseSchema != null) { dialect.encodeSchemaName(databaseSchema, sql); sql.append("."); } dialect.encodeTableName(tableName, sql); }
dataStore.getSQLDialect().encodeTableName("ft2", sql);