OQL JUnit Test Report

Created on 2011-06-24 12:49.
Generated using JUnit, Ant and xml-doclet.

Summary

TestsSkippedFailuresErrorsSuccess rateTime
253150299.16%2.992
Note: failures are anticipated and checked for with assertions while errors are unanticipated.

Packages

Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
NameTestsSkippedErrorsFailuresSuccessTime(s)Time StampHost
rs.sol.soloist.diethylether.oql.tests253152099.16%2.992

Package rs.sol.soloist.diethylether.oql.tests

NameTestsSkippedErrorsFailuresSuccessTime(s)Time StampHost
AggregatesWithGroupBy1000100.00%0.016
AggregatesWithoutGroupBy9000100.00%0.055
AssertExpressionTree1000100.00%0.055
Cartesian3000100.00%0.523
ConstantsAndParameters4952095.45%0.339
HopHop8000100.00%0.127
LimitAndOffset4000100.00%0.030
OrderByAttributes12000100.00%0.033
RandomOQL2000100.00%0.057
SelectAllProperties4100100.00%0.016
SelectAttributes8000100.00%0.021
SelectConstant8200100.00%0.007
SelectDistinct2000100.00%0.030
SelectExpressionsAliases10100100.00%0.134
SelectInstance14000100.00%0.060
UnionQuery6000100.00%0.307
WhereAttributes7000100.00%0.053
WhereExpressionBasicArithmeticInteger45500100.00%0.453
WhereExpressionsExotic15100100.00%0.057
WhereExpressionsPrecedenceAndGrouping45000100.00%0.619
Back to top


TestCase AggregatesWithGroupBy

TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT c.text, MAX(c.numeric) 
 FROM Class c
 GROUP BY c.text
 HAVING MAX(c.numeric) > 0
Success0.016

Back to top

TestCase AggregatesWithoutGroupBy

TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT COUNT(*) FROM Class cSuccess0.008
SELECT COUNT(DISTINCT c.attr) FROM Class cSuccess0.006
SELECT COUNT(c.attr) FROM Class cSuccess0.003
SELECT MAX(c.numeric) FROM Class cSuccess0.009
SELECT MAX(c.text) FROM Class cSuccess0.003
SELECT MIN(c.numeric) FROM Class cSuccess0.009
SELECT MIN(c.text) FROM Class cSuccess0.003
SELECT SUM(c.numeric) FROM Class cSuccess0.004
SELECT AVG(c.numeric) FROM Class cSuccess0.009

Back to top

TestCase AssertExpressionTree

TestStatusMessage (Click to toggle stack traces)Time(s)
test1Success0.055

Back to top

TestCase Cartesian

Navigation tree with multiple roots (i.e. a forest of navigation trees).
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT a, b FROM A a, B bSuccess0.495
SELECT a1, a2 FROM A a1, A a2Success0.011
SELECT * FROM A a, B b
(same as SELECT a, b)
Success0.017

Back to top

TestCase ConstantsAndParameters

Query:
SELECT c.attr FROM fq::Class c WHERE attr = ...
Tests:
  • literals of various types (constants)
  • type inference for constants
  • type inference for parameters

TODO: Currency, Time, other types ?
TODO: In general, qualified should work as follows: type 'value' => Type.fromString("value"). When using type inference, type may be omitted.
TestStatusMessage (Click to toggle stack traces)Time(s)
'Constant text'Success0.000
''Success0.001
0Success0.002
42Success0.009
-42Success0.003
0x2ASuccess0.002
x'2A'Success0.009
2AhSkipped0.000
052Success0.008
52oSkipped0.001
0b101010Success0.002
b'101010'Success0.002
101010bSkipped0.001
42
(should be cast to real)
Success0.019
real '1.618'Success0.000
1.618Success0.006
-1.618Success0.003
.618Success0.009
-.618Success0.003
1.Success0.002
-1.Success0.002
6.022E+23Success0.009
-6.022E+23Success0.003
6E23Success0.060
TODO: find a model that has a attribute of type CurrencySkipped0.000
currency '1.618'Success0.015
trueSuccess0.002
TRUESuccess0.002
falseSuccess0.009
FALSESuccess0.002
WHERE c.booleanAttr
(implicit = TRUE; explicit is also allowed)
Success0.001
date'2011-05-13'Success0.010
date '2011-05-13'Success0.002
'2011-05-13'
(inferred: Date)
Success0.015
TODO: find a model that has a attribute of type CurrencySkipped0.000
time '10:20:30.000'Success0.002
time '10:20:30'Success0.007
time '10:20'Error
rs.sol.soloist.server.javaimpl.oql.OQLException: java.lang.IllegalArgumentException: Cannot parse Time: 10:20 (tried HH:mm:ss.SSS and HH:mm:ss)


