Revision 47787

View differences:

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