You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/04/03 03:45:58 UTC
svn commit: r524995 - in
/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src:
main/java/org/apache/cayenne/access/jdbc/
test/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/unit/
test/resources/ddl/mysql/
Author: aadamchik
Date: Mon Apr 2 18:45:56 2007
New Revision: 524995
URL: http://svn.apache.org/viewvc?view=rev&rev=524995
Log:
CAY-773: MySQL stored procedure support
unit tests
Added:
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-out-sp.sql
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-select-sp.sql
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp.sql
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp2.sql
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-out-sp.sql
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-select-sp.sql
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp.sql
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp2.sql
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java
cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java?view=diff&rev=524995&r1=524994&r2=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ProcedureAction.java Mon Apr 2 18:45:56 2007
@@ -75,6 +75,10 @@
// stored procedure may contain a mixture of update counts and result sets,
// and out parameters. Read out parameters first, then
// iterate until we exhaust all results
+
+ // TODO: andrus, 4/2/2007 - according to the docs we should store the boolean
+ // return value of this method and avoid calling 'getMoreResults' if it is true.
+ // some db's handle this well, some don't (MySQL).
statement.execute();
// read out parameters
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java?view=diff&rev=524995&r1=524994&r2=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java Mon Apr 2 18:45:56 2007
@@ -51,7 +51,6 @@
protected void setUp() throws Exception {
super.setUp();
- // Don't run this on MySQL
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
@@ -61,7 +60,6 @@
}
public void testUpdate() throws Exception {
- // Don't run this on MySQL
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
@@ -99,7 +97,6 @@
}
public void testUpdateNoParam() throws Exception {
- // Don't run this on MySQL
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
@@ -136,7 +133,6 @@
}
public void testSelect1() throws Exception {
- // Don't run this on MySQL
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
@@ -165,7 +161,6 @@
}
public void testSelect2() throws Exception {
- // Don't run this on MySQL
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
@@ -195,7 +190,6 @@
}
public void testSelect3() throws Exception {
- // Don't run this on MySQL
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
@@ -227,7 +221,6 @@
}
public void testOutParams() throws Exception {
- // Don't run this on MySQL
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
@@ -250,7 +243,6 @@
}
public void testSelectDataObject() throws Exception {
- // Don't run this on MySQL
if (!getAccessStackAdapter().supportsStoredProcedures()) {
return;
}
@@ -276,7 +268,6 @@
// invalidate painting, it may have been updated in the proc
ctxt.invalidateObjects(Collections.singletonList(p));
assertEquals(1101.01, p.getEstimatedPrice().doubleValue(), 0.02);
-
}
public void testSelectWithRowDescriptor() throws Exception {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java?view=diff&rev=524995&r1=524994&r2=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/unit/MySQLStackAdapter.java Mon Apr 2 18:45:56 2007
@@ -28,6 +28,7 @@
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.Procedure;
/**
* @author Andrus Adamchik
@@ -50,6 +51,19 @@
return false;
}
+ public boolean supportsStoredProcedures() {
+ return true;
+ }
+
+ public void createdTables(Connection con, DataMap map) throws Exception {
+ if (map.getProcedureMap().containsKey("cayenne_tst_select_proc")) {
+ executeDDL(con, "mysql", "create-select-sp.sql");
+ executeDDL(con, "mysql", "create-update-sp.sql");
+ executeDDL(con, "mysql", "create-update-sp2.sql");
+ executeDDL(con, "mysql", "create-out-sp.sql");
+ }
+ }
+
public void willDropTables(Connection conn, DataMap map, Collection tablesToDrop)
throws Exception {
// special DROP CONSTRAINT syntax for MySQL
@@ -75,6 +89,14 @@
executeDDL(conn, drop.toString());
}
}
+ }
+
+ Procedure proc = map.getProcedure("cayenne_tst_select_proc");
+ if (proc != null && proc.getDataMap() == map) {
+ executeDDL(conn, "mysql", "drop-select-sp.sql");
+ executeDDL(conn, "mysql", "drop-update-sp.sql");
+ executeDDL(conn, "mysql", "drop-update-sp2.sql");
+ executeDDL(conn, "mysql", "drop-out-sp.sql");
}
}
Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-out-sp.sql
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-out-sp.sql?view=auto&rev=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-out-sp.sql (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-out-sp.sql Mon Apr 2 18:45:56 2007
@@ -0,0 +1,4 @@
+CREATE PROCEDURE cayenne_tst_out_proc (IN p1 INT, OUT p2 INT)
+BEGIN
+ SELECT p1 * 2 INTO p2;
+END
Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-select-sp.sql
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-select-sp.sql?view=auto&rev=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-select-sp.sql (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-select-sp.sql Mon Apr 2 18:45:56 2007
@@ -0,0 +1,11 @@
+CREATE PROCEDURE cayenne_tst_select_proc (IN p1 varchar(200), IN p2 DECIMAL)
+BEGIN
+ UPDATE PAINTING SET ESTIMATED_PRICE = ESTIMATED_PRICE * 2
+ WHERE ESTIMATED_PRICE < p2;
+
+ SELECT DISTINCT A.ARTIST_ID, A.ARTIST_NAME, A.DATE_OF_BIRTH
+ FROM ARTIST A, PAINTING P
+ WHERE A.ARTIST_ID = P.ARTIST_ID AND
+ RTRIM(A.ARTIST_NAME) = p1
+ ORDER BY A.ARTIST_ID;
+END
\ No newline at end of file
Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp.sql
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp.sql?view=auto&rev=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp.sql (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp.sql Mon Apr 2 18:45:56 2007
@@ -0,0 +1,5 @@
+CREATE PROCEDURE cayenne_tst_upd_proc (IN p1 DECIMAL)
+BEGIN
+ UPDATE PAINTING SET ESTIMATED_PRICE = ESTIMATED_PRICE * 2
+ WHERE ESTIMATED_PRICE < p1;
+END
Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp2.sql
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp2.sql?view=auto&rev=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp2.sql (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/create-update-sp2.sql Mon Apr 2 18:45:56 2007
@@ -0,0 +1,4 @@
+CREATE PROCEDURE cayenne_tst_upd_proc2 ()
+BEGIN
+ UPDATE PAINTING SET ESTIMATED_PRICE = ESTIMATED_PRICE * 2;
+END
\ No newline at end of file
Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-out-sp.sql
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-out-sp.sql?view=auto&rev=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-out-sp.sql (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-out-sp.sql Mon Apr 2 18:45:56 2007
@@ -0,0 +1 @@
+DROP PROCEDURE IF EXISTS cayenne_tst_out_proc;
\ No newline at end of file
Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-select-sp.sql
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-select-sp.sql?view=auto&rev=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-select-sp.sql (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-select-sp.sql Mon Apr 2 18:45:56 2007
@@ -0,0 +1 @@
+DROP PROCEDURE IF EXISTS cayenne_tst_select_proc;
\ No newline at end of file
Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp.sql
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp.sql?view=auto&rev=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp.sql (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp.sql Mon Apr 2 18:45:56 2007
@@ -0,0 +1 @@
+DROP PROCEDURE IF EXISTS cayenne_tst_upd_proc;
\ No newline at end of file
Added: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp2.sql
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp2.sql?view=auto&rev=524995
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp2.sql (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/resources/ddl/mysql/drop-update-sp2.sql Mon Apr 2 18:45:56 2007
@@ -0,0 +1 @@
+DROP PROCEDURE IF EXISTS cayenne_tst_upd_proc2;
\ No newline at end of file