rs.sol.soloist.server.javaimpl.oql.OQLException: java.lang.IllegalArgumentException: Cannot parse Time: 10:20 (tried HH:mm:ss.SSS and HH:mm:ss)
at rs.sol.soloist.server.javaimpl.oql.OQLQuery.compile(OQLQuery.java:47)
at rs.sol.soloist.server.javaimpl.oql.DefaultOQLCompilerImpl.compileToQueryDefinition(DefaultOQLCompilerImpl.java:23)
at rs.sol.soloist.diethylether.oql.OQLTestBase.compile(OQLTestBase.java:45)
at rs.sol.soloist.diethylether.oql.tests.ConstantsAndParameters.constant_time_lenient2(ConstantsAndParameters.java:508)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.IllegalArgumentException: Cannot parse Time: 10:20 (tried HH:mm:ss.SSS and HH:mm:ss)
at rs.sol.soloist.server.builtindomains.builtindatatypes.Time.fromString(Time.java:245)
at rs.sol.soloist.server.javaimpl.oql.Constant.resolve(Constant.java:166)
at rs.sol.soloist.server.javaimpl.oql.Operator.createConstant(Operator.java:479)
at rs.sol.soloist.server.javaimpl.oql.Constant.get(Constant.java:83)
at rs.sol.soloist.server.javaimpl.oql.SelectClause$SelectExprElem.translate(SelectClause.java:76)
at rs.sol.soloist.server.javaimpl.oql.SelectClause.translate(SelectClause.java:32)
at rs.sol.soloist.server.javaimpl.oql.SimpleQuery.translate(SimpleQuery.java:67)
at rs.sol.soloist.server.javaimpl.oql.SimpleQuery.translate(SimpleQuery.java:1)
at rs.sol.soloist.server.javaimpl.oql.OQLQuery.compile(OQLQuery.java:40)
... 25 more
Caused by: java.text.ParseException: Unparseable date: "10:20"
at java.text.DateFormat.parse(DateFormat.java:337)
at rs.sol.soloist.server.builtindomains.builtindatatypes.Time.fromString(Time.java:233)
... 33 more

0.048
time '10:20PM'Error
rs.sol.soloist.server.javaimpl.oql.OQLException: java.lang.IllegalArgumentException: Cannot parse Time: 10:20PM (tried HH:mm:ss.SSS and HH:mm:ss)


rs.sol.soloist.server.javaimpl.oql.OQLException: java.lang.IllegalArgumentException: Cannot parse Time: 10:20PM (tried HH:mm:ss.SSS and HH:mm:ss)
at rs.sol.soloist.server.javaimpl.oql.OQLQuery.compile(OQLQuery.java:47)
at rs.sol.soloist.server.javaimpl.oql.DefaultOQLCompilerImpl.compileToQueryDefinition(DefaultOQLCompilerImpl.java:23)
at rs.sol.soloist.diethylether.oql.OQLTestBase.compile(OQLTestBase.java:45)
at rs.sol.soloist.diethylether.oql.tests.ConstantsAndParameters.constant_time_lenient3(ConstantsAndParameters.java:519)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.IllegalArgumentException: Cannot parse Time: 10:20PM (tried HH:mm:ss.SSS and HH:mm:ss)
at rs.sol.soloist.server.builtindomains.builtindatatypes.Time.fromString(Time.java:245)
at rs.sol.soloist.server.javaimpl.oql.Constant.resolve(Constant.java:166)
at rs.sol.soloist.server.javaimpl.oql.Operator.createConstant(Operator.java:479)
at rs.sol.soloist.server.javaimpl.oql.Constant.get(Constant.java:83)
at rs.sol.soloist.server.javaimpl.oql.SelectClause$SelectExprElem.translate(SelectClause.java:76)
at rs.sol.soloist.server.javaimpl.oql.SelectClause.translate(SelectClause.java:32)
at rs.sol.soloist.server.javaimpl.oql.SimpleQuery.translate(SimpleQuery.java:67)
at rs.sol.soloist.server.javaimpl.oql.SimpleQuery.translate(SimpleQuery.java:1)
at rs.sol.soloist.server.javaimpl.oql.OQLQuery.compile(OQLQuery.java:40)
... 25 more
Caused by: java.text.ParseException: Unparseable date: "10:20PM"
at java.text.DateFormat.parse(DateFormat.java:337)
at rs.sol.soloist.server.builtindomains.builtindatatypes.Time.fromString(Time.java:233)
... 33 more

