Revision 44361
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultExpressionBuilder.java | ||
---|---|---|
51 | 51 |
private static final String FORMAT_ST_SIMPLIFY = "ST_Simplify(({0}), ({1}))"; |
52 | 52 |
|
53 | 53 |
private static final String FORMAT_ISNULL = "( ({0}) IS NULL )"; |
54 |
private static final String FORMAT_NOTISNULL = "( ({0}) NOT IS NULL )";
|
|
54 |
private static final String FORMAT_NOTISNULL = "( ({0}) IS NOT NULL )";
|
|
55 | 55 |
private static final String FORMAT_OPERATOR_NOT = "( NOT ({0}) )"; |
56 | 56 |
|
57 | 57 |
private static final String FORMAT_OPERATOR_AND = "({0} AND {1})"; |
... | ... | |
1189 | 1189 |
|
1190 | 1190 |
@Override |
1191 | 1191 |
public Function not_is_null(Value value) { |
1192 |
return builtin_function("NOT IS NULL", FORMAT_NOTISNULL, value);
|
|
1192 |
return builtin_function("IS NOT NULL", FORMAT_NOTISNULL, value);
|
|
1193 | 1193 |
} |
1194 | 1194 |
|
1195 | 1195 |
@Override |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultCompiler.java | ||
---|---|---|
3 | 3 |
import java.util.HashMap; |
4 | 4 |
import java.util.Map; |
5 | 5 |
import org.apache.commons.lang3.StringUtils; |
6 |
import org.apache.commons.lang3.math.NumberUtils; |
|
7 | 6 |
import org.gvsig.expressionevaluator.Compiler; |
8 | 7 |
import org.gvsig.expressionevaluator.LexicalAnalyzer; |
9 | 8 |
import org.gvsig.expressionevaluator.LexicalAnalyzer.Token; |
10 | 9 |
import org.gvsig.expressionevaluator.Code; |
11 |
import org.gvsig.expressionevaluator.Code.Constant; |
|
12 | 10 |
import org.gvsig.expressionevaluator.CodeBuilder; |
13 | 11 |
import org.gvsig.expressionevaluator.Codes; |
14 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
15 | 12 |
import org.gvsig.expressionevaluator.ExpressionSyntaxException; |
16 | 13 |
import org.gvsig.expressionevaluator.GrammarSet; |
17 | 14 |
import org.gvsig.expressionevaluator.Statement; |
... | ... | |
277 | 274 |
case Token.PRED_IS: { |
278 | 275 |
lexer.next(); |
279 | 276 |
Token next = lexer.look(); |
280 |
if( next.getType() == Token.NOTNULL ) { |
|
281 |
op1 = codeBuilder.is(op1, codeBuilder.constant(null)); |
|
282 |
op1 = codeBuilder.not(op1); |
|
283 |
} else { |
|
284 |
op2 = parse_sum(); |
|
285 |
if( op2==null ) { |
|
286 |
throw new ExpressionSyntaxException(I18N.Cant_recognize_the_second_operand_of_IS_operator(),lexer); |
|
287 |
} |
|
288 |
op1 = codeBuilder.is(op1, op2); |
|
277 |
switch(next.getType()) { |
|
278 |
case Token.NOTNULL: |
|
279 |
lexer.next(); |
|
280 |
op1 = codeBuilder.is(op1, codeBuilder.constant(null)); |
|
281 |
op1 = codeBuilder.not(op1); |
|
282 |
break; |
|
283 |
case Token.OP_NOT: |
|
284 |
lexer.next(); |
|
285 |
next = lexer.look(); |
|
286 |
if( next.getType() == Token.NULL ) { |
|
287 |
lexer.next(); |
|
288 |
op1 = codeBuilder.is(op1, codeBuilder.constant(null)); |
|
289 |
} else { |
|
290 |
op2 = parse_sum(); |
|
291 |
if( op2==null ) { |
|
292 |
throw new ExpressionSyntaxException(I18N.Cant_recognize_the_second_operand_of_IS_operator(),lexer); |
|
293 |
} |
|
294 |
op1 = codeBuilder.is(op1, op2); |
|
295 |
} |
|
296 |
op1 = codeBuilder.not(op1); |
|
297 |
break; |
|
298 |
case Token.NULL: |
|
299 |
lexer.next(); |
|
300 |
op1 = codeBuilder.is(op1, codeBuilder.constant(null)); |
|
301 |
break; |
|
302 |
default: |
|
303 |
op2 = parse_sum(); |
|
304 |
if( op2==null ) { |
|
305 |
throw new ExpressionSyntaxException(I18N.Cant_recognize_the_second_operand_of_IS_operator(),lexer); |
|
306 |
} |
|
307 |
op1 = codeBuilder.is(op1, op2); |
|
289 | 308 |
} |
290 | 309 |
} |
291 | 310 |
break; |
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.symbology/org.gvsig.symbology.lib/org.gvsig.symbology.lib.impl/src/main/java/org/gvsig/symbology/fmap/mapcontext/rendering/legend/impl/AbstractVectorialLegend.java | ||
---|---|---|
41 | 41 |
|
42 | 42 |
import org.gvsig.compat.CompatLocator; |
43 | 43 |
import org.gvsig.compat.print.PrintAttributes; |
44 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
|
45 |
import org.gvsig.expressionevaluator.ExpressionUtils; |
|
44 | 46 |
import org.gvsig.fmap.dal.exception.DataException; |
45 | 47 |
import org.gvsig.fmap.dal.feature.Feature; |
46 | 48 |
import org.gvsig.fmap.dal.feature.FeatureQuery; |
... | ... | |
48 | 50 |
import org.gvsig.fmap.dal.feature.FeatureSelection; |
49 | 51 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
50 | 52 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
53 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
51 | 54 |
import org.gvsig.fmap.dal.feature.exception.ConcurrentDataModificationException; |
52 | 55 |
import org.gvsig.fmap.geom.Geometry; |
53 | 56 |
import org.gvsig.fmap.geom.GeometryLocator; |
... | ... | |
508 | 511 |
featureStore |
509 | 512 |
); |
510 | 513 |
featureQuery.addFilter(iee); |
514 |
} else { |
|
515 |
FeatureType ft = featureStore.getDefaultFeatureType(); |
|
516 |
ExpressionBuilder expbuilder = ExpressionUtils.createExpressionBuilder(); |
|
517 |
featureQuery.addFilter( |
|
518 |
expbuilder.not_is_null( |
|
519 |
expbuilder.column( |
|
520 |
ft.getDefaultGeometryAttributeName() |
|
521 |
) |
|
522 |
).toString() |
|
523 |
); |
|
511 | 524 |
} |
525 |
|
|
512 | 526 |
if (queryParameters != null) { |
513 | 527 |
Iterator iterEntry = queryParameters.entrySet().iterator(); |
514 | 528 |
Entry entry; |
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/OperationsFactoryBase.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
public class OperationsFactoryBase implements OperationsFactory { |
21 | 21 |
|
22 |
protected class DefaultTableReference implements TableReference {
|
|
22 |
public static class DefaultTableReference implements TableReference {
|
|
23 | 23 |
|
24 | 24 |
private final String database; |
25 | 25 |
private final String schema; |
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 | ||
---|---|---|
76 | 76 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
77 | 77 |
|
78 | 78 |
sqlbuilder.select().column().value( |
79 |
expbuilder.ifnull( |
|
80 |
expbuilder.column(columnName), |
|
81 |
expbuilder.constant(null), |
|
79 |
// expbuilder.ifnull(
|
|
80 |
// expbuilder.column(columnName),
|
|
81 |
// expbuilder.constant(null),
|
|
82 | 82 |
expbuilder.as_geometry( |
83 | 83 |
expbuilder.ST_ExtentAggregate( |
84 | 84 |
expbuilder.column(columnName) |
85 | 85 |
) |
86 | 86 |
) |
87 |
) |
|
87 |
// )
|
|
88 | 88 |
); |
89 |
sqlbuilder.select().group_by(expbuilder.column(columnName)); |
|
89 |
// sqlbuilder.select().group_by(expbuilder.column(columnName));
|
|
90 | 90 |
sqlbuilder.select().from().table() |
91 | 91 |
.database(this.table.getDatabase()) |
92 | 92 |
.schema(this.table.getSchema()) |
... | ... | |
121 | 121 |
); |
122 | 122 |
} |
123 | 123 |
} |
124 |
sqlbuilder.select().where().and( |
|
125 |
expbuilder.not_is_null(expbuilder.column(columnName)) |
|
126 |
); |
|
127 |
|
|
124 | 128 |
sqlbuilder.setProperties( |
125 | 129 |
Variable.class, |
126 | 130 |
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.h2/src/test/java/org/gvsig/fmap/dal/store/h2/H2SpatialSQLBuilderTest.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import junit.framework.TestCase; |
4 | 4 |
import org.apache.commons.lang3.ArrayUtils; |
5 |
import org.apache.commons.lang3.StringUtils; |
|
5 | 6 |
import org.cresques.cts.IProjection; |
6 | 7 |
import org.gvsig.expressionevaluator.ExpressionBuilder; |
7 | 8 |
import org.gvsig.fmap.crs.CRSFactory; |
8 | 9 |
import org.gvsig.fmap.dal.SQLBuilder; |
9 | 10 |
import org.gvsig.fmap.dal.SQLBuilder.Privilege; |
10 | 11 |
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase; |
12 |
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory.TableReference; |
|
13 |
import static org.gvsig.fmap.dal.store.jdbc2.spi.JDBCSQLBuilderBase.PROP_TABLE; |
|
14 |
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.OperationsFactoryBase; |
|
11 | 15 |
import org.gvsig.fmap.geom.DataTypes; |
12 | 16 |
import org.gvsig.fmap.geom.Geometry; |
13 | 17 |
import org.gvsig.fmap.geom.GeometryLocator; |
... | ... | |
36 | 40 |
return new H2SpatialSQLBuilder(new H2SpatialHelper(null)); |
37 | 41 |
} |
38 | 42 |
|
43 |
public void testCalulateEnvelopeOfColumn() throws Exception { |
|
44 |
|
|
45 |
TableReference table = new OperationsFactoryBase.DefaultTableReference("master","dbo","test1", null); |
|
46 |
String columnName = "the_geom"; |
|
47 |
|
|
48 |
SQLBuilder sqlbuilder = createSQLBuilder(); |
|
49 |
ExpressionBuilder expbuilder = sqlbuilder.expression(); |
|
50 |
|
|
51 |
sqlbuilder.select().column().value( |
|
52 |
expbuilder.as_geometry( |
|
53 |
expbuilder.ST_ExtentAggregate( |
|
54 |
expbuilder.column(columnName) |
|
55 |
) |
|
56 |
) |
|
57 |
); |
|
58 |
//sqlbuilder.select().group_by(expbuilder.column(columnName)); |
|
59 |
sqlbuilder.select().from().table() |
|
60 |
.database(table.getDatabase()) |
|
61 |
.schema(table.getSchema()) |
|
62 |
.name(table.getTable()); |
|
63 |
sqlbuilder.select().from().subquery(table.getSubquery()); |
|
64 |
|
|
65 |
sqlbuilder.select().where().and( |
|
66 |
expbuilder.not_is_null(expbuilder.column(columnName)) |
|
67 |
); |
|
68 |
|
|
69 |
System.out.println("# Test:: testCalulateEnvelopeOfColumn"); |
|
70 |
System.out.println("# SQL:: " + sqlbuilder.toString()); |
|
71 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
|
72 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
|
73 |
assertEquals( |
|
74 |
"SELECT ST_AsBinary(ST_Extent(\"the_geom\")) FROM \"dbo\".\"test1\" WHERE ( (\"the_geom\") NOT IS NULL )", |
|
75 |
sqlbuilder.toString() |
|
76 |
); |
|
77 |
assertEquals( |
|
78 |
"[the_geom]", |
|
79 |
ArrayUtils.toString(sqlbuilder.variables_names()) |
|
80 |
); |
|
81 |
assertEquals( |
|
82 |
"[]", |
|
83 |
ArrayUtils.toString(sqlbuilder.parameters_names()) |
|
84 |
); |
|
85 |
} |
|
39 | 86 |
|
40 | 87 |
public void testCalulateEnvelope() throws Exception { |
41 | 88 |
GeometryManager geometryManager = GeometryLocator.getGeometryManager(); |
... | ... | |
76 | 123 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
77 | 124 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
78 | 125 |
assertEquals( |
79 |
"SELECT ST_AsBinary(ST_Extent(\"the_geom\")) AS \"envelope\" FROM \"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326))) )) AND x = 27)", |
|
126 |
"SELECT ST_AsBinary(ST_Extent(\"the_geom\")) AS \"envelope\" FROM \"dbo\".\"test1\" WHERE (( ((ST_Envelope(\"the_geom\")) && (ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326)))) AND ST_Intersects((ST_Envelope(\"the_geom\")),(ST_GeomFromWKB((x'000000000300000001000000050000000000000000000000000000000000000000000000004059000000000000405900000000000040590000000000004059000000000000000000000000000000000000000000000000000000000000'), (4326))) )) AND x = 27)",
|
|
80 | 127 |
sqlbuilder.toString() |
81 | 128 |
); |
82 | 129 |
assertEquals( |
... | ... | |
109 | 156 |
//# Parametros:: [] |
110 | 157 |
|
111 | 158 |
assertEquals( |
112 |
"SELECT COUNT(*) FROM \"test1\" WHERE pp = 200", |
|
159 |
"SELECT COUNT(*) FROM \"dbo\".\"test1\" WHERE pp = 200",
|
|
113 | 160 |
sqlbuilder.toString() |
114 | 161 |
); |
115 | 162 |
assertEquals( |
... | ... | |
168 | 215 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
169 | 216 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
170 | 217 |
assertEquals( |
171 |
"CREATE TABLE \"test1\" (\"name\" VARCHAR(45) DEFAULT NULL, \"id\" INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, \"geom\" GEOMETRY ); ALTER TABLE \"test1\" ADD CONSTRAINT IF NOT EXISTS \"constraint_test1_geom_dim\" CHECK ST_CoordDim(\"geom\") = 2",
|
|
218 |
"CREATE TABLE \"dbo\".\"test1\" (\"name\" VARCHAR(45) DEFAULT NULL, \"id\" INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL, \"geom\" GEOMETRY ); ALTER TABLE \"dbo\".\"test1\" ADD CONSTRAINT IF NOT EXISTS \"constraint_test1_geom_dim\" CHECK NVL2(\"geom\", ST_CoordDim(\"geom\") = 2, TRUE)",
|
|
172 | 219 |
sqlbuilder.toString() |
173 | 220 |
); |
174 | 221 |
assertEquals( |
... | ... | |
194 | 241 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
195 | 242 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
196 | 243 |
assertEquals( |
197 |
"DROP TABLE \"test1\"", |
|
244 |
"DROP TABLE \"dbo\".\"test1\"",
|
|
198 | 245 |
sqlbuilder.toString() |
199 | 246 |
); |
200 | 247 |
assertEquals( |
... | ... | |
263 | 310 |
//# Parametros:: [] |
264 | 311 |
|
265 | 312 |
assertEquals( |
266 |
"SELECT * FROM \"test1\" LIMIT 1", |
|
313 |
"SELECT * FROM \"dbo\".\"test1\" LIMIT 1",
|
|
267 | 314 |
sqlbuilder.toString() |
268 | 315 |
); |
269 | 316 |
assertEquals( |
... | ... | |
301 | 348 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
302 | 349 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
303 | 350 |
assertEquals( |
304 |
"DELETE FROM \"test1\" WHERE (( (\"id1\") = (?) ) AND ( (\"id2\") = (?) ))", |
|
351 |
"DELETE FROM \"dbo\".\"test1\" WHERE (( (\"id1\") = (?) ) AND ( (\"id2\") = (?) ))",
|
|
305 | 352 |
sqlbuilder.toString() |
306 | 353 |
); |
307 | 354 |
assertEquals( |
... | ... | |
330 | 377 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
331 | 378 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
332 | 379 |
assertEquals( |
333 |
"INSERT INTO \"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )", |
|
380 |
"INSERT INTO \"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
|
|
334 | 381 |
sqlbuilder.toString() |
335 | 382 |
); |
336 | 383 |
assertEquals( |
... | ... | |
359 | 406 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
360 | 407 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
361 | 408 |
assertEquals( |
362 |
"INSERT INTO \"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )", |
|
409 |
"INSERT INTO \"dbo\".\"test1\" ( \"id\", \"name\", \"geom\" ) VALUES ( ?, ?, ST_GeomFromWKB((?), (4326)) )",
|
|
363 | 410 |
sqlbuilder.toString() |
364 | 411 |
); |
365 | 412 |
assertEquals( |
... | ... | |
395 | 442 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
396 | 443 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
397 | 444 |
assertEquals( |
398 |
"UPDATE \"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (4326)) WHERE ( (\"id\") = (?) )", |
|
445 |
"UPDATE \"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (4326)) WHERE ( (\"id\") = (?) )",
|
|
399 | 446 |
sqlbuilder.toString() |
400 | 447 |
); |
401 | 448 |
assertEquals( |
... | ... | |
432 | 479 |
System.out.println("# Variables:: " + ArrayUtils.toString(sqlbuilder.variables_names())); |
433 | 480 |
System.out.println("# Parametros:: " + ArrayUtils.toString(sqlbuilder.parameters_names())); |
434 | 481 |
assertEquals( |
435 |
"UPDATE \"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (?)) WHERE ( (\"id\") = (?) )", |
|
482 |
"UPDATE \"dbo\".\"test1\" SET \"name\" = ?, \"geom\" = ST_GeomFromWKB((?), (?)) WHERE ( (\"id\") = (?) )",
|
|
436 | 483 |
sqlbuilder.toString() |
437 | 484 |
); |
438 | 485 |
assertEquals( |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/resources/org/gvsig/fmap/dal/store/h2/H2SpatialParameters.xml | ||
---|---|---|
11 | 11 |
defaultValue="org.h2.Driver" group="Advanced"> |
12 | 12 |
<description>JDBC Driver class</description> |
13 | 13 |
</field> |
14 |
<field name="port" type="integer" mandatory="false" |
|
15 |
defaultValue="9123" group="Connection"> |
|
14 |
<field name="port" type="integer" mandatory="false" defaultValue="9123" group="Connection"> |
|
16 | 15 |
<description></description> |
17 | 16 |
</field> |
18 | 17 |
<field name="database_file" label="Database file" type="file" mandatory="true" defaultValue="" group="Basic"> |
... | ... | |
25 | 24 |
<field name="dbuser" type="string" mandatory="false" group="Basic" defaultValue="SA" > |
26 | 25 |
<description></description> |
27 | 26 |
</field> |
27 |
<!-- |
|
28 |
<field name="LOCK_TIMEOUT" type="integer" mandatory="false" group="Advanced" defaultValue="1000" > |
|
29 |
<description>Sets the lock timeout (in milliseconds) for the current session. The default value for this setting is 1000 (one second).</description> |
|
30 |
</field> |
|
31 |
<field name="MULTI_THREADED" type="integer" mandatory="false" group="Advanced" defaultValue="1000" > |
|
32 |
<description>Enabled (1) or disabled (0) multi-threading inside the database engine. MULTI_THREADED is enabled by default with default MVStore storage engine. MULTI_THREADED is disabled by default when using PageStore storage engine, enabling this with PageStore is experimental only. |
|
33 |
This is a global setting, which means it is not possible to open multiple databases with different modes at the same time in the same virtual machine. This setting is not persistent, however the value is kept until the virtual machine exits or it is changed. |
|
34 |
Admin rights are required to execute this command, as it affects all connections</description> |
|
35 |
</field> |
|
36 |
<field name="CHACHE_SIZE" type="integer" mandatory="false" group="Advanced" defaultValue="-1" > |
|
37 |
<description>Sets the size of the cache in KB (each KB being 1024 bytes) for the current database. The default is 65536 per available GB of RAM, i.e. 64 MB per GB. The value is rounded to the next higher power of two. Depending on the virtual machine, the actual memory required may be higher. |
|
38 |
This setting is persistent and affects all connections as there is only one cache per database. Using a very small value (specially 0) will reduce performance a lot. This setting only affects the database engine (the server in a client/server environment; in embedded mode, the database engine is in the same process as the application). It has no effect for in-memory databases. |
|
39 |
Admin rights are required to execute this command, as it affects all connections. This command commits an open transaction in this connection. This setting is persistent.? |
|
40 |
If -1 use the default value.</description> |
|
41 |
</field> |
|
42 |
<field name="LOG" type="integer" mandatory="false" group="Advanced" defaultValue="2" > |
|
43 |
<availableValues> |
|
44 |
<value label="0 - Transaction log is disabled completely">0</value> |
|
45 |
<value label="1 - Transaction log is enabled, but FileDescriptor.sync is disabled">1</value> |
|
46 |
<value label="2 - Transaction log is enabled, and FileDescriptor.sync is called for each checkpoint">2</value> |
|
47 |
</availableValues> |
|
48 |
<description>Sets the transaction log mode. The values 0, 1, and 2 are supported, the default is 2. This setting affects all connections. |
|
49 |
LOG 0 means the transaction log is disabled completely. It is the fastest mode, but also the most dangerous: if the process is killed while the database is open in this mode, the data might be lost. It must only be used if this is not a problem, for example when initially loading a database, or when running tests. |
|
50 |
LOG 1 means the transaction log is enabled, but FileDescriptor.sync is disabled. This setting is about half as fast as with LOG 0. This setting is useful if no protection against power failure is required, but the data must be protected against killing the process. |
|
51 |
LOG 2 (the default) means the transaction log is enabled, and FileDescriptor.sync is called for each checkpoint. This setting is about half as fast as LOG 1. Depending on the file system, this will also protect against power failure in the majority if cases. |
|
52 |
Admin rights are required to execute this command, as it affects all connections</description> |
|
53 |
<field name="LOCK_MODE" type="integer" mandatory="false" group="Advanced" defaultValue="3" > |
|
54 |
<availableValues> |
|
55 |
<value label="0 - READ_UNCOMMITTED, no locking">0</value> |
|
56 |
<value label="1 - SERIALIZABLE, table level locking">1</value> |
|
57 |
<value label="2 - Table level locking with garbage collection">2</value> |
|
58 |
<value label="3 - READ_COMMITTED, table level locking+read locks released immediately">3</value> |
|
59 |
</availableValues> |
|
60 |
<description>Sets the lock mode. The values 0, 1, 2, and 3 are supported. The default is 3 (READ_COMMITTED). This setting affects all connections. |
|
61 |
The value 0 means no locking (should only be used for testing; also known as READ_UNCOMMITTED). Please note that using SET LOCK_MODE 0 while at the same time using multiple connections may result in inconsistent transactions. |
|
62 |
The value 1 means table level locking (also known as SERIALIZABLE). |
|
63 |
The value 2 means table level locking with garbage collection (if the application does not close all connections). |
|
64 |
The value 3 means table level locking, but read locks are released immediately (default; also known as READ_COMMITTED). |
|
65 |
</description> |
|
66 |
</field> |
|
67 |
--> |
|
28 | 68 |
</fields> |
29 | 69 |
</class> |
30 | 70 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialHelper.java | ||
---|---|---|
61 | 61 |
if( dbfilename!=null && dbfilename.endsWith(".mv.db") ) { |
62 | 62 |
dbfilename = dbfilename.substring(0, dbfilename.length()-6); |
63 | 63 |
} |
64 |
StringBuilder commonParameters = new StringBuilder(); |
|
65 |
commonParameters.append(";MODE=PostgreSQL"); |
|
66 |
commonParameters.append(";SCHEMA=PUBLIC"); |
|
67 |
commonParameters.append(";ALLOW_LITERALS=ALL"); |
|
68 |
|
|
69 |
// Integer LOCK_TIMEOUT = (Integer) params.getDynValue("LOCK_TIMEOUT"); |
|
70 |
// if( LOCK_TIMEOUT!=null ) { |
|
71 |
// commonParameters.append(";LOCK_TIMEOUT=").append(LOCK_TIMEOUT); |
|
72 |
// } |
|
73 |
// Integer MULTI_THREADED = (Integer) params.getDynValue("MULTI_THREADED"); |
|
74 |
// if( MULTI_THREADED!=null ) { |
|
75 |
// commonParameters.append(";MULTI_THREADED=").append(MULTI_THREADED); |
|
76 |
// } |
|
77 |
// Integer CHACHE_SIZE = (Integer) params.getDynValue("CHACHE_SIZE"); |
|
78 |
// if( LOCK_TIMEOUT!=null ) { |
|
79 |
// commonParameters.append(";CHACHE_SIZE=").append(CHACHE_SIZE); |
|
80 |
// } |
|
81 |
// Integer LOG = (Integer) params.getDynValue("LOG"); |
|
82 |
// if( LOCK_TIMEOUT!=null ) { |
|
83 |
// commonParameters.append(";LOG=").append(LOG); |
|
84 |
// } |
|
85 |
// Integer LOCK_MODE = (Integer) params.getDynValue("LOCK_MODE"); |
|
86 |
// if( LOCK_TIMEOUT!=null ) { |
|
87 |
// commonParameters.append(";LOCK_MODE=").append(LOCK_MODE); |
|
88 |
// } |
|
89 |
|
|
64 | 90 |
if( StringUtils.isEmpty(params.getHost()) ) { |
65 | 91 |
// Asumimos que es una conexion directa sobre el filesystem |
66 | 92 |
if( StringUtils.equalsIgnoreCase(FilenameUtils.getExtension(params.getFile().getName()),"zip") ) { |
67 | 93 |
connectionURL = MessageFormat.format( |
68 |
"jdbc:h2:zip:{0}!/{1};MODE=PostgreSQL",
|
|
94 |
"jdbc:h2:zip:{0}!/{1}"+commonParameters.toString(),
|
|
69 | 95 |
dbfilename, |
70 | 96 |
params.getDBName() |
71 | 97 |
); |
72 | 98 |
} else { |
73 | 99 |
connectionURL = MessageFormat.format( |
74 |
"jdbc:h2:file:{0};MODE=PostgreSQL",
|
|
100 |
"jdbc:h2:file:{0}"+commonParameters.toString(),
|
|
75 | 101 |
dbfilename |
76 | 102 |
); |
77 | 103 |
} |
78 | 104 |
} else if( params.getPort() == null ) { |
79 | 105 |
connectionURL = MessageFormat.format( |
80 |
"jdbc:h2:tcp://{0}/{1};MODE=PostgreSQL",
|
|
106 |
"jdbc:h2:tcp://{0}/{1}"+commonParameters.toString(),
|
|
81 | 107 |
params.getHost(), |
82 | 108 |
dbfilename |
83 | 109 |
); |
84 | 110 |
} else { |
85 | 111 |
connectionURL = MessageFormat.format( |
86 |
"jdbc:h2:tcp://{0}:{1,number,#######}/{2};MODE=PostgreSQL",
|
|
112 |
"jdbc:h2:tcp://{0}:{1,number,#######}/{2}"+commonParameters.toString(),
|
|
87 | 113 |
params.getHost(), |
88 | 114 |
params.getPort().intValue(), |
89 | 115 |
dbfilename |
... | ... | |
165 | 191 |
try { |
166 | 192 |
conn.createStatement().execute("CREATE SCHEMA IF NOT EXISTS PUBLIC;SET SCHEMA PUBLIC"); |
167 | 193 |
} catch(SQLException ex) { |
168 |
//do nothing
|
|
194 |
// Ignore this error.
|
|
169 | 195 |
} |
196 |
|
|
170 | 197 |
return conn; |
171 | 198 |
} |
172 | 199 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/expressionbuilderformatter/ST_AsBinary.java | ||
---|---|---|
35 | 35 |
public String format(Value function) { |
36 | 36 |
List<Value> parameters = ((Function) function).parameters(); |
37 | 37 |
String p1 = parameters.get(0).toString(formatter); |
38 |
String r = MessageFormat.format("NVL2({0},ST_AsBinary({0}),NULL)", p1); |
|
38 |
String r = MessageFormat.format("ST_AsBinary({0})", p1); |
|
39 |
// String r = MessageFormat.format("NVL2({0},ST_AsBinary({0}),NULL)", p1); |
|
39 | 40 |
return r; |
40 | 41 |
} |
41 | 42 |
|
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialSQLBuilder.java | ||
---|---|---|
190 | 190 |
String sql; |
191 | 191 |
String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName()+"_dim"; |
192 | 192 |
sql = MessageFormat.format( |
193 |
"ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK ST_CoordDim(\"{2}\") = {3}", |
|
193 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK ST_CoordDim(\"{3}\") = {4}", |
|
194 |
this.table().getSchema(), |
|
194 | 195 |
this.table().getName(), |
195 | 196 |
constraint_name, |
196 | 197 |
column.getName(), |
... | ... | |
232 | 233 |
String sql; |
233 | 234 |
String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName()+"_dim"; |
234 | 235 |
sql = MessageFormat.format( |
235 |
"ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK ST_CoordDim(\"{2}\") = {3}", |
|
236 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK ST_CoordDim(\"{3}\") = {4}", |
|
237 |
this.table().getSchema(), |
|
236 | 238 |
this.table().getName(), |
237 | 239 |
constraint_name, |
238 | 240 |
column.getName(), |
... | ... | |
325 | 327 |
String sql; |
326 | 328 |
String constraint_name = "constraint_" + this.table().getName() + "_" + column.getName()+"_dim"; |
327 | 329 |
sql = MessageFormat.format( |
328 |
"ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK NVL2(\"{2}\", ST_CoordDim(\"{2}\") = {3}, TRUE)", |
|
330 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_CoordDim(\"{3}\") = {4}, TRUE)", |
|
331 |
this.table().getSchema(), |
|
329 | 332 |
this.table().getName(), |
330 | 333 |
constraint_name, |
331 | 334 |
column.getName(), |
... | ... | |
335 | 338 |
String sql2; |
336 | 339 |
String constraint_name2 = "constraint_" + this.table().getName() + "_" + column.getName()+"_srid"; |
337 | 340 |
sql2 = MessageFormat.format( |
338 |
"ALTER TABLE \"{0}\" ADD CONSTRAINT IF NOT EXISTS \"{1}\" CHECK NVL2(\"{2}\", ST_SRID(\"{2}\") = {3,number,#####}, TRUE)", |
|
339 |
this.table().getName(), // 0 |
|
340 |
constraint_name2, // 1 |
|
341 |
column.getName(), // 2 |
|
342 |
column.getGeometrySRSId() // 3 |
|
341 |
"ALTER TABLE \"{0}\".\"{1}\" ADD CONSTRAINT IF NOT EXISTS \"{2}\" CHECK NVL2(\"{3}\", ST_SRID(\"{3}\") = {4,number,#####}, TRUE)", |
|
342 |
this.table().getSchema(), // 0 |
|
343 |
this.table().getName(), // 1 |
|
344 |
constraint_name2, // 2 |
|
345 |
column.getName(), // 3 |
|
346 |
column.getGeometrySRSId() // 4 |
|
343 | 347 |
); |
344 | 348 |
sqls.add(sql2); |
345 | 349 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/vectorial/IntersectsGeometryEvaluator.java | ||
---|---|---|
99 | 99 |
|
100 | 100 |
@Override |
101 | 101 |
public String getSQL() { |
102 |
ExpressionBuilder.Variable column = builder.column(fad.getName()); |
|
102 | 103 |
return builder.set( |
103 |
builder.ST_Intersects( |
|
104 |
builder.column(this.fad.getName()), |
|
105 |
builder.geometry(geometry, this.projection) |
|
104 |
builder.and( |
|
105 |
builder.not_is_null(column), |
|
106 |
builder.ST_Intersects( |
|
107 |
column, |
|
108 |
builder.geometry(geometry, this.projection) |
|
109 |
) |
|
106 | 110 |
) |
107 | 111 |
).toString(); |
108 | 112 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/layers/vectorial/IntersectsEnvelopeEvaluator.java | ||
---|---|---|
88 | 88 |
|
89 | 89 |
@Override |
90 | 90 |
public String getSQL() { |
91 |
ExpressionBuilder.Variable column = builder.column(fad.getName()); |
|
91 | 92 |
return builder.set( |
92 |
builder.ST_Intersects( |
|
93 |
builder.ST_Envelope(builder.column(fad.getName())), |
|
94 |
builder.geometry(envelope.getGeometry(), this.projection) |
|
93 |
builder.and( |
|
94 |
builder.not_is_null(column) , |
|
95 |
builder.ST_Intersects( |
|
96 |
builder.ST_Envelope(column), |
|
97 |
builder.geometry(envelope.getGeometry(), this.projection) |
|
98 |
) |
|
95 | 99 |
) |
96 | 100 |
).toString(); |
97 | 101 |
} |
Also available in: Unified diff