You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by sa...@apache.org on 2015/08/06 10:19:36 UTC

ode git commit: ODE-666: Ported remaining testcases which were on HSQL to H2

Repository: ode
Updated Branches:
  refs/heads/ode-1.3.x 67c45f04a -> 37e7297da


ODE-666: Ported remaining testcases which were on HSQL to H2


Project: http://git-wip-us.apache.org/repos/asf/ode/repo
Commit: http://git-wip-us.apache.org/repos/asf/ode/commit/37e7297d
Tree: http://git-wip-us.apache.org/repos/asf/ode/tree/37e7297d
Diff: http://git-wip-us.apache.org/repos/asf/ode/diff/37e7297d

Branch: refs/heads/ode-1.3.x
Commit: 37e7297da361ad7e4e46319c27ea3b8261a7adcf
Parents: 67c45f0
Author: sathwik <sa...@apache.org>
Authored: Thu Aug 6 13:49:12 2015 +0530
Committer: sathwik <sa...@apache.org>
Committed: Thu Aug 6 13:49:12 2015 +0530

----------------------------------------------------------------------
 Rakefile                                        | 12 ++++----
 .../jdbc/JdbcExternalVariableEngineTest.java    | 12 +++-----
 .../org/apache/ode/store/ProcessStoreImpl.java  | 29 ++++++++++----------
 .../java/org/apache/ode/store/hib/DaoTest.java  | 17 ++++++------
 .../ode/dao/jpa/test/InsertObjectTest.java      | 14 ++++------
 .../ode/dao/jpa/test/SelectObjectTest.java      | 14 ++++------
 .../ode/scheduler/simple/DelegateSupport.java   | 16 +++++------
 .../simple/GeronimoDelegateSupport.java         |  2 +-
 .../src/test/resources/simplesched-h2.sql       | 28 +++++++++++++++++++
 9 files changed, 79 insertions(+), 65 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/Rakefile
----------------------------------------------------------------------
diff --git a/Rakefile b/Rakefile
index 3736586..d28c18f 100644
--- a/Rakefile
+++ b/Rakefile
@@ -232,7 +232,7 @@ define "ode" do
 
     test.with projects("scheduler-simple", "dao-jpa", "dao-hibernate", "bpel-epr"),
         BACKPORT, COMMONS.pool, COMMONS.lang, COMMONS.io, DERBY, JAVAX.connector, JAVAX.transaction,
-        GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, TRANQL, HSQLDB, JAVAX.ejb,
+        GERONIMO.transaction, GERONIMO.kernel, GERONIMO.connector, TRANQL, HSQLDB, H2::REQUIRES, JAVAX.ejb,
         OPENJPA, XERCES, XALAN, LOG4J, SLF4J,
         DOM4J, HIBERNATE,
         "tranql:tranql-connector-derby-common:jar:1.1"
@@ -243,8 +243,8 @@ define "ode" do
   desc "ODE Simple Scheduler"
   define "scheduler-simple" do
     compile.with projects("bpel-api", "utils"), COMMONS.collections, COMMONS.logging, JAVAX.transaction, LOG4J
-    test.compile.with HSQLDB, GERONIMO.kernel, GERONIMO.transaction
-    test.with HSQLDB, JAVAX.transaction, JAVAX.resource, JAVAX.connector, LOG4J,
+    test.compile.with HSQLDB, H2::REQUIRES, GERONIMO.kernel, GERONIMO.transaction
+    test.with HSQLDB, H2::REQUIRES, JAVAX.transaction, JAVAX.resource, JAVAX.connector, LOG4J,
           GERONIMO.kernel, GERONIMO.transaction, GERONIMO.connector, TRANQL, BACKPORT, JAVAX.ejb
     package :jar
   end
@@ -266,7 +266,7 @@ define "ode" do
   define "bpel-store" do
     compile.with projects("bpel-api", "bpel-compiler", "bpel-dao", "bpel-obj", "bpel-schemas", "bpel-epr",
       "dao-hibernate", "dao-jpa", "utils"),
