Skip to content

Commit 2be887a

Browse files
authored
Add DB2 z/OS support for new JPA 3.1 supported functions (#1831)
* Issue 1821: Add DB2 ZOS support for JPA 31 supported functions Signed-off-by: Will Dazey <[email protected]>
1 parent 1092bbf commit 2be887a

File tree

3 files changed

+1204
-15
lines changed

3 files changed

+1204
-15
lines changed

foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/platform/database/DB2ZPlatform.java

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,13 @@ protected void initializePlatformOperators() {
168168

169169
addOperator(likeEscapeOperator());
170170
addOperator(notLikeEscapeOperator());
171+
172+
addOperator(ceilingOperator());
173+
addOperator(floorOperator());
174+
addOperator(expOperator());
175+
addOperator(lnOperator());
176+
addOperator(powerOperator());
177+
addOperator(signOperator());
171178
}
172179

173180
/**
@@ -751,6 +758,32 @@ public void printJavaDuo(Expression first, Expression second, ExpressionJavaPrin
751758
return operator;
752759
}
753760

761+
/**
762+
* Disable binding support.
763+
* <p>
764+
* With binding enabled, DB2 z/OS will throw an error:
765+
* <pre>The statement cannot be executed because a parameter marker has been used
766+
* in an invalid way. DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610</pre>
767+
*/
768+
protected ExpressionOperator ceilingOperator() {
769+
ExpressionOperator operator = disableAllBindingExpression();
770+
ExpressionOperator.ceil().copyTo(operator);
771+
return operator;
772+
}
773+
774+
/**
775+
* Disable binding support.
776+
* <p>
777+
* With binding enabled, DB2 z/OS will throw an error:
778+
* <pre>The statement cannot be executed because a parameter marker has been used
779+
* in an invalid way. DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610</pre>
780+
*/
781+
protected ExpressionOperator floorOperator() {
782+
ExpressionOperator operator = disableAllBindingExpression();
783+
ExpressionOperator.floor().copyTo(operator);
784+
return operator;
785+
}
786+
754787
/**
755788
* Disable binding support.
756789
* <p>
@@ -766,6 +799,58 @@ protected ExpressionOperator roundOperator() {
766799
return operator;
767800
}
768801

802+
/**
803+
* Disable binding support.
804+
* <p>
805+
* With binding enabled, DB2 z/OS will throw an error:
806+
* <pre>The statement cannot be executed because a parameter marker has been used
807+
* in an invalid way. DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610</pre>
808+
*/
809+
protected ExpressionOperator expOperator() {
810+
ExpressionOperator operator = disableAllBindingExpression();
811+
ExpressionOperator.exp().copyTo(operator);
812+
return operator;
813+
}
814+
815+
/**
816+
* Disable binding support.
817+
* <p>
818+
* With binding enabled, DB2 z/OS will throw an error:
819+
* <pre>The statement cannot be executed because a parameter marker has been used
820+
* in an invalid way. DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610</pre>
821+
*/
822+
protected ExpressionOperator lnOperator() {
823+
ExpressionOperator operator = disableAllBindingExpression();
824+
ExpressionOperator.ln().copyTo(operator);
825+
return operator;
826+
}
827+
828+
/**
829+
* Disable binding support.
830+
* <p>
831+
* With binding enabled, DB2 z/OS will throw an error:
832+
* <pre>The statement cannot be executed because a parameter marker has been used
833+
* in an invalid way. DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610</pre>
834+
*/
835+
protected ExpressionOperator powerOperator() {
836+
ExpressionOperator operator = disableAllBindingExpression();
837+
ExpressionOperator.power().copyTo(operator);
838+
return operator;
839+
}
840+
841+
/**
842+
* Disable binding support.
843+
* <p>
844+
* With binding enabled, DB2 z/OS will throw an error:
845+
* <pre>The statement cannot be executed because a parameter marker has been used
846+
* in an invalid way. DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610</pre>
847+
*/
848+
protected ExpressionOperator signOperator() {
849+
ExpressionOperator operator = disableAllBindingExpression();
850+
ExpressionOperator.sign().copyTo(operator);
851+
return operator;
852+
}
853+
769854
@Override
770855
public boolean isDB2Z() {
771856
return true;

jpa/eclipselink.jpa.test.jse/src/it/java/org/eclipse/persistence/jpa/test/query/TestQuerySyntaxAggregateTests.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public void testAvg1_PartialBind() {
168168
query = em.createQuery("SELECT AVG(1) FROM QuerySyntaxEntity s");
169169
query.getResultList();
170170
Assert.assertEquals(1, _sql2.size());
171-
if(platform.isDB2Z() || platform.isDB2() || platform.isDerby()) {
171+
if(platform.isDB2Z() || platform.isDerby()) {
172172
Assert.assertEquals("SELECT AVG(1) FROM QUERYSYNTAXENTITY", _sql2.remove(0));
173173
} else {
174174
Assert.assertEquals("SELECT AVG(?) FROM QUERYSYNTAXENTITY", _sql2.remove(0));
@@ -200,7 +200,7 @@ public void testAvg1_PartialBind() {
200200
query = em.createQuery(cquery2);
201201
query.getResultList();
202202
Assert.assertEquals(1, _sql2.size());
203-
if(platform.isDB2Z() || platform.isDB2() || platform.isDerby()) {
203+
if(platform.isDB2Z() || platform.isDerby()) {
204204
Assert.assertEquals("SELECT AVG(1) FROM QUERYSYNTAXENTITY", _sql2.remove(0));
205205
} else {
206206
Assert.assertEquals("SELECT AVG(?) FROM QUERYSYNTAXENTITY", _sql2.remove(0));
@@ -415,7 +415,7 @@ public void testAvg2_PartialBind() {
415415
query = em.createQuery("SELECT AVG(1) FROM QuerySyntaxEntity s HAVING 0 < AVG(1)");
416416
query.getResultList();
417417
Assert.assertEquals(1, _sql2.size());
418-
if(platform.isDB2Z() || platform.isDB2() || platform.isDerby()) {
418+
if(platform.isDB2Z() || platform.isDerby()) {
419419
Assert.assertEquals("SELECT AVG(1) FROM QUERYSYNTAXENTITY HAVING (? < AVG(1))", _sql2.remove(0));
420420
} else {
421421
Assert.assertEquals("SELECT AVG(?) FROM QUERYSYNTAXENTITY HAVING (? < AVG(?))", _sql2.remove(0));
@@ -2322,7 +2322,7 @@ public void testSum1_PartialBind() {
23222322
query = em.createQuery("SELECT SUM(1) FROM QuerySyntaxEntity s");
23232323
query.getResultList();
23242324
Assert.assertEquals(1, _sql2.size());
2325-
if(platform.isDB2Z() || platform.isDB2() || platform.isDerby()) {
2325+
if(platform.isDB2Z() || platform.isDerby()) {
23262326
Assert.assertEquals("SELECT SUM(1) FROM QUERYSYNTAXENTITY", _sql2.remove(0));
23272327
} else {
23282328
Assert.assertEquals("SELECT SUM(?) FROM QUERYSYNTAXENTITY", _sql2.remove(0));
@@ -2354,7 +2354,7 @@ public void testSum1_PartialBind() {
23542354
query = em.createQuery(cquery2);
23552355
query.getResultList();
23562356
Assert.assertEquals(1, _sql2.size());
2357-
if(platform.isDB2Z() || platform.isDB2() || platform.isDerby()) {
2357+
if(platform.isDB2Z() || platform.isDerby()) {
23582358
Assert.assertEquals("SELECT SUM(1) FROM QUERYSYNTAXENTITY", _sql2.remove(0));
23592359
} else {
23602360
Assert.assertEquals("SELECT SUM(?) FROM QUERYSYNTAXENTITY", _sql2.remove(0));
@@ -2569,7 +2569,7 @@ public void testSum2_PartialBind() {
25692569
query = em.createQuery("SELECT SUM(1) FROM QuerySyntaxEntity s HAVING 0 < SUM(1)");
25702570
query.getResultList();
25712571
Assert.assertEquals(1, _sql2.size());
2572-
if(platform.isDB2Z() || platform.isDB2() || platform.isDerby()) {
2572+
if(platform.isDB2Z() || platform.isDerby()) {
25732573
Assert.assertEquals("SELECT SUM(1) FROM QUERYSYNTAXENTITY HAVING (? < SUM(1))", _sql2.remove(0));
25742574
} else {
25752575
Assert.assertEquals("SELECT SUM(?) FROM QUERYSYNTAXENTITY HAVING (? < SUM(?))", _sql2.remove(0));
@@ -2618,7 +2618,7 @@ public void testSum2_PartialBind() {
26182618
query = em.createQuery(cquery2);
26192619
query.getResultList();
26202620
Assert.assertEquals(1, _sql2.size());
2621-
if(platform.isDB2Z() || platform.isDB2() || platform.isDerby()) {
2621+
if(platform.isDB2Z() || platform.isDerby()) {
26222622
Assert.assertEquals("SELECT SUM(1) FROM QUERYSYNTAXENTITY HAVING (? < SUM(1))", _sql2.remove(0));
26232623
} else {
26242624
Assert.assertEquals("SELECT SUM(?) FROM QUERYSYNTAXENTITY HAVING (? < SUM(?))", _sql2.remove(0));

0 commit comments

Comments
 (0)