|
1 | 1 | /*
|
2 |
| - * Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2019, 2024 Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * Copyright (c) 2019 IBM Corporation. All rights reserved.
|
4 | 4 | *
|
5 | 5 | * This program and the accompanying materials are made available under the
|
|
30 | 30 | import org.eclipse.persistence.jpa.test.framework.Property;
|
31 | 31 | import org.eclipse.persistence.platform.database.DatabasePlatform;
|
32 | 32 | import org.eclipse.persistence.sessions.DatabaseSession;
|
| 33 | +import org.eclipse.persistence.tools.schemaframework.FieldDefinition; |
33 | 34 | import org.eclipse.persistence.tools.schemaframework.SchemaManager;
|
34 | 35 | import org.eclipse.persistence.tools.schemaframework.StoredProcedureDefinition;
|
35 | 36 |
|
@@ -121,6 +122,8 @@ public void testStoredProcedure_SetUnordered_IndexParameters() {
|
121 | 122 | */
|
122 | 123 | @Test
|
123 | 124 | public void testStoredProcedure_SetOrdered_NamedParameters() {
|
| 125 | + Assume.assumeFalse("pgjdbc does not support named parameters", getPlatform(storedProcedureEmf).isPostgreSQL()); |
| 126 | + |
124 | 127 | EntityManager em = storedProcedureEmf.createEntityManager();
|
125 | 128 | try {
|
126 | 129 | StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("simple_order_procedure");
|
@@ -152,6 +155,8 @@ public void testStoredProcedure_SetOrdered_NamedParameters() {
|
152 | 155 | */
|
153 | 156 | @Test
|
154 | 157 | public void testStoredProcedure_SetUnordered_NamedParameters() {
|
| 158 | + Assume.assumeFalse("pgjdbc does not support named parameters", getPlatform(storedProcedureEmf).isPostgreSQL()); |
| 159 | + |
155 | 160 | EntityManager em = storedProcedureEmf.createEntityManager();
|
156 | 161 | try {
|
157 | 162 | StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("simple_order_procedure");
|
@@ -186,22 +191,27 @@ private static boolean createSimpleStoredProcedure(EntityManagerFactory emf) {
|
186 | 191 | //Setup a stored procedure
|
187 | 192 | EntityManager em = emf.createEntityManager();
|
188 | 193 | try {
|
| 194 | + DatabaseSession dbs = ((EntityManagerImpl)em).getDatabaseSession(); |
| 195 | + SchemaManager manager = new SchemaManager(dbs); |
| 196 | + Platform platform = dbs.getDatasourcePlatform(); |
| 197 | + |
189 | 198 | StoredProcedureDefinition proc = new StoredProcedureDefinition();
|
190 | 199 | proc.setName("simple_order_procedure");
|
191 | 200 |
|
192 | 201 | proc.addArgument("in_param_one", String.class, 10);
|
193 | 202 | proc.addArgument("in_param_two", String.class, 10);
|
194 | 203 | proc.addArgument("in_param_three", String.class, 10);
|
195 |
| - proc.addOutputArgument("out_param_one", String.class, 30); |
196 |
| - |
197 |
| - DatabaseSession dbs = ((EntityManagerImpl)em).getDatabaseSession(); |
198 |
| - SchemaManager manager = new SchemaManager(dbs); |
199 |
| - Platform platform = dbs.getDatasourcePlatform(); |
| 204 | + if (platform.isPostgreSQL()) { |
| 205 | + // PG only supports OUT in 14+ |
| 206 | + proc.addInOutputArgument(new FieldDefinition("out_param_one", String.class, 30)); |
| 207 | + } else { |
| 208 | + proc.addOutputArgument("out_param_one", String.class, 30); |
| 209 | + } |
200 | 210 |
|
201 | 211 | //Add more platform specific diction to support more platforms
|
202 | 212 | if(platform.isMySQL()) {
|
203 | 213 | proc.addStatement("SET out_param_one = CONCAT('One: ',in_param_one,' Two: ',in_param_two,' Three: ',in_param_three)");
|
204 |
| - } else if(platform.isOracle()) { |
| 214 | + } else if(platform.isOracle() || platform.isPostgreSQL()) { |
205 | 215 | proc.addStatement("out_param_one := 'One: ' || in_param_one || ' Two: ' || in_param_two || ' Three: ' || in_param_three");
|
206 | 216 | } else if (platform.isDB2() || platform.isDB2Z()) {
|
207 | 217 | proc.addStatement("SET out_param_one = 'One: ' || in_param_one || ' Two: ' || in_param_two || ' Three: ' || in_param_three");
|
|
0 commit comments