-      COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, XMLBEANS, XERCES, WSDL4J, OPENJPA, SPRING
+      COMMONS.logging, JAVAX.persistence, JAVAX.stream, JAVAX.transaction, HIBERNATE, HSQLDB, H2::REQUIRES, XMLBEANS, XERCES, WSDL4J, OPENJPA, SPRING
     compile { open_jpa_enhance }
     resources hibernate_doclet(:package=>"org.apache.ode.store.hib", :excludedtags=>"@version,@author,@todo")
 
@@ -285,7 +285,7 @@ define "ode" do
     test.with projects("bpel-obj", "jacob", "bpel-schemas",
       "bpel-scripts", "scheduler-simple"),
       COMMONS.collections, COMMONS.lang, COMMONS.logging, DERBY, JAVAX.connector,
-      JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, LOG4J, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction, SPRING, HIBERNATE, SLF4J, DOM4J
+      JAVAX.stream, JAVAX.transaction, JAXEN, HSQLDB, H2::REQUIRES, LOG4J, SAXON, XERCES, XMLBEANS, XALAN, GERONIMO.transaction, SPRING, HIBERNATE, SLF4J, DOM4J
 
     package :jar
   end
@@ -389,7 +389,7 @@ define "ode" do
 
     test.with projects("bpel-api", "bpel-dao", "bpel-obj", "bpel-epr", "dao-jpa", "utils"),
       BACKPORT, COMMONS.collections, COMMONS.lang, COMMONS.logging, GERONIMO.transaction,
-      GERONIMO.kernel, GERONIMO.connector, HSQLDB, JAVAX.connector, JAVAX.ejb, JAVAX.persistence,
+      GERONIMO.kernel, GERONIMO.connector, HSQLDB, H2::REQUIRES, JAVAX.connector, JAVAX.ejb, JAVAX.persistence,
       JAVAX.transaction, LOG4J, OPENJPA, XERCES, WSDL4J
 
     build derby_db

http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/bpel-runtime/src/test/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableEngineTest.java
----------------------------------------------------------------------
diff --git a/bpel-runtime/src/test/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableEngineTest.java b/bpel-runtime/src/test/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableEngineTest.java
index 0b2ed62..e93896c 100644
--- a/bpel-runtime/src/test/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableEngineTest.java
+++ b/bpel-runtime/src/test/java/org/apache/ode/bpel/extvar/jdbc/JdbcExternalVariableEngineTest.java
@@ -33,7 +33,7 @@ import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.GUID;
 import org.apache.ode.bpel.evar.ExternalVariableModule.Locator;
 import org.apache.ode.bpel.evar.ExternalVariableModule.Value;
