Revision 47787
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/dataaccess/SelectFunction.java | ||
---|---|---|
354 | 354 |
// return featureType; |
355 | 355 |
// }; |
356 | 356 |
// } |
357 |
final SQLBuilder.TableNameBuilder builderTable = sqlBuilder.select().from().table(); |
|
358 |
|
|
357 | 359 |
SQLBuilder.SelectBuilder select = sqlBuilder.createSelectBuilder(); |
358 | 360 |
String builderTableName = (String) builder.getProperty(SQLBuilder.PROP_TABLENAME); |
359 | 361 |
|
... | ... | |
411 | 413 |
} |
412 | 414 |
|
413 | 415 |
SQLBuilder.TableNameBuilder table = select.from().table(); |
416 |
if( !table.has_schema() && builderTable.has_schema() ) { |
|
417 |
table.schema(builderTable.getSchema()); |
|
418 |
} |
|
414 | 419 |
String tableName = table.getName(); |
415 | 420 |
FeatureType featureType; |
416 | 421 |
if (StringUtils.equalsIgnoreCase(builderTableName, tableName)) { |
... | ... | |
522 | 527 |
SQLBuilder.Column c = (SQLBuilder.Column) value; |
523 | 528 |
SQLBuilder.TableNameBuilder t = c.table(); |
524 | 529 |
if( t==null ) { |
525 |
c.table(table); |
|
530 |
if( table.featureType().get(c.name())!=null ) { |
|
531 |
c.table(table); |
|
532 |
} |
|
526 | 533 |
return; |
527 | 534 |
} |
528 | 535 |
if( t.equals(table) ) { |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/test/java/org/gvsig/fmap/dal/store/jdbc2/SQLBuilderTest.java | ||
---|---|---|
583 | 583 |
System.out.println("# SQL1:: " + sqlbuilder.toString()); |
584 | 584 |
|
585 | 585 |
List<String> attrNames = new ArrayList<>(); |
586 |
helper.processSpecialFunctions(sqlbuilder, ft, attrNames); |
|
586 |
helper.processSpecialFunctions(sqlbuilder, ft, attrNames, null);
|
|
587 | 587 |
|
588 | 588 |
System.out.println("# SQL2:: " + sqlbuilder.toString()); |
589 | 589 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/expressionbuilder/formatters/ComputedAttribute.java | ||
---|---|---|
58 | 58 |
|
59 | 59 |
@Override |
60 | 60 |
public boolean canApply(ExpressionBuilder.Value value) { |
61 |
FeatureAttributeDescriptor attr = this.getFeatureAttributeDescriptor(value); |
|
61 |
if( value instanceof SQLBuilder.SelectColumnBuilder ) { |
|
62 |
return false; |
|
63 |
} |
|
64 |
FeatureAttributeDescriptor attr = this.getFeatureAttributeDescriptor(value); |
|
62 | 65 |
if (attr == null) { |
63 | 66 |
return false; |
64 | 67 |
} |
... | ... | |
106 | 109 |
} |
107 | 110 |
|
108 | 111 |
FeatureQuery query = (FeatureQuery) value.getProperty(PROP_QUERY); |
109 |
if (query != null) {
|
|
112 |
if (query == null) {
|
|
110 | 113 |
return null; |
111 | 114 |
} |
112 | 115 |
FeatureExtraColumns extraColumn = query.getExtraColumn(); |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/JDBCHelperBase.java | ||
---|---|---|
72 | 72 |
import org.gvsig.fmap.dal.expressionevaluator.FeatureAttributeEmulatorExpression; |
73 | 73 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
74 | 74 |
import org.gvsig.fmap.dal.feature.FeatureAttributeEmulator; |
75 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
|
75 | 76 |
import org.gvsig.fmap.dal.feature.FeatureQueryOrder; |
76 | 77 |
import org.gvsig.fmap.dal.feature.FeatureType; |
77 | 78 |
import org.gvsig.fmap.dal.feature.ForeingKey; |
... | ... | |
759 | 760 |
public void processSpecialFunctions( |
760 | 761 |
SQLBuilder sqlbuilder, |
761 | 762 |
FeatureType type, |
762 |
List<String> extra_column_names) { |
|
763 |
List<String> extra_column_names, |
|
764 |
FeatureQuery query) { |
|
763 | 765 |
replaceForeingValueFunction(sqlbuilder, type, extra_column_names); |
764 | 766 |
replaceExistsFunction(sqlbuilder, type, extra_column_names); |
765 |
addTableToColumnReferences(sqlbuilder, type); |
|
767 |
addTableToColumnReferences(sqlbuilder, type, query);
|
|
766 | 768 |
} |
767 | 769 |
|
768 | 770 |
@SuppressWarnings("Convert2Lambda") |
... | ... | |
1051 | 1053 |
} |
1052 | 1054 |
} |
1053 | 1055 |
|
1054 |
protected void addTableToColumnReferences(SQLBuilder sqlbuilder, FeatureType type) { |
|
1056 |
protected void addTableToColumnReferences(SQLBuilder sqlbuilder, FeatureType type, FeatureQuery query) {
|
|
1055 | 1057 |
SelectBuilder select = sqlbuilder.select(); |
1056 | 1058 |
List<Pair<SQLBuilder.TableNameBuilder, FeatureType>> tables = new ArrayList<>(); |
1057 | 1059 |
collectTablesFromSelect(select, tables, type); |
... | ... | |
1059 | 1061 |
addTableToColumnReferencesInSingleSelect( |
1060 | 1062 |
sqlbuilder, |
1061 | 1063 |
select, |
1062 |
tables |
|
1064 |
tables, |
|
1065 |
query |
|
1063 | 1066 |
); |
1064 | 1067 |
|
1065 | 1068 |
} |
... | ... | |
1087 | 1090 |
} |
1088 | 1091 |
} |
1089 | 1092 |
|
1090 |
protected void addTableToColumnReferencesInSingleSelect(SQLBuilder sqlbuilder, SelectBuilder select, List<Pair<SQLBuilder.TableNameBuilder,FeatureType>> outerTables) { |
|
1093 |
private boolean isComputed(String name, FeatureType featureType, FeatureQuery query ) { |
|
1094 |
FeatureAttributeDescriptor attr = featureType.getAttributeDescriptor(name); |
|
1095 |
if( attr !=null ) { |
|
1096 |
return attr.isComputed(); |
|
1097 |
} |
|
1098 |
if( query == null ) { |
|
1099 |
return false; |
|
1100 |
} |
|
1101 |
attr = query.getExtraColumns().get(name); |
|
1102 |
if( attr !=null ) { |
|
1103 |
return true; //attr.isComputed(); |
|
1104 |
} |
|
1105 |
return false; |
|
1106 |
} |
|
1107 |
|
|
1108 |
protected void addTableToColumnReferencesInSingleSelect(SQLBuilder sqlbuilder, SelectBuilder select, List<Pair<SQLBuilder.TableNameBuilder,FeatureType>> outerTables, FeatureQuery query) { |
|
1091 | 1109 |
|
1110 |
FeatureType mainFeatureType = CollectionUtils.isEmpty(outerTables)?null:outerTables.get(0).getRight(); |
|
1111 |
|
|
1092 | 1112 |
final SQLBuilder.TableNameBuilder fromTable = select.from().table(); |
1093 | 1113 |
|
1094 | 1114 |
final List<ExpressionBuilder.Value[]> value_replacements = new ArrayList<>(); |
... | ... | |
1121 | 1141 |
ArrayList<Pair<SQLBuilder.TableNameBuilder, FeatureType>> tables = new ArrayList<>(outerTables); |
1122 | 1142 |
collectTablesFromSelect((SelectBuilder) visitable, tables, null); |
1123 | 1143 |
|
1124 |
addTableToColumnReferencesInSingleSelect(sqlbuilder, (SelectBuilder) visitable, tables); |
|
1144 |
addTableToColumnReferencesInSingleSelect(sqlbuilder, (SelectBuilder) visitable, tables, query);
|
|
1125 | 1145 |
return false; |
1126 | 1146 |
} |
1127 | 1147 |
return true; |
... | ... | |
1133 | 1153 |
|
1134 | 1154 |
Pair<SQLBuilder.TableNameBuilder, FeatureType> tableNameAndFeatureType = getTableAndFeatureType(outerTables, variable.name()); |
1135 | 1155 |
if (tableNameAndFeatureType != null) { |
1136 |
SQLBuilder.TableNameBuilder variableTable = tableNameAndFeatureType.getLeft(); |
|
1156 |
|
|
1157 |
if( !isComputed(variable.name(), tableNameAndFeatureType.getRight(), query) ) { |
|
1158 |
|
|
1159 |
SQLBuilder.TableNameBuilder variableTable = tableNameAndFeatureType.getLeft(); |
|
1137 | 1160 |
|
1138 |
if (variable instanceof SQLBuilder.Column) { |
|
1139 |
Column column = (SQLBuilder.Column) variable; |
|
1140 |
if (column.table() != null && column.table().has_name()) { |
|
1141 |
if (column.table().has_schema()) { |
|
1142 |
//La columna tiene tabla y esquema => No hacemos nada |
|
1143 |
} else { |
|
1144 |
if(column.table().getName().equals(variableTable.getName())){ |
|
1145 |
SQLBuilder.TableNameBuilder t = sqlbuilder.createTableNameBuilder() |
|
1146 |
.name(column.table().getName()) |
|
1147 |
.schema(variableTable.getSchema()); |
|
1148 |
variable_replacement = sqlbuilder.column_from( |
|
1149 |
t, |
|
1150 |
variable |
|
1151 |
); |
|
1161 |
if (variable instanceof SQLBuilder.Column) { |
|
1162 |
Column column = (SQLBuilder.Column) variable; |
|
1163 |
if (column.table() != null && column.table().has_name()) { |
|
1164 |
if (column.table().has_schema()) { |
|
1165 |
//La columna tiene tabla y esquema => No hacemos nada |
|
1152 | 1166 |
} else { |
1153 |
if(fromTable.has_schema()){
|
|
1167 |
if(column.table().getName().equals(variableTable.getName())){
|
|
1154 | 1168 |
SQLBuilder.TableNameBuilder t = sqlbuilder.createTableNameBuilder() |
1155 | 1169 |
.name(column.table().getName()) |
1156 |
.schema(fromTable.getSchema()); //Mismo esquema que en el FROM
|
|
1170 |
.schema(variableTable.getSchema());
|
|
1157 | 1171 |
variable_replacement = sqlbuilder.column_from( |
1158 | 1172 |
t, |
1159 | 1173 |
variable |
1160 | 1174 |
); |
1161 | 1175 |
} else { |
1162 |
// No tiene esquema ni podemos averiguarlo => No hacemos nada |
|
1176 |
if(fromTable.has_schema()){ |
|
1177 |
SQLBuilder.TableNameBuilder t = sqlbuilder.createTableNameBuilder() |
|
1178 |
.name(column.table().getName()) |
|
1179 |
.schema(fromTable.getSchema()); //Mismo esquema que en el FROM |
|
1180 |
variable_replacement = sqlbuilder.column_from( |
|
1181 |
t, |
|
1182 |
variable |
|
1183 |
); |
|
1184 |
} else { |
|
1185 |
// No tiene esquema ni podemos averiguarlo => No hacemos nada |
|
1186 |
} |
|
1163 | 1187 |
} |
1164 | 1188 |
} |
1189 |
} else { |
|
1190 |
column = sqlbuilder.column_from(tableNameAndFeatureType.getLeft(), variable); |
|
1191 |
column.setProperty(SQLBuilder.PROP_FEATURE_TYPE, tableNameAndFeatureType.getRight()); |
|
1192 |
variable_replacement = column; |
|
1165 | 1193 |
} |
1166 | 1194 |
} else { |
1167 |
column = sqlbuilder.column_from(tableNameAndFeatureType.getLeft(), variable); |
|
1195 |
Column column = sqlbuilder.column_from(tableNameAndFeatureType.getLeft(), variable);
|
|
1168 | 1196 |
column.setProperty(SQLBuilder.PROP_FEATURE_TYPE, tableNameAndFeatureType.getRight()); |
1169 | 1197 |
variable_replacement = column; |
1170 | 1198 |
} |
1171 |
} else { |
|
1172 |
Column column = sqlbuilder.column_from(tableNameAndFeatureType.getLeft(), variable); |
|
1173 |
column.setProperty(SQLBuilder.PROP_FEATURE_TYPE, tableNameAndFeatureType.getRight()); |
|
1174 |
variable_replacement = column; |
|
1175 | 1199 |
} |
1176 | 1200 |
|
1177 | 1201 |
} else { |
1178 |
if (variable instanceof SQLBuilder.Column) { |
|
1179 |
Column column = (SQLBuilder.Column) variable; |
|
1180 |
if (column.table() == null || !column.table().has_name()) { |
|
1181 |
variable_replacement = sqlbuilder.column_from( |
|
1182 |
fromTable, |
|
1183 |
variable |
|
1184 |
); |
|
1185 |
} else if (!column.table().has_schema()) { |
|
1186 |
if(fromTable.has_schema()){ |
|
1187 |
SQLBuilder.TableNameBuilder t = sqlbuilder.createTableNameBuilder() |
|
1188 |
.name(column.table().getName()) |
|
1189 |
.schema(fromTable.getSchema()); //Mismo esquema que en el FROM |
|
1202 |
if( !isComputed(variable.name(), mainFeatureType, query) ) { |
|
1203 |
|
|
1204 |
if (variable instanceof SQLBuilder.Column) { |
|
1205 |
Column column = (SQLBuilder.Column) variable; |
|
1206 |
if (column.table() == null || !column.table().has_name()) { |
|
1190 | 1207 |
variable_replacement = sqlbuilder.column_from( |
1191 |
t,
|
|
1208 |
fromTable,
|
|
1192 | 1209 |
variable |
1193 | 1210 |
); |
1211 |
} else if (!column.table().has_schema()) { |
|
1212 |
if(fromTable.has_schema()){ |
|
1213 |
SQLBuilder.TableNameBuilder t = sqlbuilder.createTableNameBuilder() |
|
1214 |
.name(column.table().getName()) |
|
1215 |
.schema(fromTable.getSchema()); //Mismo esquema que en el FROM |
|
1216 |
variable_replacement = sqlbuilder.column_from( |
|
1217 |
t, |
|
1218 |
variable |
|
1219 |
); |
|
1220 |
} else { |
|
1221 |
// No tiene esquema ni podemos averiguarlo => No hacemos nada |
|
1222 |
} |
|
1223 |
} |
|
1224 |
} else { |
|
1225 |
if( StringUtils.equals(fromTable.getName(), variable.name()) ) { |
|
1226 |
LOGGER.debug("Uff, la variable coincide con el nombre de la tabla...\nNo esta nada claro que haya que ponerle el prefijo,\nde momento no hacemos nada."); |
|
1194 | 1227 |
} else { |
1195 |
// No tiene esquema ni podemos averiguarlo => No hacemos nada |
|
1228 |
variable_replacement = sqlbuilder.column_from( |
|
1229 |
fromTable, |
|
1230 |
variable |
|
1231 |
); |
|
1196 | 1232 |
} |
1197 | 1233 |
} |
1198 |
} else { |
|
1199 |
if( StringUtils.equals(fromTable.getName(), variable.name()) ) { |
|
1200 |
LOGGER.debug("Uff, la variable coincide con el nombre de la tabla...\nNo esta nada claro que haya que ponerle el prefijo,\nde momento no hacemos nada."); |
|
1201 |
} else { |
|
1202 |
variable_replacement = sqlbuilder.column_from( |
|
1203 |
fromTable, |
|
1204 |
variable |
|
1205 |
); |
|
1206 |
} |
|
1207 | 1234 |
} |
1208 | 1235 |
} |
1209 | 1236 |
if(variable_replacement != null){ |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/CalculateEnvelopeOfColumnOperation.java | ||
---|---|---|
164 | 164 |
select.where().and( |
165 | 165 |
expbuilder.not_is_null(sqlbuilder.column(select.from().table(),columnName)) |
166 | 166 |
); |
167 |
this.helper.processSpecialFunctions(sqlbuilder, featureType, null); |
|
167 |
this.helper.processSpecialFunctions(sqlbuilder, featureType, null, null);
|
|
168 | 168 |
sqlbuilder.setProperties( |
169 | 169 |
Variable.class, |
170 | 170 |
PROP_TABLE, table |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/TableIsEmptyOperation.java | ||
---|---|---|
123 | 123 |
); |
124 | 124 |
|
125 | 125 |
this.helper.expandCalculedColumns(sqlbuilder); |
126 |
this.helper.processSpecialFunctions(sqlbuilder, featureType, null); |
|
126 |
this.helper.processSpecialFunctions(sqlbuilder, featureType, null, query);
|
|
127 | 127 |
if(select.getColumns().isEmpty()){ |
128 | 128 |
select.column().value(expbuilder.constant(1)); //.as("$ANY_VALUE$"); |
129 | 129 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/CountOperation.java | ||
---|---|---|
141 | 141 |
value.setProperty(PROP_FEATURE_TYPE, null); |
142 | 142 |
} |
143 | 143 |
this.helper.expandCalculedColumns(subsqlbuilder); |
144 |
this.helper.processSpecialFunctions(subsqlbuilder, featureType, extraColumnNames); |
|
144 |
this.helper.processSpecialFunctions(subsqlbuilder, featureType, extraColumnNames, query);
|
|
145 | 145 |
String subsql = StringUtils.trim(subselect.toString()); |
146 | 146 |
select.from().table() |
147 | 147 |
.database(this.table.getDatabase()) |
... | ... | |
167 | 167 |
PROP_QUERY, this.query |
168 | 168 |
); |
169 | 169 |
this.helper.expandCalculedColumns(sqlbuilder); |
170 |
this.helper.processSpecialFunctions(sqlbuilder, featureType, null); |
|
170 |
this.helper.processSpecialFunctions(sqlbuilder, featureType, null, query);
|
|
171 | 171 |
|
172 | 172 |
select.remove_all_columns(); |
173 | 173 |
select.column().value(sqlbuilder.count().all()); |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/ResultSetForSetProviderOperation.java | ||
---|---|---|
199 | 199 |
value.setProperty(PROP_FEATURE_TYPE, null); |
200 | 200 |
} |
201 | 201 |
this.helper.expandCalculedColumns(sqlbuilder); |
202 |
this.helper.processSpecialFunctions(sqlbuilder, storeType, extraColumnNames); |
|
202 |
this.helper.processSpecialFunctions(sqlbuilder, storeType, extraColumnNames, query);
|
|
203 | 203 |
String sql = StringUtils.trim(sqlbuilder.toString()); |
204 | 204 |
LOGGER.debug(sql); |
205 | 205 |
return sql; |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/spi/operations/FetchFeatureProviderByReferenceOperation.java | ||
---|---|---|
136 | 136 |
PROP_JDBCHELPER, this.helper |
137 | 137 |
); |
138 | 138 |
this.helper.expandCalculedColumns(sqlbuilder); |
139 |
this.helper.processSpecialFunctions(sqlbuilder, this.featureType, null); |
|
139 |
this.helper.processSpecialFunctions(sqlbuilder, this.featureType, null, null);
|
|
140 | 140 |
String sql = StringUtils.trim(sqlbuilder.toString()); |
141 | 141 |
return sql; |
142 | 142 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.jdbc/src/main/java/org/gvsig/fmap/dal/store/jdbc2/JDBCHelper.java | ||
---|---|---|
30 | 30 |
import org.gvsig.fmap.dal.exception.DataException; |
31 | 31 |
import org.gvsig.fmap.dal.exception.InitializeException; |
32 | 32 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
33 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
|
33 | 34 |
import org.gvsig.fmap.dal.feature.FeatureQueryOrder; |
34 | 35 |
import org.gvsig.fmap.dal.feature.FeatureType; |
35 | 36 |
import org.gvsig.fmap.dal.feature.spi.FeatureProvider; |
... | ... | |
217 | 218 |
public void processSpecialFunctions( |
218 | 219 |
SQLBuilder sqlbuilder, |
219 | 220 |
FeatureType type, |
220 |
List<String> extra_column_names // Output param |
|
221 |
List<String> extra_column_names, // Output param |
|
222 |
FeatureQuery query |
|
221 | 223 |
); |
222 | 224 |
|
223 | 225 |
public void setTransaction(DataTransactionServices transaction); |
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.h2spatial/org.gvsig.h2spatial.h2gis132/org.gvsig.h2spatial.h2gis132.provider/src/test/resources/org/gvsig/fmap/dal/store/h2/resultSetForSetProvider.sql | ||
---|---|---|
67 | 67 |
"PUBLIC"."test"."Bool5", |
68 | 68 |
"PUBLIC"."test"."Decimal", |
69 | 69 |
NVL2("PUBLIC"."test"."Geometry",ST_AsBinary("PUBLIC"."test"."Geometry"),NULL), |
70 |
NVL2(COALESCE(( SELECT "countries"."ISO_A2" FROM "countries" WHERE (("PUBLIC"."test"."STRING" = "countries"."CONTINENT") AND ("countries"."LASTCENSUS" < 0)) LIMIT 1 )),TRUE,FALSE) AS "EXISTS62a964cd7bc24f409b97c03b9170408d"
|
|
70 |
NVL2(COALESCE(( SELECT "PUBLIC"."countries"."ISO_A2" FROM "PUBLIC"."countries" WHERE (("PUBLIC"."test"."STRING" = "PUBLIC"."countries"."CONTINENT") AND ("PUBLIC"."countries"."LASTCENSUS" < 0)) LIMIT 1 )),TRUE,FALSE) AS "EXISTS62a964cd7bc24f409b97c03b9170408d"
|
|
71 | 71 |
FROM "PUBLIC"."test" |
72 |
WHERE NVL2(COALESCE(( SELECT "countries"."ISO_A2" |
|
73 |
FROM "countries" |
|
74 |
WHERE (("PUBLIC"."test"."STRING" = "countries"."CONTINENT") AND ("countries"."LASTCENSUS" < 0))
|
|
72 |
WHERE NVL2(COALESCE(( SELECT "PUBLIC"."countries"."ISO_A2"
|
|
73 |
FROM "PUBLIC"."countries"
|
|
74 |
WHERE (("PUBLIC"."test"."STRING" = "PUBLIC"."countries"."CONTINENT") AND ("PUBLIC"."countries"."LASTCENSUS" < 0))
|
|
75 | 75 |
LIMIT 1 )),TRUE,FALSE) |
76 | 76 |
ORDER BY "PUBLIC"."test"."ID" ASC |
77 | 77 |
-- end testSubselect |
... | ... | |
93 | 93 |
"PUBLIC"."test"."Bool5", |
94 | 94 |
"PUBLIC"."test"."Decimal", |
95 | 95 |
NVL2("PUBLIC"."test"."Geometry",ST_AsBinary("PUBLIC"."test"."Geometry"),NULL), |
96 |
NVL2(COALESCE(( SELECT "PUBLIC"."test"."Long" FROM "countries" WHERE (("PUBLIC"."test"."STRING" = "countries"."CONTINENT") AND ("countries"."LASTCENSUS" < 0)) LIMIT 1 )),TRUE,FALSE) AS "EXISTS62a964cd7bc24f409b97c03b9170408d"
|
|
96 |
NVL2(COALESCE(( SELECT "PUBLIC"."countries"."Long" FROM "PUBLIC"."countries" WHERE (("PUBLIC"."test"."STRING" = "PUBLIC"."countries"."CONTINENT") AND ("PUBLIC"."countries"."LASTCENSUS" < 0)) LIMIT 1 )),TRUE,FALSE) AS "EXISTS62a964cd7bc24f409b97c03b9170408d"
|
|
97 | 97 |
FROM "PUBLIC"."test" |
98 |
WHERE NVL2(COALESCE(( SELECT "PUBLIC"."test"."Long"
|
|
99 |
FROM "countries" |
|
100 |
WHERE (("PUBLIC"."test"."STRING" = "countries"."CONTINENT") AND ("countries"."LASTCENSUS" < 0))
|
|
98 |
WHERE NVL2(COALESCE(( SELECT "PUBLIC"."countries"."Long"
|
|
99 |
FROM "PUBLIC"."countries"
|
|
100 |
WHERE (("PUBLIC"."test"."STRING" = "PUBLIC"."countries"."CONTINENT") AND ("PUBLIC"."countries"."LASTCENSUS" < 0))
|
|
101 | 101 |
LIMIT 1 )),TRUE,FALSE) |
102 | 102 |
ORDER BY "PUBLIC"."test"."ID" ASC |
103 | 103 |
-- end testSubselect2 |
... | ... | |
120 | 120 |
NULL AS "Decimal", |
121 | 121 |
NULL AS "Geometry" |
122 | 122 |
FROM "PUBLIC"."test" |
123 |
WHERE NVL2(COALESCE(( SELECT "countries"."ISO_A2" |
|
124 |
FROM "countries" |
|
125 |
WHERE (("PUBLIC"."test"."STRING" = "countries"."CONTINENT") AND ("countries"."LASTCENSUS" < 0))
|
|
123 |
WHERE NVL2(COALESCE(( SELECT "PUBLIC"."countries"."ISO_A2"
|
|
124 |
FROM "PUBLIC"."countries"
|
|
125 |
WHERE (("PUBLIC"."test"."STRING" = "PUBLIC"."countries"."CONTINENT") AND ("PUBLIC"."countries"."LASTCENSUS" < 0))
|
|
126 | 126 |
LIMIT 1 )),TRUE,FALSE) |
127 | 127 |
GROUP BY "PUBLIC"."test"."Long" |
128 | 128 |
ORDER BY "PUBLIC"."test"."Long" ASC NULLS LAST |
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.h2spatial/org.gvsig.h2spatial.h2gis132/org.gvsig.h2spatial.h2gis132.provider/src/test/java/org/gvsig/fmap/dal/store/h2/operations/sql/TestResultSetForSetProvider.java | ||
---|---|---|
607 | 607 |
"test", |
608 | 608 |
null |
609 | 609 |
); |
610 |
/* |
|
611 |
FIXME: No esta claro que este test sea correcto. |
|
612 |
|
|
613 |
En la subselect 'SELECT "Long" FROM countries...' |
|
614 |
El campo "Long" no es de la tabla "countries" si no de la tabla "test"; |
|
615 |
pero como no se le indica la tabla pone la de la subselect, aunque si |
|
616 |
no es ambigua la referencia a la columna y es de la tabla "test" |
|
617 |
seria correcto "test"."Long" y no "countries"."Long". |
|
618 |
*/ |
|
610 | 619 |
StringBuilder filter = new StringBuilder(); |
611 | 620 |
filter.append("EXISTS("); |
612 | 621 |
filter.append(" SELECT \"Long\" FROM countries"); |
622 |
// filter.append(" SELECT \"Long\", \"CONTINENT\" FROM countries"); |
|
613 | 623 |
filter.append(" WHERE "); |
614 | 624 |
filter.append(" test.STRING = countries.CONTINENT AND "); |
615 | 625 |
filter.append(" countries.LASTCENSUS < 0 "); |
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.h2spatial/org.gvsig.h2spatial.h2gis132/org.gvsig.h2spatial.h2gis132.provider/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialStoreParameters.java | ||
---|---|---|
25 | 25 |
import java.io.IOException; |
26 | 26 |
import java.util.Properties; |
27 | 27 |
import org.apache.commons.io.FilenameUtils; |
28 |
import org.apache.commons.lang3.StringUtils; |
|
28 | 29 |
import org.gvsig.fmap.dal.DataStoreParameters; |
29 | 30 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
30 | 31 |
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters; |
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.sqlite/org.gvsig.sqlite.provider/src/test/resources/org/gvsig/sqlite/dal/resultSetForSetProvider.sql | ||
---|---|---|
94 | 94 |
"test"."Bool5", |
95 | 95 |
"test"."Decimal", |
96 | 96 |
"test"."Geometry", |
97 |
EXISTS( SELECT "test"."Long" FROM "countries" WHERE (("test"."STRING" = "countries"."CONTINENT") AND ("countries"."LASTCENSUS" < 0)) LIMIT 1 ) AS "EXISTS62a964cd7bc24f409b97c03b9170408d"
|
|
97 |
EXISTS( SELECT "countries"."Long" FROM "countries" WHERE (("test"."STRING" = "countries"."CONTINENT") AND ("countries"."LASTCENSUS" < 0)) LIMIT 1 ) AS "EXISTS62a964cd7bc24f409b97c03b9170408d"
|
|
98 | 98 |
FROM "test" |
99 |
WHERE EXISTS( SELECT "test"."Long"
|
|
99 |
WHERE EXISTS( SELECT "countries"."Long"
|
|
100 | 100 |
FROM "countries" |
101 | 101 |
WHERE (("test"."STRING" = "countries"."CONTINENT") AND ("countries"."LASTCENSUS" < 0)) |
102 | 102 |
LIMIT 1 ) |
Also available in: Unified diff