0.003
datetime'2011-05-13 23:45:00.000'Success0.008
datetime'2011-05-13 23:45:00'Success0.009
timestamp'2011-05-13 23:45:00.000'
(same as DateTime)
Success0.003
'2011-05-13 23:45:00.000'
(inferred: DateTime)
Success0.019
'packages::Enumeration::literal'Success0.002
'Enumeration::literal'Success0.003
'literal'Success0.004
Enumeration'literal'Success0.002
packages::Enumeration'literal'Success0.002
#param#
(type of the parameter should be inferred automatically)
Success0.005

Back to top

TestCase HopHop

Navigation over association ends of different multiplicities ([1..1], [0..1], [0..*]). Tests multiplicities in tuple type of the result.
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT c, p FROM packages::Class c, c.property p
 => (Class[1], property.type[1])
Success0.013
SELECT c, c.property FROM packages::Class c
 => (Class[1], property.type[property.multiplicity])
Success0.007
SELECT c, p FROM packages::Class c, c.fq::property p
 => (Class[1], property.type[1])
Success0.020
SELECT c, c.fq::property FROM packages::Class c
 => (Class[1], property.type[property.multiplicity])
Success0.004
SELECT c, p1, p2 FROM packages::Class c, c.property p1, c.property p2
 => (Class[1], property.type[1], property.type[1])
Success0.012
SELECT c, c.property p1, c.property p2 FROM packages::Class c
 => (Class[1], property.type[property.multiplicity], property.type[property.multiplicity])
Success0.012
SELECT c, c.property, c.property FROM packages::Class c
 => (Class[1], property.type[property.multiplicity], property.type[property.multiplicity])
Success0.008
SELECT c, c.property, c.property FROM packages::Class c, c.property p1, c.property p2
 => ambiguous c.property (can be either p1 or p2)
Success0.051

Back to top

TestCase LimitAndOffset

TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT ... LIMIT sizeSuccess0.002
SELECT ... LIMIT size OFFSET offsetSuccess0.008
SELECT ... OFFSET offset LIMIT sizeSuccess0.002
SELECT ... OFFSET offsetSuccess0.018

Back to top

TestCase OrderByAttributes

Elements:
class Base { attr; attr2; }==>class DirectoryEntity { code: Text; name: Text; }
class SubClass extends Base { ae: Linked; }==>class City extends DirectoryEntity { ae: Country }
class Linked==>class Country extends DirectoryEntity
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT c, c.attr AS x FROM packages::SubClass c ORDER BY xSuccess0.002
SELECT c, c.attr AS x FROM packages::SubClass c ORDER BY x ASCSuccess0.001
SELECT c, c.attr AS x FROM packages::SubClass c ORDER BY x DESCSuccess0.005
SELECT c, x FROM packages::SubClass c, c.attr as x ORDER BY xSuccess0.002
SELECT c, p FROM packages::SubClass c, c.ae p ORDER BY c.attr1, p.attr2Success0.001
SELECT c, p FROM packages::SubClass c, c.ae p ORDER BY c.attr1, p.attr2Success0.008
SELECT c FROM packages::Base c ORDER BY c.attrSuccess0.001
SELECT c FROM packages::SubClass c ORDER BY c.attrSuccess0.002
SELECT * FROM packages::Base ORDER BY attrSuccess0.001
SELECT * FROM packages::SubClass ORDER BY attrSuccess0.001
SELECT c FROM packages::Base c ORDER BY c.packages::Base::attrSuccess0.001
SELECT c FROM packages::SubClass c ORDER BY c.packages::Base::attrSuccess0.008

