You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2012/02/20 16:28:47 UTC
svn commit: r1291311 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres:
IngresAdapter.java IngresMergerFactory.java
Author: oltka
Date: Mon Feb 20 15:28:46 2012
New Revision: 1291311
URL: http://svn.apache.org/viewvc?rev=1291311&view=rev
Log:
CAY-1666 added ingres syntax (for ingres) when change column to null and not null
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java?rev=1291311&r1=1291310&r2=1291311&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java Mon Feb 20 15:28:46 2012
@@ -40,8 +40,6 @@ import org.apache.cayenne.dba.TypesMappi
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.DbJoin;
-import org.apache.cayenne.map.DbRelationship;
import org.apache.cayenne.merge.MergerFactory;
import org.apache.cayenne.query.Query;
import org.apache.cayenne.query.SQLAction;
@@ -68,7 +66,7 @@ public class IngresAdapter extends JdbcA
super(runtimeProperties, defaultExtendedTypes, userExtendedTypes, extendedTypeFactories);
setSupportsUniqueConstraints(true);
setSupportsGeneratedKeys(true);
- }
+ }
@Override
public QualifierTranslator getQualifierTranslator(QueryAssembler queryAssembler) {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java?rev=1291311&r1=1291310&r2=1291311&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresMergerFactory.java Mon Feb 20 15:28:46 2012
@@ -23,6 +23,7 @@ import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.QuotingStrategy;
+import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbJoin;
@@ -32,7 +33,9 @@ import org.apache.cayenne.merge.DropColu
import org.apache.cayenne.merge.DropRelationshipToDb;
import org.apache.cayenne.merge.MergerFactory;
import org.apache.cayenne.merge.MergerToken;
+import org.apache.cayenne.merge.SetAllowNullToDb;
import org.apache.cayenne.merge.SetColumnTypeToDb;
+import org.apache.cayenne.merge.SetNotNullToDb;
public class IngresMergerFactory extends MergerFactory {
@@ -83,10 +86,8 @@ public class IngresMergerFactory extends
return new AddRelationshipToDb(entity, rel) {
@Override
public List<String> createSql(DbAdapter adapter) {
-
if (!rel.isToMany() && rel.isToPK() && !rel.isToDependentPK()) {
-
DbEntity source = (DbEntity) rel.getSourceEntity();
boolean status = (source.getDataMap() != null && source.getDataMap().isQuotingSQLIdentifiers());
QuotingStrategy context = adapter.getQuotingStrategy(status);
@@ -124,6 +125,9 @@ public class IngresMergerFactory extends
buf.append(" (");
buf.append(refBuf.toString());
buf.append(')');
+
+ // also make sure we delete dependent FKs
+ buf.append(" ON DELETE CASCADE");
String fksql = buf.toString();
@@ -138,6 +142,74 @@ public class IngresMergerFactory extends
};
}
+ @Override
+ public MergerToken createSetNotNullToDb(DbEntity entity, DbAttribute column) {
+ return new SetNotNullToDb(entity, column) {
+
+ @Override
+ public List<String> createSql(DbAdapter adapter) {
+
+ /*
+ * TODO: we generate this query as in ingres db documentation, but unfortunately ingres don't support it
+ *
+ */
+
+ StringBuilder sqlBuffer = new StringBuilder();
+
+ boolean status = (getEntity().getDataMap() != null) && getEntity().getDataMap().isQuotingSQLIdentifiers();
+ QuotingStrategy context = adapter.getQuotingStrategy(status);
+
+ sqlBuffer.append("ALTER TABLE ");
+ sqlBuffer.append(getEntity().getFullyQualifiedName());
+ sqlBuffer.append(" ALTER COLUMN ");
+ sqlBuffer.append(context.quoteString(getColumn().getName()));
+ sqlBuffer.append(" ");
+ sqlBuffer.append(adapter.externalTypesForJdbcType(getColumn().getType())[0]);
+
+ if (TypesMapping.supportsLength(getColumn().getType()) && getColumn().getMaxLength() > 0) {
+ sqlBuffer.append("(");
+ sqlBuffer.append(getColumn().getMaxLength());
+ sqlBuffer.append(")");
+ }
+
+ sqlBuffer.append(" NOT NULL");
+
+ return Collections.singletonList(sqlBuffer.toString());
+ }
+
+ };
+ }
+
+ @Override
+ public MergerToken createSetAllowNullToDb(DbEntity entity, DbAttribute column) {
+ return new SetAllowNullToDb(entity, column) {
+
+ @Override
+ public List<String> createSql(DbAdapter adapter) {
+ StringBuilder sqlBuffer = new StringBuilder();
+ QuotingStrategy context = adapter.getQuotingStrategy(getEntity()
+ .getDataMap()
+ .isQuotingSQLIdentifiers());
+ sqlBuffer.append("ALTER TABLE ");
+ sqlBuffer.append(context.quoteFullyQualifiedName(getEntity()));
+ sqlBuffer.append(" ALTER COLUMN ");
+ sqlBuffer.append(context.quoteString(getColumn().getName()));
+ sqlBuffer.append(" ");
+ sqlBuffer.append(adapter.externalTypesForJdbcType(getColumn().getType())[0]);
+
+ if (TypesMapping.supportsLength(getColumn().getType()) && getColumn().getMaxLength() > 0) {
+ sqlBuffer.append("(");
+ sqlBuffer.append(getColumn().getMaxLength());
+ sqlBuffer.append(")");
+ }
+
+ sqlBuffer.append(" WITH NULL");
+
+ return Collections.singletonList(sqlBuffer.toString());
+ }
+
+ };
+ }
@Override
public MergerToken createDropRelationshipToDb(