You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by rm...@apache.org on 2016/11/19 18:08:44 UTC
svn commit: r1770509 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/
openjpa-jdbc/src/main/resources/org...
Author: rmannibucau
Date: Sat Nov 19 18:08:44 2016
New Revision: 1770509
URL: http://svn.apache.org/viewvc?rev=1770509&view=rev
Log:
OPENJPA-2554 JPA 2.1 - Schema Generation, patch from Roberto Cortez, doc to update still
Added:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationAction.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationSource.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestSchemaGenerationProperties.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create-after-metadata.sql
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create.sql
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop-after-metadata.sql
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop.sql
openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/load.sql
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java?rev=1770509&r1=1770508&r2=1770509&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java Sat Nov 19 18:08:44 2016
@@ -22,6 +22,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
+import org.apache.openjpa.conf.SchemaGenerationSource;
import org.apache.openjpa.lib.util.StringUtil;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
@@ -36,6 +37,19 @@ import org.apache.openjpa.lib.conf.Confi
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.util.UserException;
+import static org.apache.openjpa.conf.SchemaGenerationAction.CREATE;
+import static org.apache.openjpa.conf.SchemaGenerationAction.DROP;
+import static org.apache.openjpa.conf.SchemaGenerationAction.DROP_AND_CREATE;
+import static org.apache.openjpa.conf.SchemaGenerationSource.METADATA;
+import static org.apache.openjpa.conf.SchemaGenerationSource.METADATA_THEN_SCRIPT;
+import static org.apache.openjpa.conf.SchemaGenerationSource.SCRIPT;
+import static org.apache.openjpa.conf.SchemaGenerationSource.SCRIPT_THEN_METADATA;
+import static org.apache.openjpa.jdbc.meta.MappingTool.ACTION_ADD;
+import static org.apache.openjpa.jdbc.meta.MappingTool.ACTION_DROP;
+import static org.apache.openjpa.jdbc.meta.MappingTool.ACTION_SCRIPT_CREATE;
+import static org.apache.openjpa.jdbc.meta.MappingTool.ACTION_SCRIPT_DROP;
+import static org.apache.openjpa.jdbc.meta.MappingTool.ACTION_SCRIPT_LOAD;
+
/**
* BrokerFactory type for use with the JDBC runtime.
*
@@ -133,6 +147,7 @@ public class JDBCBrokerFactory
*/
protected void synchronizeMappings(ClassLoader loader,
JDBCConfiguration conf) {
+ mapSchemaGenerationToSynchronizeMappings(conf);
String action = conf.getSynchronizeMappings();
if (StringUtil.isEmpty(action))
return;
@@ -163,4 +178,80 @@ public class JDBCBrokerFactory
protected void synchronizeMappings(ClassLoader loader) {
synchronizeMappings(loader, (JDBCConfiguration) getConfiguration());
}
+
+ private void mapSchemaGenerationToSynchronizeMappings(JDBCConfiguration conf) {
+ String actions = "";
+ if (conf.getDatabaseAction() != null) {
+ int databaseAction = conf.getDatabaseActionConstant();
+ if (databaseAction == CREATE) {
+ actions = generateSchemaCreation(conf);
+ } else if (databaseAction == DROP) {
+ actions = generateSchemaDrop(conf);
+ } else if (databaseAction == DROP_AND_CREATE) {
+ actions = generateSchemaDropCreate(conf);
+ }
+ }
+
+ String loadFile = conf.getLoadScriptSource();
+ if (loadFile != null) {
+ actions += "," + ACTION_SCRIPT_LOAD;
+ }
+
+ if (actions.length() > 0) {
+ conf.setSynchronizeMappings("buildSchema(ForeignKeys=true,SchemaAction='" + actions + "')");
+ }
+ }
+
+ private String generateSchemaCreation(JDBCConfiguration conf) {
+ if (conf.getCreateScriptTarget() != null) {
+ return MappingTool.ACTION_ADD;
+ } else {
+ int createSource = conf.getCreateSourceConstant();
+ if (createSource == SchemaGenerationSource.NONE && conf.getCreateScriptSource() != null) {
+ createSource = SCRIPT;
+ } else {
+ createSource = METADATA;
+ }
+ return mapGenerationStrategyActions(createSource, ACTION_ADD, ACTION_SCRIPT_CREATE);
+ }
+ }
+
+ private String generateSchemaDrop(JDBCConfiguration conf) {
+ if (conf.getDropScriptTarget() != null) {
+ return MappingTool.ACTION_DROP;
+ } else {
+ int dropSource = conf.getDropSourceConstant();
+ if (dropSource == SchemaGenerationSource.NONE && conf.getDropScriptSource() != null) {
+ dropSource = SCRIPT;
+ } else {
+ dropSource = METADATA;
+ }
+ return mapGenerationStrategyActions(dropSource, ACTION_DROP, ACTION_SCRIPT_DROP);
+ }
+ }
+
+ private String generateSchemaDropCreate(JDBCConfiguration conf) {
+ if (conf.getCreateScriptTarget() != null && conf.getDropScriptTarget() != null) {
+ return MappingTool.ACTION_ADD + "," + MappingTool.ACTION_DROP;
+ } else {
+ return mapGenerationStrategyActions(conf.getDropSourceConstant(), ACTION_DROP, ACTION_SCRIPT_DROP) + "," +
+ mapGenerationStrategyActions(conf.getCreateSourceConstant(), ACTION_ADD, ACTION_SCRIPT_CREATE);
+ }
+ }
+
+ private String mapGenerationStrategyActions(int source, String metadataAction, String scriptAction) {
+ String actions = "";
+ if (source == METADATA) {
+ actions += metadataAction;
+ } else if (source == SCRIPT) {
+ actions += scriptAction;
+ } else if (source == METADATA_THEN_SCRIPT) {
+ actions += metadataAction + "," + scriptAction;
+ } else if (source == SCRIPT_THEN_METADATA) {
+ actions += scriptAction + "," + metadataAction;
+ } else {
+ actions += metadataAction;
+ }
+ return actions;
+ }
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java?rev=1770509&r1=1770508&r2=1770509&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingTool.java Sat Nov 19 18:08:44 2016
@@ -90,6 +90,9 @@ public class MappingTool
public static final String ACTION_VALIDATE = "validate";
public static final String ACTION_EXPORT = "export";
public static final String ACTION_IMPORT = "import";
+ public static final String ACTION_SCRIPT_CREATE = "scriptCreate";
+ public static final String ACTION_SCRIPT_DROP = "scriptDrop";
+ public static final String ACTION_SCRIPT_LOAD = "scriptLoad";
public static final String[] ACTIONS = new String[]{
ACTION_ADD,
@@ -100,6 +103,9 @@ public class MappingTool
ACTION_VALIDATE,
ACTION_EXPORT,
ACTION_IMPORT,
+ ACTION_SCRIPT_CREATE,
+ ACTION_SCRIPT_DROP,
+ ACTION_SCRIPT_LOAD,
};
private static final Localizer _loc = Localizer.forPackage(MappingTool.class);
@@ -502,7 +508,26 @@ public class MappingTool
if (!SCHEMA_ACTION_NONE.equals(schemaActions[i])
&& (_schemaWriter == null || (_schemaTool != null
&& _schemaTool.getWriter() != null))) {
- SchemaTool tool = newSchemaTool(schemaActions[i]);
+
+ SchemaTool tool;
+ if (schemaActions[i].equals(ACTION_SCRIPT_CREATE) ||
+ schemaActions[i].equals(ACTION_SCRIPT_DROP) ||
+ schemaActions[i].equals(ACTION_SCRIPT_LOAD)) {
+ tool = newSchemaTool(SchemaTool.ACTION_EXECUTE_SCRIPT);
+ } else {
+ tool = newSchemaTool(schemaActions[i]);
+ }
+
+ if (schemaActions[i].equals(ACTION_ADD) && _conf.getCreateScriptTarget() != null) {
+ tool.setWriter(new PrintWriter(_conf.getCreateScriptTarget()));
+ tool.setIndexes(true);
+ tool.setForeignKeys(true);
+ tool.setSequences(true);
+ }
+
+ if (schemaActions[i].equals(ACTION_DROP) && _conf.getDropScriptTarget() != null) {
+ tool.setWriter(new PrintWriter(_conf.getDropScriptTarget()));
+ }
// configure the tool with additional settings
if (flags != null) {
@@ -513,6 +538,18 @@ public class MappingTool
tool.setSQLTerminator(flags.sqlTerminator);
}
+ switch (schemaActions[i]) {
+ case ACTION_SCRIPT_CREATE:
+ tool.setScriptToExecute(_conf.getCreateScriptSource());
+ break;
+ case ACTION_SCRIPT_DROP:
+ tool.setScriptToExecute(_conf.getDropScriptSource());
+ break;
+ case ACTION_SCRIPT_LOAD:
+ tool.setScriptToExecute(_conf.getLoadScriptSource());
+ break;
+ }
+
tool.setSchemaGroup(getSchemaGroup());
tool.run();
tool.record();
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java?rev=1770509&r1=1770508&r2=1770509&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/SchemaTool.java Sat Nov 19 18:08:44 2016
@@ -18,23 +18,30 @@
*/
package org.apache.openjpa.jdbc.schema;
+import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Writer;
+import java.net.URL;
+import java.security.AccessController;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
+import java.util.List;
import java.util.Set;
import javax.sql.DataSource;
+import org.apache.openjpa.lib.util.J2DoPrivHelper;
import org.apache.openjpa.lib.util.StringUtil;
import org.apache.openjpa.conf.OpenJPAConfiguration;
import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
@@ -74,6 +81,7 @@ public class SchemaTool {
public static final String ACTION_IMPORT = "import";
public static final String ACTION_EXPORT = "export";
public static final String ACTION_DELETE_TABLE_CONTENTS = "deleteTableContents";
+ public static final String ACTION_EXECUTE_SCRIPT = "executeScript";
public static final String[] ACTIONS = new String[]{
ACTION_ADD,
@@ -88,6 +96,7 @@ public class SchemaTool {
ACTION_IMPORT,
ACTION_EXPORT,
ACTION_DELETE_TABLE_CONTENTS,
+ ACTION_EXECUTE_SCRIPT
};
protected static final Localizer _loc = Localizer.forPackage(SchemaTool.class);
@@ -110,7 +119,8 @@ public class SchemaTool {
private SchemaGroup _db = null;
protected boolean _fullDB = false;
protected String _sqlTerminator = ";";
-
+ protected String _scriptToExecute = null;
+
/**
* Default constructor. Tools constructed this way will not have an
* action, so the {@link #run()} method will be a no-op.
@@ -313,6 +323,10 @@ public class SchemaTool {
_sqlTerminator = t;
}
+ public void setScriptToExecute(String scriptToExecute) {
+ _scriptToExecute = scriptToExecute;
+ }
+
/**
* Return the schema group the tool will act on.
*/
@@ -357,6 +371,9 @@ public class SchemaTool {
dropDB();
else if (ACTION_DELETE_TABLE_CONTENTS.equals(_action))
deleteTableContents();
+ else if (ACTION_EXECUTE_SCRIPT.equals(_action)) {
+ executeScript();
+ }
}
/**
@@ -463,6 +480,54 @@ public class SchemaTool {
}
}
+ protected void executeScript() throws SQLException {
+ if (_scriptToExecute == null) {
+ _log.warn(_loc.get("generating-execute-script-not-defined"));
+ return;
+ }
+
+ URL url = AccessController.doPrivileged(
+ J2DoPrivHelper.getResourceAction(_conf.getClassResolverInstance().
+ getClassLoader(SchemaTool.class, null), _scriptToExecute));
+
+ if (url == null) {
+ _log.error(_loc.get("generating-execute-script-not-found", _scriptToExecute));
+ return;
+ }
+
+ _log.info(_loc.get("generating-execute-script", _scriptToExecute));
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new InputStreamReader(url.openStream()));
+ String sql;
+ List<String> script = new ArrayList<String>();
+ while ((sql = reader.readLine()) != null) {
+ sql = sql.trim();
+ if (sql.startsWith("--") || sql.startsWith("/*") || sql.startsWith("//")) {
+ continue;
+ }
+
+ int semiColonPosition = sql.indexOf(";");
+ if (semiColonPosition != -1) {
+ sql = sql.substring(0, semiColonPosition);
+ }
+ script.add(sql);
+ }
+
+ executeSQL(script.toArray(new String[script.size()]));
+ } catch (IOException e) {
+ _log.error(e.getMessage(), e);
+ } finally {
+ try {
+ if (reader != null) {
+ reader.close();
+ }
+ } catch (IOException e) {
+ _log.error(e.getMessage(), e);
+ }
+ }
+ }
+
/**
* Record the changes made to the DB in the current {@link SchemaFactory}.
*/
@@ -490,9 +555,11 @@ public class SchemaTool {
for (int i = 0; i < schemas.length; i++) {
seqs = schemas[i].getSequences();
for (int j = 0; j < seqs.length; j++) {
- if (considerDatabaseState && db.findSequence(schemas[i], seqs[j].getQualifiedPath()) !=
- null)
- continue;
+ if (considerDatabaseState && db.findSequence(schemas[i], seqs[j].getQualifiedPath()) != null) {
+ if (_writer == null) {
+ continue;
+ }
+ }
if (createSequence(seqs[j])) {
schema = db.getSchema(seqs[j].getSchemaIdentifier());
@@ -567,8 +634,11 @@ public class SchemaTool {
for (int i = 0; i < schemas.length; i++) {
tabs = schemas[i].getTables();
for (int j = 0; j < tabs.length; j++) {
- if (considerDatabaseState && db.findTable(schemas[i], tabs[j].getQualifiedPath()) != null)
- continue;
+ if (considerDatabaseState && db.findTable(schemas[i], tabs[j].getQualifiedPath()) != null) {
+ if (_writer == null) {
+ continue;
+ }
+ }
if (createTable(tabs[j])) {
newTables.add(tabs[j]);
@@ -618,8 +688,11 @@ public class SchemaTool {
tabs = schemas[i].getTables();
for (int j = 0; j < tabs.length; j++) {
// create unique constraints only on new tables
- if (!newTables.contains(tabs[j]))
- continue;
+ if (!newTables.contains(tabs[j])) {
+ if (_writer == null) {
+ continue;
+ }
+ }
uniques = tabs[j].getUniques();
if (uniques == null || uniques.length == 0)
@@ -643,8 +716,11 @@ public class SchemaTool {
for (int j = 0; j < tabs.length; j++) {
// create foreign keys on new tables even if fks
// have been turned off
- if (!_fks && !newTables.contains(tabs[j]))
- continue;
+ if (!_fks && !newTables.contains(tabs[j])) {
+ if (_writer == null) {
+ continue;
+ }
+ }
fks = tabs[j].getForeignKeys();
if (considerDatabaseState) {
@@ -822,6 +898,10 @@ public class SchemaTool {
else
_log.warn(_loc.get("drop-seq", seqs[j]));
}
+
+ if (_writer != null) {
+ dropSequence(seqs[j]);
+ }
}
}
}
@@ -846,8 +926,12 @@ public class SchemaTool {
}
dbTable = db.findTable(tabs[j]);
- if (dbTable == null)
+ if (dbTable == null) {
+ if (_writer != null) {
+ drops.add(tabs[j]);
+ }
continue;
+ }
dbCols = dbTable.getColumns();
for (int k = 0; k < dbCols.length; k++) {
Modified: openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties?rev=1770509&r1=1770508&r2=1770509&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/schema/localizer.properties Sat Nov 19 18:08:44 2016
@@ -147,6 +147,9 @@ generating-primary: Reading primary keys
generating-indexes: Reading indexes for table "{1}"
generating-foreign: Reading foreign keys for table "{1}"
generating-sequences: Reading sequences for schema "{0}"
+generating-execute-script: Executing script "{0}".
+generating-execute-script-not-defined: A script needs to be indicated to execute, but no script was set in setScriptToExecute.
+generating-execute-script-not-found: Could not find script to execute "{0}"
no-custom-ds: use a custom DataSource
delete-table-contents: An error occurred while attempting to delete all \
records from all mapped tables.
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java?rev=1770509&r1=1770508&r2=1770509&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfiguration.java Sat Nov 19 18:08:44 2016
@@ -1788,7 +1788,7 @@ public interface OpenJPAConfiguration
/**
* Sets the {@link EncryptionProvider}.
- *
+ *
*/
public void setEncryptionProvider(String className);
@@ -1983,5 +1983,31 @@ public interface OpenJPAConfiguration
* @since 2.4.2
*/
public void setUseTCCLinSelectNew(Boolean useTcclForSelectNew);
+
+ public String getDatabaseAction();
+
+ public int getDatabaseActionConstant();
+
+ String getScriptsAction();
+
+ int getScriptsActionConstant();
+
+ String getCreateSource();
+
+ int getCreateSourceConstant();
+
+ String getDropSource();
+
+ int getDropSourceConstant();
+
+ String getCreateScriptSource();
+
+ String getDropScriptSource();
+
+ String getCreateScriptTarget();
+
+ String getDropScriptTarget();
+
+ String getLoadScriptSource();
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java?rev=1770509&r1=1770508&r2=1770509&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/OpenJPAConfigurationImpl.java Sat Nov 19 18:08:44 2016
@@ -178,6 +178,17 @@ public class OpenJPAConfigurationImpl
public BooleanValue postLoadOnMerge;
public BooleanValue optimizeIdCopy;
public BooleanValue useTcclForSelectNew;
+
+ // JPA Properties
+ public IntValue databaseAction;
+ public IntValue scriptsAction;
+ public IntValue createSource;
+ public IntValue dropSource;
+ public StringValue createScriptSource;
+ public StringValue dropScriptSource;
+ public StringValue createScriptTarget;
+ public StringValue dropScriptTarget;
+ public StringValue loadScriptSource;
// custom values
public BrokerFactoryValue brokerFactoryPlugin;
@@ -406,7 +417,58 @@ public class OpenJPAConfigurationImpl
optimizeIdCopy = addBoolean("OptimizeIdCopy");
optimizeIdCopy.setDefault("false");
optimizeIdCopy.set(false);
-
+
+ databaseAction = addInt("javax.persistence.schema-generation.database.action");
+ aliases = new String[] {
+ "none", String.valueOf(SchemaGenerationAction.NONE),
+ "create", String.valueOf(SchemaGenerationAction.CREATE),
+ "drop-and-create", String.valueOf(SchemaGenerationAction.DROP_AND_CREATE),
+ "drop", String.valueOf(SchemaGenerationAction.DROP)
+ };
+ databaseAction.setAliases(aliases);
+ databaseAction.setDefault(aliases[0]);
+ databaseAction.setAliasListComprehensive(true);
+
+ scriptsAction = addInt("javax.persistence.schema-generation.scripts.action");
+ aliases = new String[] {
+ "none", String.valueOf(SchemaGenerationAction.NONE),
+ "create", String.valueOf(SchemaGenerationAction.CREATE),
+ "drop-and-create", String.valueOf(SchemaGenerationAction.DROP_AND_CREATE),
+ "drop", String.valueOf(SchemaGenerationAction.DROP)
+ };
+ scriptsAction.setAliases(aliases);
+ scriptsAction.setDefault(aliases[0]);
+ scriptsAction.setAliasListComprehensive(true);
+
+ createSource = addInt("javax.persistence.schema-generation.create-source");
+ aliases = new String[] {
+ "none", String.valueOf(SchemaGenerationSource.NONE),
+ "metadata", String.valueOf(SchemaGenerationSource.METADATA),
+ "script", String.valueOf(SchemaGenerationSource.SCRIPT),
+ "metadata-then-script", String.valueOf(SchemaGenerationSource.METADATA_THEN_SCRIPT),
+ "script-then-metadata", String.valueOf(SchemaGenerationSource.SCRIPT_THEN_METADATA)
+ };
+ createSource.setAliases(aliases);
+ createSource.setDefault(aliases[0]);
+ createSource.setAliasListComprehensive(true);
+
+ dropSource = addInt("javax.persistence.schema-generation.drop-source");
+ aliases = new String[] {
+ "metadata", String.valueOf(SchemaGenerationSource.METADATA),
+ "script", String.valueOf(SchemaGenerationSource.SCRIPT),
+ "metadata-then-script", String.valueOf(SchemaGenerationSource.METADATA_THEN_SCRIPT),
+ "script-then-metadata", String.valueOf(SchemaGenerationSource.SCRIPT_THEN_METADATA)
+ };
+ dropSource.setAliases(aliases);
+ dropSource.setDefault(aliases[0]);
+ dropSource.setAliasListComprehensive(true);
+
+ createScriptSource = addString("javax.persistence.schema-generation.create-script-source");
+ dropScriptSource = addString("javax.persistence.schema-generation.drop-script-source");
+ createScriptTarget = addString("javax.persistence.schema-generation.scripts.create-target");
+ dropScriptTarget = addString("javax.persistence.schema-generation.scripts.drop-target");
+ loadScriptSource = addString("javax.persistence.sql-load-script-source");
+
autoClear = addInt("AutoClear");
aliases =
new String[] { "datastore",
@@ -1880,6 +1942,58 @@ public class OpenJPAConfigurationImpl
}
}
+ public String getDatabaseAction() {
+ return databaseAction.getString();
+ }
+
+ public int getDatabaseActionConstant() {
+ return databaseAction.get();
+ }
+
+ public String getScriptsAction() {
+ return scriptsAction.getString();
+ }
+
+ public int getScriptsActionConstant() {
+ return scriptsAction.get();
+ }
+
+ public String getCreateSource() {
+ return createSource.getString();
+ }
+
+ public int getCreateSourceConstant() {
+ return createSource.get();
+ }
+
+ public String getDropSource() {
+ return dropSource.getString();
+ }
+
+ public int getDropSourceConstant() {
+ return dropSource.get();
+ }
+
+ public String getCreateScriptSource() {
+ return createScriptSource.getString();
+ }
+
+ public String getDropScriptSource() {
+ return dropScriptSource.getString();
+ }
+
+ public String getCreateScriptTarget() {
+ return createScriptTarget.getString();
+ }
+
+ public String getDropScriptTarget() {
+ return dropScriptTarget.getString();
+ }
+
+ public String getLoadScriptSource() {
+ return loadScriptSource.getString();
+ }
+
@Override
public boolean getUseTCCLinSelectNew() {
return useTcclForSelectNew.get();
Added: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationAction.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationAction.java?rev=1770509&view=auto
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationAction.java (added)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationAction.java Sat Nov 19 18:08:44 2016
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.conf;
+
+/**
+ * @author Roberto Cortez
+ */
+public interface SchemaGenerationAction {
+ public static final int NONE = 0;
+
+ public static final int CREATE = 1;
+
+ public static final int DROP_AND_CREATE = 2;
+
+ public static final int DROP = 3;
+}
Added: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationSource.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationSource.java?rev=1770509&view=auto
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationSource.java (added)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/conf/SchemaGenerationSource.java Sat Nov 19 18:08:44 2016
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.conf;
+
+/**
+ * @author Roberto Cortez
+ */
+public interface SchemaGenerationSource {
+ public static final int NONE = 0;
+
+ public static final int METADATA = 1;
+
+ public static final int SCRIPT = 2;
+
+ public static final int METADATA_THEN_SCRIPT = 3;
+
+ public static final int SCRIPT_THEN_METADATA = 4;
+}
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestSchemaGenerationProperties.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestSchemaGenerationProperties.java?rev=1770509&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestSchemaGenerationProperties.java (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/schema/TestSchemaGenerationProperties.java Sat Nov 19 18:08:44 2016
@@ -0,0 +1,339 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openjpa.persistence.jdbc.schema;
+
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.meta.MappingTool;
+import org.apache.openjpa.jdbc.schema.Schema;
+import org.apache.openjpa.jdbc.schema.SchemaGroup;
+import org.apache.openjpa.jdbc.schema.SchemaTool;
+import org.apache.openjpa.jdbc.schema.Table;
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactory;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
+import org.apache.openjpa.persistence.jdbc.common.apps.InvertA;
+import org.apache.openjpa.persistence.jdbc.kernel.BaseJDBCTest;
+
+import java.io.File;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.apache.openjpa.jdbc.identifier.DBIdentifier.newSchema;
+import static org.apache.openjpa.jdbc.identifier.DBIdentifier.newTable;
+import static org.apache.openjpa.jdbc.identifier.QualifiedDBIdentifier.getPath;
+
+/**
+ * @author Roberto Cortez
+ */
+public class TestSchemaGenerationProperties extends BaseJDBCTest {
+ private static final String[] TABLES_NAME = {
+ "AUTOINCPC1",
+ "AUTOINCPC3",
+ "CONJOINPC4",
+ "CONJOINPC5",
+ "CUSTMAPPC",
+ "DFGTEST",
+ "EAGERPC",
+ "EAGERPCSUB",
+ "HELPERPC",
+ "HELPERPC2",
+ "HELPERPC3",
+ "INVERTA",
+ "INVERTB",
+ "EAGEROUTERJOINPC"
+ };
+
+ public TestSchemaGenerationProperties(String name) {
+ super(name);
+ }
+
+ @Override
+ protected String getPersistenceUnitName() {
+ return "TestConv";
+ }
+
+ @Override
+ protected void addProperties(Map map) {}
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+
+ OpenJPAEntityManagerFactory pmf = getEmf(new HashMap());
+ pmf.createEntityManager();
+ JDBCConfiguration conf = (JDBCConfiguration) ((OpenJPAEntityManagerFactorySPI) pmf).getConfiguration();
+
+ MappingTool tool = new MappingTool(conf, "drop", false);
+ SchemaTool schemaTool = new SchemaTool(conf, "drop");
+ schemaTool.setSchemaGroup(tool.getSchemaGroup());
+ schemaTool.run();
+ }
+
+ // TODO - Add validation when source uses script but no script is provided?.
+
+ public void testSchemaGenMetadataDrop() throws Exception {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "drop");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNull("Table " + tableName + " should not exist in the DB.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+ }
+
+ public void testSchemaGenMetadataCreate() throws Exception {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "create");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNotNull("Table " + tableName + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+ }
+
+ public void testSchemaGenMetadataDropAndCreate() throws Exception {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "drop-and-create");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNotNull("Table " + tableName + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+ }
+
+ public void testSchemaGenScriptDrop() throws Exception {
+ testSchemaGenMetadataCreate();
+
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "drop");
+ properties.put("javax.persistence.schema-generation.drop-source", "script");
+ properties.put("javax.persistence.schema-generation.drop-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/drop.sql");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNull("Table " + tableName + " should not exist in the DB.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+ }
+
+ public void testSchemaGenScriptCreate() throws Exception {
+ testSchemaGenMetadataDrop();
+
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "create");
+ properties.put("javax.persistence.schema-generation.create-source", "script");
+ properties.put("javax.persistence.schema-generation.create-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/create.sql");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNotNull("Table " + tableName + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+ }
+
+ public void testSchemaGenScriptDropAndCreate() throws Exception {
+ testSchemaGenMetadataCreate();
+
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "drop-and-create");
+ properties.put("javax.persistence.schema-generation.drop-source", "script");
+ properties.put("javax.persistence.schema-generation.drop-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/drop.sql");
+ properties.put("javax.persistence.schema-generation.create-source", "script");
+ properties.put("javax.persistence.schema-generation.create-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/create.sql");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNotNull("Table " + tableName + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+ }
+
+ public void testSchemaGenMetadataThenScriptDropAndCreate() throws Exception {
+ try {
+ OpenJPAEntityManagerFactory pmf = getEmf();
+ pmf.createEntityManager();
+ JDBCConfiguration conf = (JDBCConfiguration) ((OpenJPAEntityManagerFactorySPI) pmf).getConfiguration();
+
+ SchemaTool schemaTool = new SchemaTool(conf, SchemaTool.ACTION_EXECUTE_SCRIPT);
+ schemaTool.setScriptToExecute("org/apache/openjpa/persistence/jdbc/schema/create-after-metadata.sql");
+ schemaTool.run();
+ } catch (SQLException e) {}
+
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "drop-and-create");
+ properties.put("javax.persistence.schema-generation.drop-source", "metadata-then-script");
+ properties.put("javax.persistence.schema-generation.drop-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/drop-after-metadata.sql");
+ properties.put("javax.persistence.schema-generation.create-source", "metadata-then-script");
+ properties.put("javax.persistence.schema-generation.create-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/create-after-metadata.sql");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNotNull("Table " + tableName + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+
+ assertNotNull("Table " + "CREATE_AFTER_METADATA" + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable("CREATE_AFTER_METADATA"))));
+ }
+
+ public void testSchemaGenNoCreateSourceSpecifiedAndCreateScriptSourceSpecified() throws Exception {
+ try {
+ OpenJPAEntityManagerFactory pmf = getEmf();
+ pmf.createEntityManager();
+ JDBCConfiguration conf = (JDBCConfiguration) ((OpenJPAEntityManagerFactorySPI) pmf).getConfiguration();
+
+ SchemaTool schemaTool = new SchemaTool(conf, SchemaTool.ACTION_EXECUTE_SCRIPT);
+ schemaTool.setScriptToExecute("org/apache/openjpa/persistence/jdbc/schema/drop-after-metadata.sql");
+ schemaTool.run();
+ } catch (SQLException e) {}
+
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "create");
+ properties.put("javax.persistence.schema-generation.create-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/create-after-metadata.sql");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ assertNotNull("Table " + "CREATE_AFTER_METADATA" + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable("CREATE_AFTER_METADATA"))));
+ }
+
+ public void testSchemaGenNoCreateSourceAndCreateScriptSourceSpecified() throws Exception {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "create");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNotNull("Table " + tableName + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+ }
+
+ public void testSchemaGenNoDropSourceSpecifiedAndDropScriptSourceSpecified() throws Exception {
+ testSchemaGenMetadataCreate();
+
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "drop");;
+ properties.put("javax.persistence.schema-generation.drop-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/drop.sql");
+
+ SchemaGroup dbSchemaGroup = getSchemaGroup(properties);
+
+ for (String tableName : TABLES_NAME) {
+ assertNull("Table " + tableName + " should not exist in the DB.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+ }
+
+ public void testSchemaGenScriptLoad() throws Exception {
+ testSchemaGenMetadataDropAndCreate();
+
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.sql-load-script-source",
+ "org/apache/openjpa/persistence/jdbc/schema/load.sql");
+
+ OpenJPAEntityManagerFactory pmf = getEmf(properties);
+ OpenJPAEntityManager entityManager = pmf.createEntityManager();
+ JDBCConfiguration conf = (JDBCConfiguration) ((OpenJPAEntityManagerFactorySPI) pmf).getConfiguration();
+
+ SchemaTool schemaTool = new SchemaTool(conf);
+ SchemaGroup dbSchemaGroup = schemaTool.getDBSchemaGroup();
+
+ for (String tableName : TABLES_NAME) {
+ assertNotNull("Table " + tableName + " should have been created in the DB, but does not exists.",
+ dbSchemaGroup.findTable(getPath(newTable(tableName))));
+ }
+
+ InvertA invertA = entityManager.find(InvertA.class, 1);
+ assertEquals(1, invertA.getId());
+ assertEquals("script load test", invertA.getTest());
+ }
+
+ public void testSchemaGenOutputScriptCreate() throws Exception {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "create");
+ properties.put("javax.persistence.schema-generation.scripts.create-target",
+ "target/create-db-output.sql");
+
+ getEmf(properties).createEntityManager();
+
+ File createFile = new File("target/create-db-output.sql");
+ assertTrue(createFile.exists());
+ assertTrue(createFile.length() > 0);
+ }
+
+ public void testSchemaGenOutputScriptDrop() throws Exception {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "drop");
+ properties.put("javax.persistence.schema-generation.scripts.drop-target",
+ "target/drop-db-output.sql");
+
+ getEmf(properties).createEntityManager();
+
+ File dropFile = new File("target/drop-db-output.sql");
+ assertTrue(dropFile.exists());
+ assertTrue(dropFile.length() > 0);
+ }
+
+ public void testSchemaGenOutputScriptDropAndCreate() throws Exception {
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put("javax.persistence.schema-generation.database.action", "drop-and-create");
+ properties.put("javax.persistence.schema-generation.scripts.create-target",
+ "target/create-db-output.sql");
+ properties.put("javax.persistence.schema-generation.scripts.drop-target",
+ "target/drop-db-output.sql");
+
+ getEmf(properties).createEntityManager();
+
+ File createFile = new File("target/create-db-output.sql");
+ assertTrue(createFile.exists());
+ assertTrue(createFile.length() > 0);
+
+ File dropFile = new File("target/drop-db-output.sql");
+ assertTrue(dropFile.exists());
+ assertTrue(dropFile.length() > 0);
+ }
+
+ private SchemaGroup getSchemaGroup(Map<String, String> properties) {
+ OpenJPAEntityManagerFactory pmf = getEmf(properties);
+ pmf.createEntityManager();
+ JDBCConfiguration conf = (JDBCConfiguration) ((OpenJPAEntityManagerFactorySPI) pmf).getConfiguration();
+
+ SchemaTool schemaTool = new SchemaTool(conf);
+ return schemaTool.getDBSchemaGroup();
+ }
+}
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create-after-metadata.sql
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create-after-metadata.sql?rev=1770509&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create-after-metadata.sql (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create-after-metadata.sql Sat Nov 19 18:08:44 2016
@@ -0,0 +1 @@
+CREATE TABLE CREATE_AFTER_METADATA (ID INTEGER NOT NULL, TEST VARCHAR(35));
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create.sql
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create.sql?rev=1770509&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create.sql (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/create.sql Sat Nov 19 18:08:44 2016
@@ -0,0 +1,14 @@
+CREATE TABLE AUTOINCPC1 (ID INTEGER NOT NULL, STRNGFLD VARCHAR(50), DTYPE VARCHAR(255), ONEONE_ID INTEGER, INTFIELD INTEGER, CONSTRAINT SQL150111133630290 PRIMARY KEY (ID));
+CREATE TABLE AUTOINCPC3 (ID BIGINT NOT NULL, STRNGFLD VARCHAR(50), ONEONE_ID BIGINT, CONSTRAINT SQL150111133630380 PRIMARY KEY (ID));
+CREATE TABLE CONJOINPC4 (ID INTEGER NOT NULL, MANYTOMANY BLOB, NAME VARCHAR(50), ONETOONE1_ID INTEGER, CONSTRAINT SQL150111133630400 PRIMARY KEY (ID));
+CREATE TABLE CONJOINPC5 (ID INTEGER NOT NULL, NAME VARCHAR(255), CONSTRAINT SQL150111133630420 PRIMARY KEY (ID));
+CREATE TABLE CUSTMAPPC (ID INTEGER NOT NULL, FEMALE SMALLINT, NAME VARCHAR(50), CONSTRAINT SQL150111133630430 PRIMARY KEY (ID));
+CREATE TABLE DFGTEST (ID BIGINT NOT NULL, DFGFIELD INTEGER, NONDFGFIELD INTEGER, CONSTRAINT SQL150111133630450 PRIMARY KEY (ID));
+CREATE TABLE EAGEROUTERJOINPC (ID BIGINT NOT NULL, NAME VARCHAR(255), HELPER BLOB, CONSTRAINT SQL150111133630460 PRIMARY KEY (ID));
+CREATE TABLE EAGERPC (ID INTEGER NOT NULL, STRNGFLD VARCHAR(50), EAGER_ID INTEGER, EAGSUB INTEGER, HELPER_ID INTEGER, RECURSE_ID INTEGER, CONSTRAINT SQL150111133630470 PRIMARY KEY (ID));
+CREATE TABLE EAGERPCSUB (ID INTEGER NOT NULL, INTFIELD INTEGER, CONSTRAINT SQL150111133630480 PRIMARY KEY (ID));
+CREATE TABLE HELPERPC (ID INTEGER NOT NULL, STRNGFLD VARCHAR(50), EAGER_ID INTEGER, HELPER BLOB, CONSTRAINT SQL150111133630500 PRIMARY KEY (ID));
+CREATE TABLE HELPERPC2 (ID INTEGER NOT NULL, STRNGFLD VARCHAR(50), HELPER_ID INTEGER, CONSTRAINT SQL150111133630510 PRIMARY KEY (ID));
+CREATE TABLE HELPERPC3 (ID INTEGER NOT NULL, STRNGFLD VARCHAR(50), DTYPE VARCHAR(255), INTFIELD INTEGER, CONSTRAINT SQL150111133630520 PRIMARY KEY (ID));
+CREATE TABLE INVERTA (ID INTEGER NOT NULL, TEST VARCHAR(35), INVERTB_ID INTEGER, CONSTRAINT SQL150111133630530 PRIMARY KEY (ID));
+CREATE TABLE INVERTB (ID INTEGER NOT NULL, TEST VARCHAR(35), INVERTA_ID INTEGER, CONSTRAINT SQL150111133630540 PRIMARY KEY (ID));
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop-after-metadata.sql
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop-after-metadata.sql?rev=1770509&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop-after-metadata.sql (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop-after-metadata.sql Sat Nov 19 18:08:44 2016
@@ -0,0 +1 @@
+DROP TABLE CREATE_AFTER_METADATA;
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop.sql
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop.sql?rev=1770509&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop.sql (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/drop.sql Sat Nov 19 18:08:44 2016
@@ -0,0 +1,14 @@
+DROP TABLE AUTOINCPC1;
+DROP TABLE AUTOINCPC3;
+DROP TABLE CONJOINPC4;
+DROP TABLE CONJOINPC5;
+DROP TABLE CUSTMAPPC;
+DROP TABLE DFGTEST;
+DROP TABLE EAGEROUTERJOINPC;
+DROP TABLE EAGERPC;
+DROP TABLE EAGERPCSUB;
+DROP TABLE HELPERPC;
+DROP TABLE HELPERPC2;
+DROP TABLE HELPERPC3;
+DROP TABLE INVERTA;
+DROP TABLE INVERTB;
Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/load.sql
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/load.sql?rev=1770509&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/load.sql (added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/jdbc/schema/load.sql Sat Nov 19 18:08:44 2016
@@ -0,0 +1 @@
+INSERT INTO INVERTA (ID, TEST) VALUES (1, 'script load test');