-import org.hsqldb.jdbc.JDBCDataSource;
+import org.h2.jdbcx.JdbcDataSource;
 import org.junit.Test;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -55,18 +55,14 @@ public class JdbcExternalVariableEngineTest extends TestCase {
     final QName _varType = new QName("foo", "foobar");
     
     ExternalVariableConf _econf;
-    JDBCDataSource _ds;
+    JdbcDataSource _ds;
     JdbcExternalVariableModule _engine;
     Element _el1;
 
     public void setUp() throws Exception {
-        _ds = new org.hsqldb.jdbc.JDBCDataSource();
-        _ds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
+        _ds = new org.h2.jdbcx.JdbcDataSource();
+        _ds.setURL("jdbc:h2:mem:" + new GUID().toString()+";DB_CLOSE_DELAY=-1");
         _ds.setUser("sa");
-        //this is to allow column names to start with underscores.
-        Properties prop = new Properties();
-        prop.setProperty("sql.regular_names", "false");
-        _ds.setProperties(prop);
 
         Connection conn = _ds.getConnection();
         Statement s = conn.createStatement();

http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
----------------------------------------------------------------------
diff --git a/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java b/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
index 4c1670a..a0cbc22 100644
--- a/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
+++ b/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
@@ -29,7 +29,7 @@ import org.apache.ode.store.DeploymentUnitDir.CBPInfo;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.GUID;
 import org.apache.ode.utils.msg.MessageBundle;
-import org.hsqldb.jdbc.JDBCDataSource;
+import org.h2.jdbcx.JdbcDataSource;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -49,7 +49,7 @@ import java.util.regex.Pattern;
 
 /**
  * <p>
- * JDBC-based implementation of a process store. Also provides an "in-memory" store by way of HSQL database.
+ * JDBC-based implementation of a process store. Also provides an "in-memory" store by way of H2 database.
  * </p>
  *
  * <p>
@@ -119,15 +119,15 @@ public class ProcessStoreImpl implements ProcessStore {
                 _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(ds, props.getProperties(), createDatamodel, props.getTxFactoryClass());
             }
          } else {
-            // If the datasource is not provided, then we create a HSQL-based
+            // If the datasource is not provided, then we create a H2-based
             // in-memory database. Makes testing a bit simpler.
-            DataSource hsqlds = createInternalDS(new GUID().toString());
+            DataSource h2 = createInternalDS(new GUID().toString());
             if ("hibernate".equalsIgnoreCase(persistenceType)) {
-                _cf = new org.apache.ode.store.hib.DbConfStoreConnectionFactory(hsqlds, props.getProperties(), createDatamodel, props.getTxFactoryClass());
+                _cf = new org.apache.ode.store.hib.DbConfStoreConnectionFactory(h2, props.getProperties(), createDatamodel, props.getTxFactoryClass());
             } else {
-                _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(hsqlds, props.getProperties(), createDatamodel, props.getTxFactoryClass());
+                _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(h2, props.getProperties(), createDatamodel, props.getTxFactoryClass());
             }
-            _inMemDs = hsqlds;
+            _inMemDs = h2;
         }
 
 
@@ -139,10 +139,10 @@ public class ProcessStoreImpl implements ProcessStore {
      */
     public ProcessStoreImpl(EndpointReferenceContext eprContext, DataSource inMemDs) {
         this.eprContext = eprContext;
-        DataSource hsqlds = createInternalDS(new GUID().toString());
+        DataSource h2 = createInternalDS(new GUID().toString());
         //when in memory we always create the model as we are starting from scratch
-        _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(hsqlds, true, OdeConfigProperties.DEFAULT_TX_FACTORY_CLASS_NAME);
-        _inMemDs = hsqlds;
+        _cf = new org.apache.ode.store.jpa.DbConfStoreConnectionFactory(h2, true, OdeConfigProperties.DEFAULT_TX_FACTORY_CLASS_NAME);
+        _inMemDs = h2;
     }
 
     public void shutdown() {
@@ -861,11 +861,10 @@ public class ProcessStoreImpl implements ProcessStore {
     }
 
     public static DataSource createInternalDS(String guid) {
-        JDBCDataSource hsqlds = new JDBCDataSource();
-        hsqlds.setDatabase("jdbc:hsqldb:mem:" + guid);
-        hsqlds.setUser("sa");
-        hsqlds.setPassword("");
-        return hsqlds;
+        JdbcDataSource h2 = new JdbcDataSource();
+        h2.setURL("jdbc:h2:mem:" + new GUID().toString()+";DB_CLOSE_DELAY=-1");
+        h2.setUser("sa");
+        return h2;
     }
 
     public static void shutdownInternalDB(DataSource ds) {

http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
----------------------------------------------------------------------
diff --git a/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java b/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
index 57de78c..5dfe899 100644
--- a/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
+++ b/bpel-store/src/test/java/org/apache/ode/store/hib/DaoTest.java
@@ -25,26 +25,25 @@ import org.apache.ode.store.ConfStoreConnection;
 import org.apache.ode.store.ConfStoreConnectionFactory;
 import org.apache.ode.store.DeploymentUnitDAO;
 import org.apache.ode.store.ProcessConfDAO;
-import org.hsqldb.jdbc.JDBCDataSource;
+import org.apache.ode.utils.GUID;
+import org.h2.jdbcx.JdbcDataSource;
 import java.util.Properties;
 import javax.xml.namespace.QName;
 
 public class DaoTest extends TestCase {
-    JDBCDataSource hsqlds;
+    JdbcDataSource h2;
 
     ConfStoreConnectionFactory cf;
 
     public void setUp() throws Exception {
-        hsqlds = new JDBCDataSource();
-        hsqlds.setDatabase("jdbc:hsqldb:mem:test");
-        hsqlds.setUser("sa");
-        hsqlds.setPassword("");
-
-        cf = new DbConfStoreConnectionFactory(hsqlds, new Properties(), true, OdeConfigProperties.DEFAULT_TX_FACTORY_CLASS_NAME);
+        h2 = new JdbcDataSource();
+        h2.setURL("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1");
+        h2.setUser("sa");
+        cf = new DbConfStoreConnectionFactory(h2, new Properties(), true, OdeConfigProperties.DEFAULT_TX_FACTORY_CLASS_NAME);
     }
 
     public void tearDown() throws Exception {
-        hsqlds.getConnection().createStatement().execute("SHUTDOWN");
+        h2.getConnection().createStatement().execute("SHUTDOWN");
     }
 
     public void testEmpty() {

http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java
----------------------------------------------------------------------
diff --git a/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java b/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java
index 3850820..19878be 100644
--- a/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java
+++ b/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/InsertObjectTest.java
@@ -37,7 +37,7 @@ import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
 import org.apache.ode.il.EmbeddedGeronimoFactory;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.GUID;
-import org.hsqldb.jdbc.JDBCDataSource;
+import org.h2.jdbcx.JdbcDataSource;
 import org.xml.sax.SAXException;
 
 import javax.sql.DataSource;
@@ -62,14 +62,10 @@ public class InsertObjectTest extends TestCase {
 
     @Override
 	protected void setUp() throws Exception {
-        JDBCDataSource hsqlds = new JDBCDataSource();
-        hsqlds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
-        hsqlds.setUser("sa");
-        hsqlds.setPassword("");
-        Properties prop = new Properties();
-        prop.setProperty("sql.enforce_size", "false");
-        hsqlds.setProperties(prop);
-        _ds = hsqlds;
+        JdbcDataSource h2 = new JdbcDataSource();
+        h2.setURL("jdbc:h2:mem:" + new GUID().toString()+";DB_CLOSE_DELAY=-1");
+        h2.setUser("sa");
+        _ds = h2;
 
         _txm = new EmbeddedGeronimoFactory().getTransactionManager();
 

http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java
----------------------------------------------------------------------
diff --git a/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java b/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java
index c73c90d..4e3be80 100644
--- a/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java
+++ b/dao-jpa-ojpa-derby/src/test/java/org/apache/ode/dao/jpa/test/SelectObjectTest.java
@@ -39,7 +39,7 @@ import org.apache.ode.bpel.dao.XmlDataDAO;
 import org.apache.ode.dao.jpa.BPELDAOConnectionFactoryImpl;
 import org.apache.ode.il.EmbeddedGeronimoFactory;
 import org.apache.ode.utils.GUID;
-import org.hsqldb.jdbc.JDBCDataSource;
+import org.h2.jdbcx.JdbcDataSource;
 
 import javax.persistence.EntityManager;
 import javax.sql.DataSource;
@@ -65,14 +65,10 @@ public class SelectObjectTest extends TestCase {
 
     @Override
 	protected void setUp() throws Exception {
-        JDBCDataSource hsqlds = new JDBCDataSource();
-        hsqlds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
-        hsqlds.setUser("sa");
-        hsqlds.setPassword("");
-        Properties prop = new Properties();
-        prop.setProperty("sql.enforce_size", "false");
-        hsqlds.setProperties(prop);
-        _ds = hsqlds;
+        JdbcDataSource h2 = new JdbcDataSource();
+        h2.setURL("jdbc:h2:mem:" + new GUID().toString()+";DB_CLOSE_DELAY=-1");
+        h2.setUser("sa");
+        _ds = h2;
 
         _txm = new EmbeddedGeronimoFactory().getTransactionManager();
 

http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
----------------------------------------------------------------------
diff --git a/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java b/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
index 739fed1..2462567 100644
--- a/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
+++ b/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
@@ -26,7 +26,8 @@ import javax.sql.DataSource;
 import javax.transaction.TransactionManager;
 
 import org.apache.ode.utils.GUID;
-import org.hsqldb.jdbc.JDBCDataSource;
+import org.h2.jdbcx.JdbcDataSource;
+
 
 
 /**
@@ -48,11 +49,10 @@ public class DelegateSupport {
     }
 
     protected void initialize(TransactionManager txm) throws Exception {
-        JDBCDataSource ds = new JDBCDataSource();
-        ds.setDatabase("jdbc:hsqldb:mem:" + new GUID().toString());
-        ds.setUser("sa");
-        ds.setPassword("");
-        _ds = ds;
+        JdbcDataSource h2 = new JdbcDataSource();
+        h2.setURL("jdbc:h2:mem:" + new GUID().toString()+";DB_CLOSE_DELAY=-1");
+        h2.setUser("sa");
+        _ds = h2;
         
         setup();
         _del = new JdbcDelegate(_ds);
@@ -68,14 +68,14 @@ public class DelegateSupport {
             StringBuffer sql = new StringBuffer();
 
             {
-                InputStream in = getClass().getResourceAsStream("/simplesched-hsql.sql");
+                InputStream in = getClass().getResourceAsStream("/simplesched-h2.sql");
                 int v;
                 while ((v = in.read()) != -1) {
                     sql.append((char) v);
                 }
             }
             
-            c.createStatement().executeUpdate("CREATE FUNCTION mod(a BIGINT, b BIGINT) RETURNS BIGINT LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME 'CLASSPATH:org.apache.ode.scheduler.simple.DelegateSupport.mod';");
+            //c.createStatement().executeUpdate("CREATE FUNCTION mod(a BIGINT, b BIGINT) RETURNS BIGINT LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME 'CLASSPATH:org.apache.ode.scheduler.simple.DelegateSupport.mod';");
             c.createStatement().executeUpdate(sql.toString());
         } finally {
             c.close();

http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
----------------------------------------------------------------------
diff --git a/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java b/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
index da7e967..6596cea 100644
--- a/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
+++ b/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/GeronimoDelegateSupport.java
@@ -45,7 +45,7 @@ public class GeronimoDelegateSupport extends DelegateSupport {
 
     @Override
     protected void initialize(TransactionManager txm) throws Exception {
-        _ds = createGeronimoDataSource(txm, "jdbc:hsqldb:mem:" + new GUID().toString(), "org.hsqldb.jdbcDriver", "sa", "");
+        _ds = createGeronimoDataSource(txm, "jdbc:h2:mem:" + new GUID().toString(), "org.h2.Driver", "sa", "");
         setup();
         _del = new JdbcDelegate(_ds);
     }

http://git-wip-us.apache.org/repos/asf/ode/blob/37e7297d/scheduler-simple/src/test/resources/simplesched-h2.sql
----------------------------------------------------------------------
diff --git a/scheduler-simple/src/test/resources/simplesched-h2.sql b/scheduler-simple/src/test/resources/simplesched-h2.sql
new file mode 100644
index 0000000..a2c0929
--- /dev/null
+++ b/scheduler-simple/src/test/resources/simplesched-h2.sql
@@ -0,0 +1,28 @@
+-- Apache ODE - SimpleScheduler Database Schema
+-- 
+-- Apache H2 scripts by Maciej Szefler.
+-- 
+-- 
+CREATE TABLE ODE_JOB (
+  jobid CHAR(64)  NOT NULL DEFAULT '',
+  ts BIGINT  NOT NULL DEFAULT 0,
+  nodeid char(64)  NULL,
+  scheduled int  NOT NULL DEFAULT 0,
+  transacted int  NOT NULL DEFAULT 0,
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
+  PRIMARY KEY(jobid)
+);
+
+create index IDX_ODE_JOB_TS on ODE_JOB(ts);
+create index IDX_ODE_JOB_NODEID on ODE_JOB(nodeid);
\ No newline at end of file