Back to top

TestCase RandomOQL

TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT p, trcm.municipality FROM Parcel p p.actualRecords:TRRECEntityCadastralMunicipality trcm WHERE p.fullCode LIKE '703539-%'Success0.049
SELECT p, trg.code FROM Parcel p, p.actualRecords:TRRECEntityCadastralMunicipality.municipality.actualRecords:TRGeoEntityIdentifier trg WHERE trg.code = '703539'Success0.008

Back to top

TestCase SelectAllProperties

TODO: class with properties of multiplicity [*]
Elements:
class Root==>class ObjectOfClass { };
class Base extends Root==>class GeoEntity { ... };
class SubClass extends Base==>class Parcel { ... };
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT b.* FROM packages::Base bSuccess0.006
SELECT c.* FROM packages::SubClass cSuccess0.007
SELECT r.* FROM ObjectOfClass r
If there a class has no properties whatsoever, should r.* be an error?
Skipped0.000
SELECT b, b.* FROM packages::Base bSuccess0.003

Back to top

TestCase SelectAttributes

Elements:
class Base { attr; }==>class DirectoryEntity { code: Text };
class SubClass extends Base==>class City extends DirectoryEntity;
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT c.attr FROM packages::Base cSuccess0.002
SELECT c.attr FROM Base cSuccess0.004
SELECT c.attr FROM packages::SubClass cSuccess0.001
SELECT c.attr FROM SubClass cSuccess0.003
SELECT attr FROM packages::BaseSuccess0.004
SELECT attr FROM packages::Base bSuccess0.001
SELECT c.packages::Base::attr FROM packages::Base cSuccess0.003
SELECT c.packages::Base::attr FROM packages::SubClass cSuccess0.003

Back to top

TestCase SelectConstant

Constant queries (a constant in SELECT, with or without FROM).
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT 1 (using SimpleQueryDefinition)Success0.001
SELECT 'one' (using SimpleQueryDefinition)Success0.000
SELECT 1 FROM ObjectOfClass (using SimpleQueryDefinition)
Note: it returns all rows in the table!
Success0.000
SELECT 'one' FROM ObjectOfClass (using SimpleQueryDefinition)
Note: it returns all rows in the table!
Success0.001
SELECT 1 (using OQL)Skipped0.001
SELECT 'one' (using OQL)Skipped0.000
SELECT 1 FROM ObjectOfClass (using OQL; compile only)Success0.001
SELECT 'one' FROM ObjectOfClass (using OQL; compile only)Success0.002

Back to top

TestCase SelectDistinct

TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT DISTINCT c.* FROM packages::SubClass cSuccess0.029
SELECT DISTINCT c.attr1, c.attr2 FROM packages::SubClass cSuccess0.001

Back to top

TestCase SelectExpressionsAliases

TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT c.attr + 1 AS x, x + 1 FROM Class c
(refer to an symbol defined before)
Success0.004
SELECT c.attr + 1 AS x, x + 1 AS y, x - 1 AS z, y + z AS w FROM Class c
(refer to symbols defined before)
Success0.026
SELECT x + 1, c.attr + 1 AS x FROM Class c
(refer to an symbol defined later)
Skipped0.001
SELECT x + 1 AS y, y + 1 AS x FROM Class c
(cyclic references are not allowed)
Success0.004
SELECT c.attr AS x FROM Class c WHERE x + 1 != 0
(WHERE refers to an variable defined in SELECT)
Success0.019
SELECT c.attr + 1 AS x FROM Class c WHERE x + 1 != 0
(WHERE refers to an expression defined in SELECT)
Success0.007
SELECT c.property AS p FROM Class c WHERE p.attr = 'Pera'
(WHERE refers to an variable defined in SELECT and hops over its attribute)
Success0.020
SELECT c.attr + 1 AS x FROM Class c ORDER BY x + 1
(ORDER BY refers to an expression defined in SELECT)
Success0.030
SELECT c.attr AS x, x + 1 AS y FROM Class c ORDER BY x + y
(ORDER BY refers to an variable defined in SELECT)
Success0.003
SELECT c.property AS p FROM Class c ORDER BY p.attr
(ORDER BY refers to an variable defined in SELECT and hops over its attribute)
Success0.019

