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 2005/01/25 22:57:04 UTC
svn commit: r126431 - in incubator/derby/code/trunk: java/engine/org/apache/derby/iapi/sql/compile java/engine/org/apache/derby/impl/sql/compile tools/jar
Author: djd
Date: Tue Jan 25 13:57:01 2005
New Revision: 126431
URL: http://svn.apache.org/viewcvs?view=rev&rev=126431
Log:
Replace CurrentUserNode and CurrentIsolationLevelNode with single
multi-purpose SpecialFunctionNode.
Full comments in derby-dev e-mail with
Subject: [PATCH] Cleanup of special function nodes
http://mail-archives.apache.org/eyebrowse/ReadMsg?listName=derby-dev@db.apache.org&msgNo=1756
Added:
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java
Removed:
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentIsolationNode.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentUserNode.java
Modified:
incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/C_NodeTypes.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/C_NodeNames.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NodeFactoryImpl.java
incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
incubator/derby/code/trunk/tools/jar/DBMSnodes.properties
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/C_NodeTypes.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/C_NodeTypes.java?view=diff&rev=126431&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/C_NodeTypes.java&r1=126430&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/C_NodeTypes.java&r2=126431
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/C_NodeTypes.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/C_NodeTypes.java Tue Jan 25 13:57:01 2005
@@ -34,8 +34,8 @@
static final int CURRENT_ROW_LOCATION_NODE = 2;
static final int GROUP_BY_LIST = 3;
static final int CURRENT_ISOLATION_NODE = 4;
- // 5 available;
- // 6 available
+ static final int IDENTITY_VAL_NODE = 5;
+ static final int CURRENT_SCHEMA_NODE = 6;
static final int ORDER_BY_LIST = 7;
static final int PREDICATE_LIST = 8;
static final int RESULT_COLUMN_LIST = 9;
@@ -137,8 +137,8 @@
// 106 is available
static final int VIRTUAL_COLUMN_NODE = 107;
static final int CURRENT_DATETIME_OPERATOR_NODE = 108;
- static final int CURRENT_USER_NODE = 109;
- // 110 is available
+ static final int CURRENT_USER_NODE = 109; // special function CURRENT_USER
+ static final int USER_NODE = 110; // // special function USER
static final int IS_NODE = 111;
static final int LOCK_TABLE_NODE = 112;
// 113
@@ -153,8 +153,8 @@
static final int NORMALIZE_RESULT_SET_NODE = 122;
static final int SCROLL_INSENSITIVE_RESULT_SET_NODE = 123;
static final int DISTINCT_NODE = 124;
- // 125 available
- // 126 available
+ static final int SESSION_USER_NODE = 125; // // special function SESSION_USER
+ static final int SYSTEM_USER_NODE = 126; // // special function SYSTEM_USER
static final int TRIM_OPERATOR_NODE = 127;
// 128 is available
static final int SELECT_NODE = 129;
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/C_NodeNames.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/C_NodeNames.java?view=diff&rev=126431&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/C_NodeNames.java&r1=126430&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/C_NodeNames.java&r2=126431
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/C_NodeNames.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/C_NodeNames.java Tue Jan 25 13:57:01 2005
@@ -94,13 +94,11 @@
static final String CURRENT_DATETIME_OPERATOR_NODE_NAME = "org.apache.derby.impl.sql.compile.CurrentDatetimeOperatorNode";
- static final String CURRENT_ISOLATION_NAME = "org.apache.derby.impl.sql.compile.CurrentIsolationNode";
-
static final String CURRENT_OF_NODE_NAME = "org.apache.derby.impl.sql.compile.CurrentOfNode";
static final String CURRENT_ROW_LOCATION_NODE_NAME = "org.apache.derby.impl.sql.compile.CurrentRowLocationNode";
- static final String CURRENT_USER_NODE_NAME = "org.apache.derby.impl.sql.compile.CurrentUserNode";
+ static final String SPECIAL_FUNCTION_NODE_NAME = "org.apache.derby.impl.sql.compile.SpecialFunctionNode";
static final String CURSOR_NODE_NAME = "org.apache.derby.impl.sql.compile.CursorNode";
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java?view=diff&rev=126431&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java&r1=126430&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java&r2=126431
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ColumnDefinitionNode.java Tue Jan 25 13:57:01 2005
@@ -611,24 +611,27 @@
(colType == StoredFormatIds.VARCHAR_TYPE_ID) ||
(colType == StoredFormatIds.LONGVARCHAR_TYPE_ID));
- if (defaultNode instanceof CurrentUserNode) {
+ if (defaultNode instanceof SpecialFunctionNode) {
- defaultText = defaultText.toLowerCase(java.util.Locale.ENGLISH);
- if (defaultText.indexOf("user") != -1)
+ switch (defaultNode.getNodeType())
+ {
+ case C_NodeTypes.USER_NODE:
+ case C_NodeTypes.CURRENT_USER_NODE:
+ case C_NodeTypes.SESSION_USER_NODE:
+ case C_NodeTypes.SYSTEM_USER_NODE:
// DB2 enforces min length of 8.
// Note also: any size under 30 gives a warning in DB2.
return (charCol && (columnDesc.getMaximumWidth() >=
DB2Limit.MIN_COL_LENGTH_FOR_CURRENT_USER));
- if ((defaultText.indexOf("schema") != -1) ||
- (defaultText.indexOf("sqlid") != -1))
+ case C_NodeTypes.CURRENT_SCHEMA_NODE:
// DB2 enforces min length of 128.
return (charCol && (columnDesc.getMaximumWidth() >=
DB2Limit.MIN_COL_LENGTH_FOR_CURRENT_SCHEMA));
-
- // else, function not allowed.
- return false;
-
+ default:
+ // else, function not allowed.
+ return false;
+ }
}
}
Deleted: /incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentIsolationNode.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentIsolationNode.java?view=auto&rev=126430
==============================================================================
Deleted: /incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentUserNode.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CurrentUserNode.java?view=auto&rev=126430
==============================================================================
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NodeFactoryImpl.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NodeFactoryImpl.java?view=diff&rev=126431&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NodeFactoryImpl.java&r1=126430&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NodeFactoryImpl.java&r2=126431
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NodeFactoryImpl.java (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NodeFactoryImpl.java Tue Jan 25 13:57:01 2005
@@ -197,9 +197,6 @@
case C_NodeTypes.GROUP_BY_LIST:
return C_NodeNames.GROUP_BY_LIST_NAME;
- case C_NodeTypes.CURRENT_ISOLATION_NODE:
- return C_NodeNames.CURRENT_ISOLATION_NAME;
-
case C_NodeTypes.ORDER_BY_LIST:
return C_NodeNames.ORDER_BY_LIST_NAME;
@@ -420,8 +417,14 @@
case C_NodeTypes.CURRENT_DATETIME_OPERATOR_NODE:
return C_NodeNames.CURRENT_DATETIME_OPERATOR_NODE_NAME;
+ case C_NodeTypes.USER_NODE:
case C_NodeTypes.CURRENT_USER_NODE:
- return C_NodeNames.CURRENT_USER_NODE_NAME;
+ case C_NodeTypes.SESSION_USER_NODE:
+ case C_NodeTypes.SYSTEM_USER_NODE:
+ case C_NodeTypes.CURRENT_ISOLATION_NODE:
+ case C_NodeTypes.IDENTITY_VAL_NODE:
+ case C_NodeTypes.CURRENT_SCHEMA_NODE:
+ return C_NodeNames.SPECIAL_FUNCTION_NODE_NAME;
case C_NodeTypes.IS_NODE:
return C_NodeNames.IS_NODE_NAME;
Added: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java?view=auto&rev=126431
==============================================================================
--- (empty file)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/SpecialFunctionNode.java Tue Jan 25 13:57:01 2005
@@ -0,0 +1,224 @@
+/*
+
+ Derby - Class org.apache.derby.impl.sql.compile.SpecialFunctionNode
+
+ Copyright 1999, 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed 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.derby.impl.sql.compile;
+
+import org.apache.derby.iapi.sql.compile.CompilerContext;
+
+import org.apache.derby.iapi.types.DataTypeDescriptor;
+
+import org.apache.derby.iapi.services.compiler.MethodBuilder;
+import org.apache.derby.iapi.services.compiler.LocalField;
+
+import org.apache.derby.iapi.services.sanity.SanityManager;
+
+import org.apache.derby.iapi.store.access.Qualifier;
+
+import org.apache.derby.impl.sql.compile.ExpressionClassBuilder;
+
+import java.lang.reflect.Modifier;
+
+import org.apache.derby.iapi.error.StandardException;
+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 java.sql.Types;
+
+import java.util.Vector;
+
+/**
+ SpecialFunctionNode handles system SQL functions.
+ A function value is either obtained by a method
+ call off the LanguageConnectionContext or Activation.
+ LanguageConnectionContext functions are state related to the connection.
+ Activation functions are those related to the statement execution.
+
+ Each SQL function takes no arguments and returns a SQLvalue.
+ <P>
+ Functions supported:
+ <UL>
+ <LI> USER
+ <LI> CURRENT_USER
+ <LI> SESSION_USER
+ <LI> SYSTEM_USER
+ <LI> CURRENT SCHEMA
+ <LI> CURRENT ISOLATION
+ <LI> IDENTITY_VAL_LOCAL
+
+ </UL>
+
+
+ <P>
+
+ This node is used rather than some use of MethodCallNode for
+ runtime performance. MethodCallNode does not provide a fast access
+ to the current language connection or activatation, since it is geared
+ towards user defined routines.
+
+
+*/
+public class SpecialFunctionNode extends ValueNode
+{
+ /**
+ Name of SQL function
+ */
+ String sqlName;
+
+ /**
+ Java method name
+ */
+ private String methodName;
+
+ /**
+ Return type of Java method.
+ */
+ private String methodType;
+
+ /**
+ */
+ //private boolean isActivationCall;
+
+ /**
+ * Binding this special function means setting the result DataTypeServices.
+ * In this case, the result type is based on the operation requested.
+ *
+ * @param fromList The FROM list for the statement. This parameter
+ * is not used in this case.
+ * @param subqueryList The subquery list being built as we find
+ * SubqueryNodes. Not used in this case.
+ * @param aggregateVector The aggregate vector being built as we find
+ * AggregateNodes. Not used in this case.
+ *
+ * @return The new top of the expression tree.
+ *
+ * @exception StandardException Thrown on error
+ */
+ public ValueNode bindExpression(FromList fromList, SubqueryList subqueryList,
+ Vector aggregateVector)
+ throws StandardException
+ { DataTypeDescriptor dtd;
+ int nodeType = getNodeType();
+ switch (nodeType)
+ {
+ case C_NodeTypes.USER_NODE:
+ case C_NodeTypes.CURRENT_USER_NODE:
+ case C_NodeTypes.SESSION_USER_NODE:
+ case C_NodeTypes.SYSTEM_USER_NODE:
+ switch (nodeType)
+ {
+ case C_NodeTypes.USER_NODE: sqlName = "USER"; break;
+ case C_NodeTypes.CURRENT_USER_NODE: sqlName = "CURRENT_USER"; break;
+ case C_NodeTypes.SESSION_USER_NODE: sqlName = "SESSION_USER"; break;
+ case C_NodeTypes.SYSTEM_USER_NODE: sqlName = "SYSTEM_USER"; break;
+ }
+ methodName = "getAuthorizationId";
+ methodType = "java.lang.String";
+ dtd = DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.VARCHAR, false, 128);
+ break;
+
+ case C_NodeTypes.CURRENT_SCHEMA_NODE:
+ sqlName = "CURRENT SCHEMA";
+ methodName = "getCurrentSchemaName";
+ methodType = "java.lang.String";
+ dtd = DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.VARCHAR, false, 128);
+ break;
+
+ case C_NodeTypes.IDENTITY_VAL_NODE:
+ sqlName = "IDENTITY_VAL_LOCAL";
+ methodName = "getIdentityValue";
+ methodType = "java.lang.Long";
+ dtd = DataTypeDescriptor.getSQLDataTypeDescriptor("java.math.BigDecimal", 31, 0, true, 31);
+ break;
+
+ case C_NodeTypes.CURRENT_ISOLATION_NODE:
+ sqlName = "CURRENT ISOLATION";
+ methodName = "getCurrentIsolationLevelStr";
+ methodType = "java.lang.String";
+ dtd = DataTypeDescriptor.getBuiltInDataTypeDescriptor(Types.CHAR, 2);
+ break;
+ default:
+ if (SanityManager.DEBUG)
+ {
+ SanityManager.THROWASSERT("Invalid type for SpecialFunctionNode " + nodeType);
+ }
+ dtd = null;
+ break;
+ }
+
+ checkReliability(sqlName, CompilerContext.USER_ILLEGAL );
+ setType(dtd);
+
+ return this;
+ }
+
+ /**
+ * Return the variant type for the underlying expression.
+ All supported special functions are QUERY_INVARIANT
+
+ *
+ * @return The variant type for the underlying expression.
+ */
+ protected int getOrderableVariantType()
+ {
+ return Qualifier.QUERY_INVARIANT;
+ }
+
+ /**
+ Generate an expression that returns a DataValueDescriptor and
+ calls a method off the language connection or the activation.
+ *
+ * @param acb The ExpressionClassBuilder for the class being built
+ * @param mb The method the code to place the code
+ *
+ *
+ * @exception StandardException Thrown on error
+ */
+ public void generateExpression(ExpressionClassBuilder acb,
+ MethodBuilder mb)
+ throws StandardException
+ {
+ mb.pushThis();
+ mb.callMethod(VMOpcode.INVOKEINTERFACE, ClassName.Activation, "getLanguageConnectionContext",
+ ClassName.LanguageConnectionContext, 0);
+
+ mb.callMethod(VMOpcode.INVOKEINTERFACE, (String) null, methodName, methodType, 0);
+
+ String fieldType = getTypeCompiler().interfaceName();
+ LocalField field = acb.newFieldDeclaration(Modifier.PRIVATE, fieldType);
+
+ acb.generateDataValue(mb, getTypeCompiler(), field);
+ }
+
+ /*
+ print the non-node subfields
+ */
+ public String toString() {
+ if (SanityManager.DEBUG)
+ {
+ return super.toString()+ sqlName;
+ }
+ else
+ {
+ return "";
+ }
+ }
+}
Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj?view=diff&rev=126431&p1=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj&r1=126430&p2=incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj&r2=126431
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj Tue Jan 25 13:57:01 2005
@@ -92,7 +92,6 @@
import org.apache.derby.impl.sql.compile.ValueNode;
import org.apache.derby.impl.sql.compile.ValueNodeList;
import org.apache.derby.impl.sql.compile.GroupByColumn;
-import org.apache.derby.impl.sql.compile.CurrentUserNode;
import org.apache.derby.impl.sql.compile.CurrentDatetimeOperatorNode;
import org.apache.derby.impl.sql.compile.CreateStatementNode;
import org.apache.derby.impl.sql.compile.AlterTableNode;
@@ -5511,8 +5510,7 @@
<IDENTITY_VAL_LOCAL> <LEFT_PAREN> <RIGHT_PAREN>
{
return (ValueNode) nodeFactory.getNode(
- C_NodeTypes.CURRENT_USER_NODE,
- ReuseFactory.getInteger(CurrentUserNode.IDENTITY_VAL),
+ C_NodeTypes.IDENTITY_VAL_NODE,
getContextManager());
}
}
@@ -5742,8 +5740,7 @@
<CURRENT> (<SCHEMA> | <SQLID>)
{
return (ValueNode) nodeFactory.getNode(
- C_NodeTypes.CURRENT_USER_NODE,
- ReuseFactory.getInteger(CurrentUserNode.SCHEMA),
+ C_NodeTypes.CURRENT_SCHEMA_NODE,
getContextManager());
}
|
@@ -6170,8 +6167,7 @@
<USER>
{
return (ValueNode) nodeFactory.getNode(
- C_NodeTypes.CURRENT_USER_NODE,
- ReuseFactory.getInteger(CurrentUserNode.USER),
+ C_NodeTypes.USER_NODE,
getContextManager());
}
|
@@ -6179,15 +6175,13 @@
{
return (ValueNode) nodeFactory.getNode(
C_NodeTypes.CURRENT_USER_NODE,
- ReuseFactory.getInteger(CurrentUserNode.CURRENT_USER),
getContextManager());
}
|
<SESSION_USER>
{
return (ValueNode) nodeFactory.getNode(
- C_NodeTypes.CURRENT_USER_NODE,
- ReuseFactory.getInteger(CurrentUserNode.SESSION_USER),
+ C_NodeTypes.SESSION_USER_NODE,
getContextManager());
}
}
@@ -9210,16 +9204,14 @@
<CURRENT> (<SCHEMA> | <SQLID>)
{
return (ValueNode) nodeFactory.getNode(
- C_NodeTypes.CURRENT_USER_NODE,
- ReuseFactory.getInteger(CurrentUserNode.SCHEMA),
+ C_NodeTypes.CURRENT_SCHEMA_NODE,
getContextManager());
}
|
<USER>
{
return (ValueNode) nodeFactory.getNode(
- C_NodeTypes.CURRENT_USER_NODE,
- ReuseFactory.getInteger(CurrentUserNode.USER),
+ C_NodeTypes.USER_NODE,
getContextManager());
}
|
Modified: incubator/derby/code/trunk/tools/jar/DBMSnodes.properties
Url: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/tools/jar/DBMSnodes.properties?view=diff&rev=126431&p1=incubator/derby/code/trunk/tools/jar/DBMSnodes.properties&r1=126430&p2=incubator/derby/code/trunk/tools/jar/DBMSnodes.properties&r2=126431
==============================================================================
--- incubator/derby/code/trunk/tools/jar/DBMSnodes.properties (original)
+++ incubator/derby/code/trunk/tools/jar/DBMSnodes.properties Tue Jan 25 13:57:01 2005
@@ -70,7 +70,7 @@
derby.module.cloudscapenodes.ea=org.apache.derby.impl.sql.compile.RowResultSetNode
derby.module.cloudscapenodes.ec=org.apache.derby.impl.sql.compile.VirtualColumnNode
derby.module.cloudscapenodes.ed=org.apache.derby.impl.sql.compile.CurrentDatetimeOperatorNode
-derby.module.cloudscapenodes.ee=org.apache.derby.impl.sql.compile.CurrentUserNode
+derby.module.cloudscapenodes.ee=org.apache.derby.impl.sql.compile.SpecialFunctionNode
derby.module.cloudscapenodes.eg=org.apache.derby.impl.sql.compile.IsNode
derby.module.cloudscapenodes.eh=org.apache.derby.impl.sql.compile.LockTableNode
derby.module.cloudscapenodes.ej=org.apache.derby.impl.sql.compile.AlterTableNode
@@ -84,7 +84,6 @@
derby.module.cloudscapenodes.es=org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode
derby.module.cloudscapenodes.et=org.apache.derby.impl.sql.compile.OrderByNode
derby.module.cloudscapenodes.eu=org.apache.derby.impl.sql.compile.DistinctNode
-derby.module.cloudscapenodes.ex=org.apache.derby.impl.sql.compile.CurrentIsolationNode
derby.module.cloudscapenodes.fa=org.apache.derby.impl.sql.compile.SelectNode
derby.module.cloudscapenodes.fb=org.apache.derby.impl.sql.compile.CreateViewNode
derby.module.cloudscapenodes.fc=org.apache.derby.impl.sql.compile.ConstraintDefinitionNode