You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by dj...@apache.org on 2008/01/31 18:12:45 UTC
svn commit: r617162 - in /db/derby/code/trunk/java/engine/org/apache/derby:
catalog/ iapi/sql/dictionary/ iapi/types/ impl/sql/catalog/ impl/sql/compile/
Author: djd
Date: Thu Jan 31 09:12:30 2008
New Revision: 617162
URL: http://svn.apache.org/viewvc?rev=617162&view=rev
Log:
DERBY-2775 Make DataTypeDescriptor immutable by removing the set methods for collation type and derivation.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/AlterTableNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharConstantNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConcatenationOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ModifyColumnNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/StaticMethodCallNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableElementList.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNodeList.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/TypeDescriptor.java Thu Jan 31 09:12:30 2008
@@ -58,15 +58,7 @@
TypeDescriptor SMALLINT =
DataTypeDescriptor.getBuiltInDataTypeDescriptor(
Types.SMALLINT).getCatalogType();
-
-
- /**
- * Catalog type for nullable VARCHAR(128) used for types representing
- * system catalogs.
- */
- TypeDescriptor VARCHAR128 =
- DataTypeDescriptor.getBuiltInDataTypeDescriptor(
- Types.VARCHAR, 128).getCatalogType();
+
///////////////////////////////////////////////////////////////////////
//
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java Thu Jan 31 09:12:30 2008
@@ -32,6 +32,7 @@
import org.apache.derby.iapi.types.NumberDataValue;
import org.apache.derby.iapi.types.DataValueFactory;
import org.apache.derby.iapi.types.DataValueDescriptor;
+import org.apache.derby.iapi.types.StringDataValue;
import org.apache.derby.iapi.sql.compile.CostEstimate;
import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
import org.apache.derby.iapi.sql.execute.ExecutionFactory;
@@ -39,9 +40,11 @@
import org.apache.derby.iapi.store.access.TransactionController;
import org.apache.derby.iapi.types.RowLocation;
+import org.apache.derby.catalog.TypeDescriptor;
import org.apache.derby.catalog.UUID;
import org.apache.derby.iapi.services.uuid.UUIDFactory;
+import java.sql.Types;
import java.util.List;
import java.util.Hashtable;
import java.util.Properties;
@@ -133,6 +136,21 @@
*/
public static final String SOFT_DATA_DICTIONARY_VERSION = "derby.softDataDictionaryVersion";
public static final String PROPERTY_CONGLOMERATE_VERSION = "PropertyConglomerateVersion";
+
+ /**
+ * An immutable runtime type that describes the type VARCHAR(128) NOT NULL
+ * with collation type UCS_BASIC and derivation IMPLICIT.
+ */
+ public static final DataTypeDescriptor TYPE_SYSTEM_IDENTIFIER =
+ DataTypeDescriptor.getBuiltInDataTypeDescriptor(
+ Types.VARCHAR, false, 128);
+
+ /**
+ * An immutable catalog type that describes the type VARCHAR(128) NOT NULL
+ * with collation type UCS_BASIC.
+ */
+ public static final TypeDescriptor CATALOG_TYPE_SYSTEM_IDENTIFIER =
+ TYPE_SYSTEM_IDENTIFIER.getCatalogType();
/*
** CORE TABLES
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/types/DataTypeDescriptor.java Thu Jan 31 09:12:30 2008
@@ -74,6 +74,10 @@
*/
/**
* Get a descriptor that corresponds to a nullable builtin JDBC type.
+ * If a variable length type then the size information will be set
+ * to the maximum possible.
+ *
+ * Collation type will be UCS_BASIC and derivation IMPLICIT.
*
* @param jdbcType The int type of the JDBC type for which to get
* a corresponding SQL DataTypeDescriptor
@@ -88,7 +92,20 @@
{
return DataTypeDescriptor.getBuiltInDataTypeDescriptor(jdbcType, true);
}
- public static DataTypeDescriptor getBuiltInDataTypeDescriptor
+
+ /**
+ * Get a descriptor that corresponds to a nullable builtin variable
+ * length JDBC type.
+ *
+ * Collation type will be UCS_BASIC and derivation IMPLICIT.
+ *
+ * @param jdbcType The int type of the JDBC type for which to get
+ * a corresponding SQL DataTypeDescriptor
+ *
+ * @return A new DataTypeDescriptor that corresponds to the Java type.
+ * A null return value means there is no corresponding SQL type
+ */
+ public static DataTypeDescriptor getBuiltInDataTypeDescriptor
(
int jdbcType,
int length
@@ -162,6 +179,8 @@
}
/**
* Get a descriptor that corresponds to a builtin JDBC type.
+ *
+ * Collation type will be UCS_BASIC and derivation IMPLICIT.
*
* @param jdbcType The int type of the JDBC type for which to get
* a corresponding SQL DataTypeDescriptor
@@ -187,7 +206,9 @@
return new DataTypeDescriptor(typeId, isNullable, maxLength);
}
/**
- * Get a DataTypeServices that corresponds to a builtin SQL type
+ * Get a DataTypeServices that corresponds to a nullable builtin SQL type.
+ *
+ * Collation type will be UCS_BASIC and derivation IMPLICIT.
*
* @param sqlTypeName The name of the type for which to get
* a corresponding SQL DataTypeDescriptor
@@ -204,6 +225,8 @@
}
/**
* Get a DataTypeServices that corresponds to a builtin SQL type
+ *
+ * Collation type will be UCS_BASIC and derivation IMPLICIT.
*
* @param sqlTypeName The name of the type for which to get
* a corresponding SQL DataTypeDescriptor
@@ -631,7 +654,7 @@
boolean nullable;
TypeId thisType;
TypeId otherType;
- DataTypeDescriptor higherType = null;
+ DataTypeDescriptor higherType;
DataTypeDescriptor lowerType = null;
int maximumWidth;
int precision = getPrecision();
@@ -832,23 +855,31 @@
if (getCollationDerivation() != otherDTS.getCollationDerivation()) {
if (getCollationDerivation() == StringDataValue.COLLATION_DERIVATION_NONE) {
//Step 2
- higherType.setCollationDerivation(otherDTS.getCollationDerivation());
- higherType.setCollationType(otherDTS.getCollationType());
+ higherType = higherType.getCollatedType(
+ otherDTS.getCollationType(),
+ otherDTS.getCollationDerivation());
+
} else if (otherDTS.getCollationDerivation() == StringDataValue.COLLATION_DERIVATION_NONE) {
//Step 2
- higherType.setCollationDerivation(getCollationDerivation());
- higherType.setCollationType(getCollationType());
+ higherType = higherType.getCollatedType(
+ getCollationType(),
+ getCollationDerivation());
} else {
//Step 3
- higherType.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_NONE);
+ higherType = higherType.getCollatedType(
+ StringDataValue.COLLATION_TYPE_UCS_BASIC, // ignored
+ StringDataValue.COLLATION_DERIVATION_NONE);
}
} else if (getCollationType() != otherDTS.getCollationType())
//Step 4
- higherType.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_NONE);
+ higherType = higherType.getCollatedType(
+ StringDataValue.COLLATION_TYPE_UCS_BASIC, // ignored
+ StringDataValue.COLLATION_DERIVATION_NONE);
else {
//Step 1
- higherType.setCollationDerivation(getCollationDerivation());
- higherType.setCollationType(getCollationType());
+ higherType = higherType.getCollatedType(
+ getCollationType(),
+ getCollationDerivation());
}
}
@@ -1030,19 +1061,6 @@
}
/**
- * Set the collation type of this TypeDescriptor
- * @param collationTypeValue This will be COLLATION_TYPE_UCS_BASIC
- * or COLLATION_TYPE_TERRITORY_BASED
- *
- * @see StringDataValue#COLLATION_TYPE_UCS_BASIC
- * @see StringDataValue#COLLATION_TYPE_TERRITORY_BASED
- */
- public void setCollationType(int collationTypeValue)
- {
- typeDescriptor.setCollationType(collationTypeValue);
- }
-
- /**
* Get the collation derivation for this type. This applies only for
* character string types. For the other types, this api should be
* ignored.
@@ -1070,7 +1088,8 @@
* with character strings with different collations (Section 9.3 Data types
* of results of aggregations Syntax Rule 3aii).
*
- * Collation derivation will be initialized to COLLATION_DERIVATION_NONE.
+ * Collation derivation will be initialized to COLLATION_DERIVATION_IMPLICIT
+ * if not explicitly set.
*
* @return Should be COLLATION_DERIVATION_NONE or COLLATION_DERIVATION_IMPLICIT
*
@@ -1089,22 +1108,6 @@
public boolean isRowMultiSet()
{
return getTypeId().isRowMultiSetTypeId();
- }
-
- /**
- * Set the collation derivation of this DTD
- * @param collationDerivationValue This will be
- * COLLATION_DERIVATION_NONE/COLLATION_DERIVATION_IMPLICIT/COLLATION_DERIVATION_EXPLICIT
- * In Derby 10.3, we do not expect to get value COLLATION_DERIVATION_EXPLICIT.
- *
- * @see StringDataValue#COLLATION_DERIVATION_NONE
- * @see StringDataValue#COLLATION_DERIVATION_IMPLICIT
- * @see StringDataValue#COLLATION_DERIVATION_EXPLICIT
-
- */
- public void setCollationDerivation(int collationDerivationValue)
- {
- collationDerivation = collationDerivationValue;
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java Thu Jan 31 09:12:30 2008
@@ -9039,7 +9039,7 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(
Types.VARCHAR, Limits.DB2_VARCHAR_MAXWIDTH)
};
@@ -9064,8 +9064,8 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.SMALLINT
};
@@ -9253,7 +9253,7 @@
String[] arg_names = {"KEY"};
// procedure argument types
- TypeDescriptor[] arg_types = {TypeDescriptor.VARCHAR128};
+ TypeDescriptor[] arg_types = {CATALOG_TYPE_SYSTEM_IDENTIFIER};
createSystemProcedureOrFunction(
"SYSCS_GET_DATABASE_PROPERTY",
@@ -9275,8 +9275,8 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER
};
createSystemProcedureOrFunction(
@@ -9332,7 +9332,7 @@
TypeDescriptor[] arg_types = {
DataTypeDescriptor.getCatalogType(
Types.VARCHAR, 256),
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.INTEGER
};
@@ -9355,7 +9355,7 @@
TypeDescriptor[] arg_types = {
DataTypeDescriptor.getCatalogType(
Types.VARCHAR, 256),
- TypeDescriptor.VARCHAR128
+ CATALOG_TYPE_SYSTEM_IDENTIFIER
};
createSystemProcedureOrFunction(
@@ -9375,7 +9375,7 @@
String[] arg_names = {"JAR", "UNDEPLOY"};
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.INTEGER
};
@@ -9406,14 +9406,14 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
varchar32672Type,
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
- TypeDescriptor.VARCHAR128
+ CATALOG_TYPE_SYSTEM_IDENTIFIER
};
createSystemProcedureOrFunction(
@@ -9448,7 +9448,7 @@
Types.CHAR, 1),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
- TypeDescriptor.VARCHAR128
+ CATALOG_TYPE_SYSTEM_IDENTIFIER
};
createSystemProcedureOrFunction(
@@ -9479,14 +9479,14 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
varchar32672Type,
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.SMALLINT,
};
@@ -9520,8 +9520,8 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
varchar32672Type,
varchar32672Type,
varchar32672Type,
@@ -9529,7 +9529,7 @@
Types.CHAR, 1),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.SMALLINT,
};
@@ -9561,8 +9561,8 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
varchar32672Type,
varchar32672Type,
};
@@ -9680,9 +9680,9 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -9709,9 +9709,9 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -9738,9 +9738,9 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -9768,9 +9768,9 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000),
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
@@ -9800,10 +9800,10 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -9831,10 +9831,10 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -9862,10 +9862,10 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -9893,10 +9893,10 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -9927,12 +9927,12 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -9964,9 +9964,9 @@
// procedure argument types
TypeDescriptor[] arg_types = {
TypeDescriptor.SMALLINT,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.SMALLINT,
TypeDescriptor.SMALLINT,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
@@ -10023,9 +10023,9 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.SMALLINT,
TypeDescriptor.SMALLINT,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
@@ -10198,8 +10198,8 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.SMALLINT,
TypeDescriptor.SMALLINT,
TypeDescriptor.SMALLINT
@@ -10306,9 +10306,9 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -10337,10 +10337,10 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(Types.VARCHAR, 4000)};
createSystemProcedureOrFunction(
@@ -10771,15 +10771,15 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(
Types.VARCHAR, 32672),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(
Types.VARCHAR, 32672)
};
@@ -10819,7 +10819,7 @@
Types.CHAR, 1),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(
Types.VARCHAR, 32672)
};
@@ -10850,15 +10850,15 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(
Types.VARCHAR, 32672),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.SMALLINT,
};
@@ -10890,8 +10890,8 @@
// procedure argument types
TypeDescriptor[] arg_types = {
- TypeDescriptor.VARCHAR128,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
DataTypeDescriptor.getCatalogType(
Types.VARCHAR, 32672),
DataTypeDescriptor.getCatalogType(
@@ -10902,7 +10902,7 @@
Types.CHAR, 1),
DataTypeDescriptor.getCatalogType(
Types.CHAR, 1),
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
TypeDescriptor.SMALLINT,
};
@@ -10937,7 +10937,7 @@
// void SYSCS_UTIL.SYSCS_SET_USER_ACCESS(USER_NAME VARCHAR(128),
// CONNECTION_PERMISSION VARCHAR(128))
{
- TypeDescriptor[] arg_types = {TypeDescriptor.VARCHAR128, TypeDescriptor.VARCHAR128};
+ TypeDescriptor[] arg_types = {CATALOG_TYPE_SYSTEM_IDENTIFIER, CATALOG_TYPE_SYSTEM_IDENTIFIER};
createSystemProcedureOrFunction(
"SYSCS_SET_USER_ACCESS",
@@ -10953,7 +10953,7 @@
// VARCHAR(128) SYSCS_UTIL.SYSCS_SET_USER_ACCESS(USER_NAME VARCHAR(128))
{
- TypeDescriptor[] arg_types = { TypeDescriptor.VARCHAR128 };
+ TypeDescriptor[] arg_types = { CATALOG_TYPE_SYSTEM_IDENTIFIER };
createSystemProcedureOrFunction(
"SYSCS_GET_USER_ACCESS",
@@ -10963,7 +10963,7 @@
0,
0,
RoutineAliasInfo.READS_SQL_DATA,
- TypeDescriptor.VARCHAR128,
+ CATALOG_TYPE_SYSTEM_IDENTIFIER,
tc);
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/AlterTableNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/AlterTableNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/AlterTableNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/AlterTableNode.java Thu Jan 31 09:12:30 2008
@@ -245,8 +245,7 @@
//collation type of this column to be the same as
//schema descriptor's collation. Set the collation
//derivation as implicit
- cdn.getType().setCollationType(schemaDescriptor.getCollationType());
- cdn.getType().setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ cdn.setCollationType(schemaDescriptor.getCollationType());
}
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CastNode.java Thu Jan 31 09:12:30 2008
@@ -374,8 +374,7 @@
if (externallyGeneratedCastNode && getTypeId().isStringTypeId()) {
//set the collation type to be same as the compilation schema's
//collation type. Collation derivation will be set to "IMPLICIT".
- setCollationUsingCompilationSchema(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ setCollationUsingCompilationSchema();
}
/*
** If it is a java cast, do some work to make sure
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharConstantNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharConstantNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharConstantNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CharConstantNode.java Thu Jan 31 09:12:30 2008
@@ -155,8 +155,7 @@
{
//The DTD for this character constant should get its collation type
//from the schema it is getting compiled in.
- setCollationUsingCompilationSchema(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ setCollationUsingCompilationSchema();
//Once we have the collation type, we should check if the value
//associated with this node should change from
//SQLChar/SQLVarchar/SQLLongvarchar/SQLClob
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java Thu Jan 31 09:12:30 2008
@@ -37,6 +37,7 @@
import org.apache.derby.iapi.types.DataTypeDescriptor;
import org.apache.derby.iapi.types.DataValueDescriptor;
+import org.apache.derby.iapi.types.StringDataValue;
import org.apache.derby.iapi.types.TypeId;
import org.apache.derby.iapi.sql.depend.DependencyManager;
@@ -217,6 +218,16 @@
void setNullability(boolean nullable)
{
type = getType().getNullabilityType(nullable);
+ }
+
+ /**
+ * Set the collation type, note derivation is always
+ * implicit for any catalog item.
+ */
+ void setCollationType(int collationType)
+ {
+ type = getType().getCollatedType(collationType,
+ StringDataValue.COLLATION_DERIVATION_IMPLICIT);
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConcatenationOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConcatenationOperatorNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConcatenationOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ConcatenationOperatorNode.java Thu Jan 31 09:12:30 2008
@@ -196,16 +196,17 @@
DataTypeDescriptor dtd = DataTypeDescriptor.getBuiltInDataTypeDescriptor(
Types.VARCHAR, true, tc
.getCastToCharWidth(leftOperand .getTypeServices()));
- // DERBY-2910 - Match current schema collation for implicit cast as we do for
- // explicit casts per SQL Spec 6.12 (10)
- dtd.setCollationType(getSchemaDescriptor(null).getCollationType());
- dtd.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
leftOperand = (ValueNode) getNodeFactory().getNode(
C_NodeTypes.CAST_NODE,
leftOperand,
dtd,
getContextManager());
+
+ // DERBY-2910 - Match current schema collation for implicit cast as we do for
+ // explicit casts per SQL Spec 6.12 (10)
+ leftOperand.setCollationUsingCompilationSchema();
+
((CastNode) leftOperand).bindCastNodeOnly();
}
tc = rightOperand.getTypeCompiler();
@@ -215,16 +216,17 @@
Types.VARCHAR, true, tc
.getCastToCharWidth(rightOperand
.getTypeServices()));
- // DERBY-2910 - Match current schema collation for implicit cast as we do for
- // explicit casts per SQL Spec 6.12 (10)
- dtd.setCollationType(getSchemaDescriptor(null).getCollationType());
- dtd.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
rightOperand = (ValueNode) getNodeFactory().getNode(
C_NodeTypes.CAST_NODE,
rightOperand,
dtd,
getContextManager());
+
+ // DERBY-2910 - Match current schema collation for implicit cast as we do for
+ // explicit casts per SQL Spec 6.12 (10)
+ rightOperand.setCollationUsingCompilationSchema();
+
((CastNode) rightOperand).bindCastNodeOnly();
}
@@ -494,11 +496,14 @@
if (leftType.getCollationDerivation() != rightType
.getCollationDerivation()
|| leftType.getCollationType() != rightType.getCollationType())
- returnDTD
- .setCollationDerivation(StringDataValue.COLLATION_DERIVATION_NONE);
+
+ returnDTD = returnDTD.getCollatedType(
+ returnDTD.getCollationDerivation(),
+ StringDataValue.COLLATION_DERIVATION_NONE);
else {
- returnDTD.setCollationDerivation(leftType.getCollationDerivation());
- returnDTD.setCollationType(leftType.getCollationType());
+ returnDTD = returnDTD.getCollatedType(
+ leftType.getCollationType(),
+ leftType.getCollationDerivation());
}
return returnDTD;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CreateAliasNode.java Thu Jan 31 09:12:30 2008
@@ -287,6 +287,7 @@
//the passed parameter is null and if so, then simply return.
if (changeTD == null)
return changeTD;
+
TypeId compTypeId = TypeId.getBuiltInTypeId(changeTD.getTypeName());
//No work to do if type id does not correspond to a character string
if (compTypeId != null && compTypeId.isStringTypeId()) {
@@ -296,11 +297,11 @@
changeTD.getMaximumWidth());
//Use the collation type and info of the schema in which this
//function is defined for the return value of the function
- newTDWithCorrectCollation.setCollationType(
- getSchemaDescriptor().getCollationType());
- newTDWithCorrectCollation.setCollationDerivation(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
- return newTDWithCorrectCollation;
+ newTDWithCorrectCollation =
+ newTDWithCorrectCollation.getCollatedType(
+ getSchemaDescriptor().getCollationType(),
+ StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ return newTDWithCorrectCollation.getCatalogType();
}
return changeTD;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/JavaToSQLValueNode.java Thu Jan 31 09:12:30 2008
@@ -251,15 +251,17 @@
throw StandardException.newException(SQLState.LANG_NO_CORRESPONDING_S_Q_L_TYPE,
javaNode.getJavaTypeName());
}
- // For functions returning string types we should set the collation to match the
- // java method's schema DERBY-2972. This is propogated from
- // RoutineAliasInfo to javaNode.
- if (dts.getTypeId().isStringTypeId()){
- dts.setCollationType(javaNode.getCollationType());
- dts.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
- }
- setType(dts);
-
+
+ setType(dts);
+
+ // For functions returning string types we should set the collation to match the
+ // java method's schema DERBY-2972. This is propogated from
+ // RoutineAliasInfo to javaNode.
+ if (dts.getTypeId().isStringTypeId()) {
+ this.setCollationInfo(javaNode.getCollationType(),
+ StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ }
+
return this;
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/LikeEscapeOperatorNode.java Thu Jan 31 09:12:30 2008
@@ -198,8 +198,7 @@
} else if (rightOperand != null && !rightOperand.requiresTypeFromContext()) {
receiver.setCollationInfo(rightOperand.getTypeServices());
} else {
- receiver.setCollationUsingCompilationSchema(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ receiver.setCollationUsingCompilationSchema();
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ModifyColumnNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ModifyColumnNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ModifyColumnNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ModifyColumnNode.java Thu Jan 31 09:12:30 2008
@@ -215,7 +215,7 @@
/**
* If the column being modified is of character string type, then it should
- * get it's collation from the corresponding column in the TableDescriptor.
+ * get its collation from the corresponding column in the TableDescriptor.
* This will ensure that at alter table time, the existing character string
* type columns do not loose their collation type. If the alter table is
* doing a drop column, then we do not need to worry about collation info.
@@ -238,9 +238,7 @@
//no need to worry about collation info
if (getType() != null) {
if (getType().getTypeId().isStringTypeId()) {
- this.getType().setCollationType(cd.getType().getCollationType());
- this.getType().setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
-
+ setCollationType(cd.getType().getCollationType());
}
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SimpleStringOperatorNode.java Thu Jan 31 09:12:30 2008
@@ -106,10 +106,6 @@
operand.getTypeCompiler().
getCastToCharWidth(
operand.getTypeServices()));
- // DERBY-2910 - Match current schema collation for implicit cast as we do for
- // explicit casts per SQL Spec 6.12 (10)
- dtd.setCollationType(getSchemaDescriptor(null).getCollationType());
- dtd.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
operand = (ValueNode)
getNodeFactory().getNode(
@@ -117,6 +113,11 @@
operand,
dtd,
getContextManager());
+
+ // DERBY-2910 - Match current schema collation for implicit cast as we do for
+ // explicit casts per SQL Spec 6.12 (10)
+ operand.setCollationUsingCompilationSchema();
+
((CastNode) operand).bindCastNodeOnly();
operandType = operand.getTypeId();
}
@@ -155,8 +156,7 @@
operand.setType(DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.VARCHAR));
//collation of ? operand should be same as the compilation schema
- operand.setCollationUsingCompilationSchema(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ operand.setCollationUsingCompilationSchema();
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java Thu Jan 31 09:12:30 2008
@@ -41,6 +41,7 @@
import org.apache.derby.iapi.reference.ClassName;
import org.apache.derby.iapi.services.classfile.VMOpcode;
import org.apache.derby.iapi.sql.compile.C_NodeTypes;
+import org.apache.derby.iapi.sql.dictionary.DataDictionary;
import java.sql.Types;
@@ -134,27 +135,25 @@
}
methodName = "getAuthorizationId";
methodType = "java.lang.String";
- dtd = DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.VARCHAR, false, 128);
+
//SQL spec Section 6.4 Syntax Rule 4 says that the collation type
//of these functions will be the collation of character set
//SQL_IDENTIFIER. In Derby's case, that will mean, the collation of
//these functions will be UCS_BASIC. The collation derivation will
//be implicit.
- dtd.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
- dtd.setCollationType(StringDataValue.COLLATION_TYPE_UCS_BASIC);
+ dtd = DataDictionary.TYPE_SYSTEM_IDENTIFIER;
break;
case C_NodeTypes.CURRENT_SCHEMA_NODE:
sqlName = "CURRENT SCHEMA";
methodName = "getCurrentSchemaName";
methodType = "java.lang.String";
- dtd = DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.VARCHAR, false, 128);
- //This is a Derby specific function but it's collation type will
+
+ //This is a Derby specific function but its collation type will
//be based on the same rules as for SESSION_USER/CURRENT_USER etc.
//ie there collation type will be UCS_BASIC. The collation
//derivation will be implicit.
- dtd.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
- dtd.setCollationType(StringDataValue.COLLATION_TYPE_UCS_BASIC);
+ dtd = DataDictionary.TYPE_SYSTEM_IDENTIFIER;
break;
case C_NodeTypes.CURRENT_ROLE_NODE:
@@ -167,10 +166,7 @@
//of these functions will be the collation of character set
//SQL_IDENTIFIER. In Derby's case, that will mean, the collation of
//these functions will be UCS_BASIC. The collation derivation will
- //be implicit.
- dtd.setCollationDerivation(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
- dtd.setCollationType(StringDataValue.COLLATION_TYPE_UCS_BASIC);
+ //be implicit. (set by default)
break;
case C_NodeTypes.IDENTITY_VAL_NODE:
@@ -188,9 +184,7 @@
//This is a Derby specific function but it's collation type will
//be based on the same rules as for SESSION_USER/CURRENT_USER etc.
//ie there collation type will be UCS_BASIC. The collation
- //derivation will be implicit.
- dtd.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
- dtd.setCollationType(StringDataValue.COLLATION_TYPE_UCS_BASIC);
+ //derivation will be implicit. (set by default).
break;
default:
if (SanityManager.DEBUG)
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/StaticMethodCallNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/StaticMethodCallNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/StaticMethodCallNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/StaticMethodCallNode.java Thu Jan 31 09:12:30 2008
@@ -278,9 +278,8 @@
returnType.isNullable(),
returnType.getMaximumWidth()
);
- // DERBY-2972 Match the collation of the RoutineAliasInfo
- returnValueDtd.setCollationType(returnType.getCollationType());
- returnValueDtd.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+
+
ValueNode returnValueToSQL = (ValueNode) getNodeFactory().getNode(
C_NodeTypes.JAVA_TO_SQL_VALUE_NODE,
this,
@@ -291,6 +290,11 @@
returnValueToSQL,
returnValueDtd,
getContextManager());
+
+ // DERBY-2972 Match the collation of the RoutineAliasInfo
+ returnValueCastNode.setCollationInfo(
+ returnType.getCollationType(),
+ StringDataValue.COLLATION_DERIVATION_IMPLICIT);
JavaValueNode returnValueToJava = (JavaValueNode) getNodeFactory().getNode(
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableElementList.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableElementList.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableElementList.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TableElementList.java Thu Jan 31 09:12:30 2008
@@ -124,8 +124,7 @@
{
ColumnDefinitionNode cdn = (ColumnDefinitionNode) elementAt(index);
if (cdn.getType().getTypeId().isStringTypeId()) {
- cdn.getType().setCollationType(collationType);
- cdn.getType().setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ cdn.setCollationType(collationType);
}
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/TernaryOperatorNode.java Thu Jan 31 09:12:30 2008
@@ -534,8 +534,7 @@
if (!leftOperand.requiresTypeFromContext()) {
receiver.setCollationInfo(leftOperand.getTypeServices());
} else {
- receiver.setCollationUsingCompilationSchema(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ receiver.setCollationUsingCompilationSchema();
}
}
@@ -633,8 +632,7 @@
receiver.setType(getVarcharDescriptor());
//Since both receiver and leftOperands are parameters, use the
//collation of compilation schema for receiver.
- receiver.setCollationUsingCompilationSchema(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ receiver.setCollationUsingCompilationSchema();
}
else
{
@@ -719,16 +717,18 @@
DataTypeDescriptor dtd = DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.VARCHAR, true,
vnTC.getCastToCharWidth(
vn.getTypeServices()));
- // DERBY-2910 - Match current schema collation for implicit cast as we do for
- // explicit casts per SQL Spec 6.12 (10)
- dtd.setCollationType(getSchemaDescriptor(null).getCollationType());
- dtd.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+
ValueNode newNode = (ValueNode)
getNodeFactory().getNode(
C_NodeTypes.CAST_NODE,
vn,
dtd,
getContextManager());
+
+ // DERBY-2910 - Match current schema collation for implicit cast as we do for
+ // explicit casts per SQL Spec 6.12 (10)
+ newNode.setCollationUsingCompilationSchema();
+
((CastNode) newNode).bindCastNodeOnly();
return newNode;
}
@@ -765,8 +765,7 @@
//because that is the only context available for us to pick up the
//collation. There are no other character operands to SUBSTR method
//to pick up the collation from.
- receiver.setCollationUsingCompilationSchema(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ receiver.setCollationUsingCompilationSchema();
}
/* Is there a ? parameter on the left? */
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/UnaryOperatorNode.java Thu Jan 31 09:12:30 2008
@@ -448,8 +448,7 @@
setType(targetType);
//Set the collation type to be same as the current schema's
//collation type.
- setCollationUsingCompilationSchema(
- StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ setCollationUsingCompilationSchema();
}
/**
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNode.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNode.java Thu Jan 31 09:12:30 2008
@@ -36,6 +36,7 @@
import org.apache.derby.iapi.store.access.Qualifier;
import org.apache.derby.iapi.types.DataTypeDescriptor;
import org.apache.derby.iapi.types.DataValueFactory;
+import org.apache.derby.iapi.types.StringDataValue;
import org.apache.derby.iapi.types.TypeId;
import org.apache.derby.iapi.util.JBitSet;
@@ -289,6 +290,18 @@
}
/**
+ * Set the collation based upon the current schema with derivation
+ * type implicit.
+ *
+ * @throws StandardException
+ */
+ protected final void setCollationUsingCompilationSchema()
+ throws StandardException {
+ setCollationUsingCompilationSchema(
+ StringDataValue.COLLATION_DERIVATION_IMPLICIT);
+ }
+
+ /**
* There are many subclasses of ValueNode where we want the
* DataTypeDescriptor of the node to have the same collation type as the
* compilation schema's collation type. For that purpose, this method in
@@ -303,7 +316,7 @@
*
* @throws StandardException
*/
- protected void setCollationUsingCompilationSchema(int collationDerivation)
+ protected final void setCollationUsingCompilationSchema(int collationDerivation)
throws StandardException {
setCollationInfo(
getSchemaDescriptor(null, false).getCollationType(),
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNodeList.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNodeList.java?rev=617162&r1=617161&r2=617162&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNodeList.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ValueNodeList.java Thu Jan 31 09:12:30 2008
@@ -236,7 +236,10 @@
//do not have matching collation information on them. Hence the
//resultant dominant DTD should have collation derivation of
//NONE.
- dominantDTS.setCollationDerivation(StringDataValue.COLLATION_DERIVATION_NONE);
+ dominantDTS =
+ dominantDTS.getCollatedType(
+ dominantDTS.getCollationType(),
+ StringDataValue.COLLATION_DERIVATION_NONE);
}
//if we didn't find any collation mismatch, then resultant dominant
//DTD already has the correct collation information on it and hence