Back to top

TestCase SelectInstance

Simple queries that should return all instances of class - resulting tuple type: (Class[1]).
Tests:
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT c FROM packages::Class AS cSuccess0.001
SELECT c FROM packages::Class cSuccess0.001
SELECT c FROM Class AS c
SELECT c FROM Class c
Success0.002
SELECT * FROM packages::ClassSuccess0.001
SELECT * FROM ClassSuccess0.001
SELECT * FROM packages::Class AS c
SELECT * FROM packages::Class c
Success0.001
SELECT * FROM Class AS c
SELECT * FROM Class c
Success0.002
SELECT * FROM Integer (should fail)Success0.001
SELECT * FROM "packages::Class" AS "c"
SELECT * FROM "packages::Class" "c"
Success0.001
SELECT "@#$%^\"!" FROM "packages::Class" AS "@#$%^\"!"
SELECT "@#$%^\"!" FROM "packages::Class" "@#$%^\"!"
Success0.002
SELECT * FROM "Class" AS "c"
SELECT * FROM "Class" "c"
Success0.011
SELECT * FROM "rs"::"sol"::"package"::"Class" AS c
SELECT * FROM "rs"::"sol"::"package"::"Class" c
Success0.010
SELECT * FROM rs::"sol"::package::"Class" AS c
SELECT * FROM rs::"sol"::package::"Class" c
Success0.004
SELECT * FROM "rs::sol"::package::Class AS c
SELECT * FROM "rs::sol"::package::Class c
Success0.022

Back to top

TestCase UnionQuery

TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT * FROM Class1 
 UNION
 SELECT * FROM Class2
Success0.144
SELECT * FROM Class1 
 UNION
 SELECT * FROM Class2
 UNION
 SELECT * FROM Class3
Success0.014
SELECT * FROM Class1 
 DISTINCT UNION
 SELECT * FROM Class2
Success0.004
SELECT * FROM Class1 
 UNION DISTINCT 
 SELECT * FROM Class2
Success0.005
SELECT * FROM Class1 
 UNION ALL 
 SELECT * FROM Class2
Success0.005
randomUnionSuccess0.134

Back to top

TestCase WhereAttributes

Elements:
class Base { attr; }==>class DirectoryEntity { code: Text };
class SubClass extends Base==>class City extends DirectoryEntity;
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT c.attr AS x FROM packages::Base c WHERE x = #param#Success0.008
SELECT c.attr FROM packages::Base c WHERE c.attr = #param#Success0.012
SELECT c.attr FROM packages::SubClass c WHERE c.attr = #param#Success0.003
SELECT c.attr FROM packages::Base c WHERE c.packages::Base::attr = #param#Success0.002
SELECT c.attr FROM packages::SubClass c WHERE c.packages::Base::attr = #param#Success0.009
SELECT attr FROM packages::Base WHERE attr = #param#Success0.012
SELECT attr FROM packages::Base b WHERE attr = #param#Success0.006

Back to top

TestCase WhereExpressionBasicArithmeticInteger

