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