Tests basic arithmetic expressions (in WHERE).
Note: Tests herein are auto-generated using {@link GenerateExpressionsBinaryArithmeticOperators}
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT * FROM Class c WHERE c.attr + c.attr = #dummy#Success0.011
SELECT * FROM Class c WHERE c.attr + #param# = #dummy#Success0.008
SELECT * FROM Class c WHERE #param# + c.attr = #dummy#Success0.011
SELECT * FROM Class c WHERE c.attr + const = #dummy#Success0.008
SELECT * FROM Class c WHERE const + c.attr = #dummy#Success0.009
SELECT * FROM Class c WHERE #param# + #param# = #dummy#Skipped0.014
SELECT * FROM Class c WHERE #param# + const = #dummy#Success0.005
SELECT * FROM Class c WHERE const + #param# = #dummy#Success0.010
SELECT * FROM Class c WHERE const + const = #dummy#Success0.009
SELECT * FROM Class c WHERE c.attr - c.attr = #dummy#Success0.009
SELECT * FROM Class c WHERE c.attr - #param# = #dummy#Success0.010
SELECT * FROM Class c WHERE #param# - c.attr = #dummy#Success0.013
SELECT * FROM Class c WHERE c.attr - const = #dummy#Success0.016
SELECT * FROM Class c WHERE const - c.attr = #dummy#Success0.004
SELECT * FROM Class c WHERE #param# - #param# = #dummy#Skipped0.010
SELECT * FROM Class c WHERE #param# - const = #dummy#Success0.006
SELECT * FROM Class c WHERE const - #param# = #dummy#Success0.022
SELECT * FROM Class c WHERE const - const = #dummy#Success0.009
SELECT * FROM Class c WHERE c.attr * c.attr = #dummy#Success0.020
SELECT * FROM Class c WHERE c.attr * #param# = #dummy#Success0.006
SELECT * FROM Class c WHERE #param# * c.attr = #dummy#Success0.016
SELECT * FROM Class c WHERE c.attr * const = #dummy#Success0.008
SELECT * FROM Class c WHERE const * c.attr = #dummy#Success0.013
SELECT * FROM Class c WHERE #param# * #param# = #dummy#Skipped0.009
SELECT * FROM Class c WHERE #param# * const = #dummy#Success0.006
SELECT * FROM Class c WHERE const * #param# = #dummy#Success0.013
SELECT * FROM Class c WHERE const * const = #dummy#Success0.012
SELECT * FROM Class c WHERE c.attr / c.attr = #dummy#Success0.016
SELECT * FROM Class c WHERE c.attr / #param# = #dummy#Success0.007
SELECT * FROM Class c WHERE #param# / c.attr = #dummy#Success0.015
SELECT * FROM Class c WHERE c.attr / const = #dummy#Success0.009
SELECT * FROM Class c WHERE const / c.attr = #dummy#Success0.014
SELECT * FROM Class c WHERE #param# / #param# = #dummy#Skipped0.004
SELECT * FROM Class c WHERE #param# / const = #dummy#Success0.003
SELECT * FROM Class c WHERE const / #param# = #dummy#Success0.005
SELECT * FROM Class c WHERE const / const = #dummy#Success0.011
SELECT * FROM Class c WHERE c.attr mod c.attr = #dummy#Success0.011
SELECT * FROM Class c WHERE c.attr mod #param# = #dummy#Success0.007
SELECT * FROM Class c WHERE #param# mod c.attr = #dummy#Success0.009
SELECT * FROM Class c WHERE c.attr mod const = #dummy#Success0.007
SELECT * FROM Class c WHERE const mod c.attr = #dummy#Success0.011
SELECT * FROM Class c WHERE #param# mod #param# = #dummy#Skipped0.003
SELECT * FROM Class c WHERE #param# mod const = #dummy#Success0.003
SELECT * FROM Class c WHERE const mod #param# = #dummy#Success0.011
SELECT * FROM Class c WHERE const mod const = #dummy#Success0.019

Back to top

TestCase WhereExpressionsExotic

BETWEEN, IN, IS NULL, INSTANCEOF
TestStatusMessage (Click to toggle stack traces)Time(s)
SELECT c FROM Class c WHERE c.attr IS NULLSuccess0.004
SELECT c FROM Class c WHERE c.ae1 IS NULLSuccess0.003
SELECT c FROM Class c, c.aeM m NULLABLE WHERE m IS NULLSuccess0.002
SELECT c FROM Class c WHERE c INSTANCEOF ClassSuccess0.003
SELECT c FROM Class c WHERE c.ae1 INSTANCEOF AnotherClassSuccess0.004
SELECT c FROM Class c, c.aeM m NULLABLE WHERE m INSTANCEOF AnotherClassSuccess0.003
SELECT c FROM Class c WHERE c.attr IN ('a', 'b', 'c')Success0.014
SELECT c FROM Class c WHERE c.attr IN (1, 2, 3)Success0.002
SELECT c FROM Class c WHERE c.attr BETWEEN 'a' AND 'c'Success0.002
SELECT c FROM Class c WHERE c.attr BETWEEN 1 AND 3Success0.002
SELECT c FROM Class c WHERE c.attr BETWEEN 'a' AND #param#Success0.004
SELECT c FROM Class c WHERE c.attr BETWEEN 1 AND #param#Success0.003
SELECT c FROM Class c WHERE c.attr BETWEEN #param1# AND #param2#Success0.003
SELECT c FROM Class c WHERE c.attr BETWEEN #param1# AND #param2#Success0.003
SELECT c FROM Class c WHERE c.attr IN #multivaluedParam#Skipped0.004

Back to top

TestCase WhereExpressionsPrecedenceAndGrouping

Test operator grouping and precedence by comparing an expression without parentheses (test OQL) with an equivalent expression written with parentheses (control OQL).
Control OQL is compiled first, then test OQL is compiled and then the expressions are compared.
Test case are generated using {@link GenerateExpressionsPrecedenceAndGrouping}.
TestStatusMessage (Click to toggle stack traces)Time(s)
1 + 2 + 3
is same as
(1 + 2) + 3
Success0.014
1 + 2 - 3
is same as
(1 + 2) - 3
Success0.014
1 - 2 - 3
is same as
(1 - 2) - 3
Success0.012
1 - 2 + 3
is same as
(1 - 2) + 3
Success0.016
1 + 2 - 3 + 4 - 5
is same as
(((1 + 2) - 3) + 4) - 5
Success0.017
1 * 2 * 3
is same as
(1 * 2) * 3
Success0.006
1 * 2 / 3
is same as
(1 * 2) / 3
Success0.015
1 * 2 / 3 mod 4
is same as
((1 * 2) / 3) mod 4
Success0.012
1 + 2 * 3
is same as
(1 + (2 * 3))
Success0.013
1 / 2 - 3
is same as
((1 / 2) - 3)
Success0.012
1 mod 2 + 3 * 4
is same as
((1 mod 2) + (3 * 4))
Success0.012
1 + 2 * 3 + 4
is same as
(1 + (2 * 3)) + 4
Success0.014
1 + 2 * 3 - 4
is same as
(1 + (2 * 3)) - 4
Success0.020
- 1 + 2
is same as
(- 1) + 2
Success0.036
1 + - 2
is same as
1 + (- 2)
Success0.026
- 1 - 2
is same as
(- 1) - 2
Success0.016
1 - - 2
is same as
1 - (- 2)
Success0.019
- 1 * 2
is same as
(- 1) * 2
Success0.030
1 / - 2
is same as
1 / (- 2)
Success0.006
true AND false AND false
is same as
((true AND false) AND false)
Success0.007
true AND false AND (1=2)
is same as
((true AND false) AND (1=2))
Success0.007
true OR false OR false
is same as
((true OR false) OR false)
Success0.008
true OR false OR (1=2)
is same as
((true OR false) OR (1=2))
Success0.011
false OR true AND false
is same as
false OR (true AND false)
Success0.014
false AND true OR false
is same as
(false AND true) OR false
Success0.018
false AND NOT true
is same as
(false AND (NOT true))
Success0.009
NOT false AND true
is same as
((NOT false) AND true)
Success0.013
false OR NOT true
is same as
(false OR (NOT true))
Success0.013
NOT false OR true
is same as
((NOT false) OR true)
Success0.013
1!=2 AND 3=4
is same as
(1!=2) AND (3=4)
Success0.025
1!=2 AND false
is same as
(1!=2) AND false
Success0.008
false!=true AND true
is same as
(false!=true) AND true
Success0.012
1!=2 OR 3=4
is same as
(1!=2) OR (3=4)
Success0.014
1!=2 OR false
is same as
(1!=2) OR false
Success0.013
false!=true OR true
is same as
(false!=true) OR true
Success0.006
NOT false != true
is same as
(NOT false) != true
Success0.011
1*2 < 3
is same as
(1*2) < 3
Success0.013
1+2 = 3
is same as
(1+2) = 3
Success0.012
1 < 2 = 2 < 3
is same as
(1 < 2) = (2 < 3)
Success0.015
- - 1
is same as
- (- 1)
Success0.004
- -1
is same as
- (- 1)
Success0.009
-- 1
is same as
- (- 1)
Success0.009
--1
is same as
- (- 1)
Success0.008
NOT NOT (1 = 2)
is same as
NOT (NOT (1=2))
Success0.013
1 + 2 * 3 = 4 AND NOT false OR NOT true = false
is same as
((1 + (2 * 3) = 4) AND (NOT (false))) OR ((NOT (true)) = false)
Success0.023

Back to top