[teiid-commits] teiid SVN: r3013 - in trunk: common-core/src/main/java/org/teiid/core/types and 8 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Mar 21 10:11:09 EDT 2011


Author: shawkins
Date: 2011-03-21 10:11:08 -0400 (Mon, 21 Mar 2011)
New Revision: 3013

Added:
   trunk/test-integration/common/src/test/java/org/teiid/jdbc/MetadataSizeExperiment.java
Removed:
   trunk/common-core/src/main/java/org/teiid/core/types/TeiidBigDecimal.java
Modified:
   trunk/api/src/main/java/org/teiid/metadata/AbstractMetadataRecord.java
   trunk/api/src/main/java/org/teiid/metadata/BaseColumn.java
   trunk/api/src/main/java/org/teiid/metadata/Column.java
   trunk/api/src/main/java/org/teiid/metadata/MetadataStore.java
   trunk/api/src/main/java/org/teiid/metadata/Schema.java
   trunk/api/src/main/java/org/teiid/metadata/Table.java
   trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
   trunk/engine/src/main/java/org/teiid/query/function/FunctionLibrary.java
   trunk/engine/src/main/java/org/teiid/query/metadata/CompositeMetadataStore.java
   trunk/engine/src/main/java/org/teiid/query/metadata/GroupInfo.java
   trunk/engine/src/main/java/org/teiid/query/metadata/TransformationMetadata.java
   trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverVisitor.java
   trunk/engine/src/main/java/org/teiid/query/sql/symbol/Symbol.java
   trunk/engine/src/main/java/org/teiid/query/validator/ValidationVisitor.java
   trunk/engine/src/test/java/org/teiid/query/processor/TestTriggerActions.java
   trunk/engine/src/test/java/org/teiid/query/validator/TestUpdateValidator.java
Log:
TEIID-1520 adding a string pool to reduce memory footprint

Modified: trunk/api/src/main/java/org/teiid/metadata/AbstractMetadataRecord.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/AbstractMetadataRecord.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/api/src/main/java/org/teiid/metadata/AbstractMetadataRecord.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -28,6 +28,7 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.teiid.core.types.DataTypeManager;
 import org.teiid.core.util.EquivalenceUtil;
 
 
@@ -44,6 +45,7 @@
     
     private String uuid; //globally unique id
     private String name; //contextually unique name
+    private String canonicalName;
     
     private String nameInSource;
 	
@@ -66,7 +68,7 @@
 	}
 	
 	public void setNameInSource(String nameInSource) {
-		this.nameInSource = nameInSource;
+		this.nameInSource = DataTypeManager.getCanonicalString(nameInSource);
 	}
 	
 	/**
@@ -90,9 +92,14 @@
 	}	
 	
 	public void setName(String name) {
-		this.name = name;
+		this.name = DataTypeManager.getCanonicalString(name);
+		this.canonicalName = DataTypeManager.getCanonicalString(name.toUpperCase());
 	}
 	
+	public String getCanonicalName() {
+		return canonicalName;
+	}
+	
     public String toString() {
     	StringBuffer sb = new StringBuffer(100);
         sb.append(getClass().getSimpleName());
@@ -127,7 +134,7 @@
     	if (this.properties == null) {
     		this.properties = new LinkedHashMap<String, String>();
     	}
-    	this.properties.put(key, value);
+    	this.properties.put(DataTypeManager.getCanonicalString(key), DataTypeManager.getCanonicalString(value));
     }
     
     public void setProperties(LinkedHashMap<String, String> properties) {
@@ -139,7 +146,7 @@
 	}
     
     public void setAnnotation(String annotation) {
-		this.annotation = annotation;
+		this.annotation = DataTypeManager.getCanonicalString(annotation);
 	}
 
     /**

Modified: trunk/api/src/main/java/org/teiid/metadata/BaseColumn.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/BaseColumn.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/api/src/main/java/org/teiid/metadata/BaseColumn.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -22,6 +22,7 @@
 
 package org.teiid.metadata;
 
+import org.teiid.core.types.DataTypeManager;
 import org.teiid.translator.TypeFacility;
 
 public abstract class BaseColumn extends AbstractMetadataRecord {
@@ -130,7 +131,7 @@
 	}
 
 	public void setDefaultValue(String object) {
-		defaultValue = object;
+		defaultValue = DataTypeManager.getCanonicalString(object);
 	}
 
     public Datatype getDatatype() {
@@ -139,6 +140,10 @@
     
     public void setDatatype(Datatype datatype) {
 		this.datatype = datatype;
+		if (datatype != null) {
+			this.datatypeUUID = this.datatype.getUUID();
+			this.runtimeType = this.datatype.getRuntimeTypeName();
+		}
 	}
     
 	public String getDatatypeID() {

Modified: trunk/api/src/main/java/org/teiid/metadata/Column.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/Column.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/api/src/main/java/org/teiid/metadata/Column.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -22,6 +22,7 @@
 
 package org.teiid.metadata;
 
+import org.teiid.core.types.DataTypeManager;
 
 /**
  * ColumnRecordImpl
@@ -180,14 +181,14 @@
      * @param object
      */
     public void setMaximumValue(String object) {
-        maximumValue = object;
+        maximumValue = DataTypeManager.getCanonicalString(object);
     }
 
     /**
      * @param object
      */
     public void setMinimumValue(String object) {
-        minimumValue = object;
+        minimumValue = DataTypeManager.getCanonicalString(object);
     }
 
     /**
@@ -222,7 +223,7 @@
      * @param string
      */
     public void setFormat(String string) {
-        format = string;
+        format = DataTypeManager.getCanonicalString(string);
     }
 
     /**
@@ -246,7 +247,7 @@
      * @since 4.2
      */
     public void setNativeType(String nativeType) {
-        this.nativeType = nativeType;
+        this.nativeType = DataTypeManager.getCanonicalString(nativeType);
     }
 
 }
\ No newline at end of file

Modified: trunk/api/src/main/java/org/teiid/metadata/MetadataStore.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/MetadataStore.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/api/src/main/java/org/teiid/metadata/MetadataStore.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -42,7 +42,7 @@
 	}
 	
 	public void addSchema(Schema schema) {
-		this.schemas.put(schema.getName().toLowerCase(), schema);
+		this.schemas.put(schema.getCanonicalName(), schema);
 	}
 	
 	public void addDatatype(Datatype datatype) {

Modified: trunk/api/src/main/java/org/teiid/metadata/Schema.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/Schema.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/api/src/main/java/org/teiid/metadata/Schema.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -39,21 +39,21 @@
 	
 	public void addTable(Table table) {
 		table.setParent(this);
-		if (this.tables.put(table.getName().toLowerCase(), table) != null) {
+		if (this.tables.put(table.getCanonicalName(), table) != null) {
 			throw new AssertionError("Duplicate Table " + table.getName()); //$NON-NLS-1$
 		}
 	}
 	
 	public void addProcedure(Procedure procedure) {
 		procedure.setParent(this);
-		if (this.procedures.put(procedure.getName().toLowerCase(), procedure) != null) {
+		if (this.procedures.put(procedure.getCanonicalName(), procedure) != null) {
 			throw new AssertionError("Duplicate Procedure " + procedure.getName()); //$NON-NLS-1$
 		}
 	}
 	
 	public void addFunction(FunctionMethod function) {
 		function.setParent(this);
-		if (this.functions.put(function.getName().toLowerCase(), function) != null) {
+		if (this.functions.put(function.getCanonicalName(), function) != null) {
 			throw new AssertionError("Duplicate function " + function.getName()); //$NON-NLS-1$
 		}
 	}	

Modified: trunk/api/src/main/java/org/teiid/metadata/Table.java
===================================================================
--- trunk/api/src/main/java/org/teiid/metadata/Table.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/api/src/main/java/org/teiid/metadata/Table.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -26,6 +26,8 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.teiid.core.types.DataTypeManager;
+
 public class Table extends ColumnSet<Schema> {
 
 	private static final long serialVersionUID = 4891356771125218672L;
@@ -167,15 +169,15 @@
     }
     
     public void setInsertPlan(String insertPlan) {
-		this.insertPlan = insertPlan;
+		this.insertPlan = DataTypeManager.getCanonicalString(insertPlan);
 	}
     
     public void setUpdatePlan(String updatePlan) {
-		this.updatePlan = updatePlan;
+		this.updatePlan = DataTypeManager.getCanonicalString(updatePlan);
 	}
     
     public void setDeletePlan(String deletePlan) {
-		this.deletePlan = deletePlan;
+		this.deletePlan = DataTypeManager.getCanonicalString(deletePlan);
 	}
     
     public List<ForeignKey> getForeignKeys() {
@@ -223,7 +225,7 @@
 	}
     
     public void setSelectTransformation(String selectTransformation) {
-		this.selectTransformation = selectTransformation;
+		this.selectTransformation = DataTypeManager.getCanonicalString(selectTransformation);
 	}
     
     public Table getMaterializedStageTable() {
@@ -243,7 +245,7 @@
 	}
 
 	public void setResourcePath(String resourcePath) {
-		this.resourcePath = resourcePath;
+		this.resourcePath = DataTypeManager.getCanonicalString(resourcePath);
 	}
 
 	public String getResourcePath() {

Modified: trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/common-core/src/main/java/org/teiid/core/types/DataTypeManager.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -126,7 +126,31 @@
 		}
 	}
 	
-	private static Map<Class<?>, ValueCache<?>> valueMaps = new HashMap<Class<?>, ValueCache<?>>(128); 
+	private static Map<Class<?>, ValueCache<?>> valueMaps = new HashMap<Class<?>, ValueCache<?>>(128);
+	private static HashedValueCache<String> stringCache = new HashedValueCache<String>(17) {
+		
+		@Override
+		protected Object get(int index) {
+			WeakReference<?> ref = (WeakReference<?>) cache[index];
+			if (ref != null) {
+				return ref.get();
+			}
+			return null;
+		}
+		
+		@Override
+		protected void set(int index, String value) {
+			cache[index] = new WeakReference<Object>(value);
+		}
+		
+		@Override
+		protected int primaryHash(String value) {
+			if (value.length() < 14) {
+				return value.hashCode();
+			}
+			return HashCodeUtil.expHashCode(value);
+		}
+	};
 
 	public static final int MAX_STRING_LENGTH = 4000;
 	public static final int MAX_LOB_MEMORY_BYTES = 1 << 13;
@@ -506,13 +530,13 @@
 			valueMaps.put(DefaultDataClasses.CHAR, new HashedValueCache<Character>(13));
 			valueMaps.put(DefaultDataClasses.INTEGER, new HashedValueCache<Integer>(14));
 			valueMaps.put(DefaultDataClasses.LONG, new HashedValueCache<Long>(14));
-			valueMaps.put(DefaultDataClasses.BIG_INTEGER, new HashedValueCache<BigInteger>(14));
+			valueMaps.put(DefaultDataClasses.BIG_INTEGER, new HashedValueCache<BigInteger>(15));
 			valueMaps.put(DefaultDataClasses.FLOAT, new HashedValueCache<Float>(14));
 			valueMaps.put(DefaultDataClasses.DOUBLE, new HashedValueCache<Double>(14));
 			valueMaps.put(DefaultDataClasses.DATE, new HashedValueCache<Date>(14));
 			valueMaps.put(DefaultDataClasses.TIME, new HashedValueCache<Time>(14));
 			valueMaps.put(DefaultDataClasses.TIMESTAMP, new HashedValueCache<Timestamp>(14));
-			valueMaps.put(DefaultDataClasses.BIG_DECIMAL, new HashedValueCache<BigDecimal>(15) {
+			valueMaps.put(DefaultDataClasses.BIG_DECIMAL, new HashedValueCache<BigDecimal>(16) {
 				@Override
 				protected Object get(int index) {
 					WeakReference<?> ref = (WeakReference<?>) cache[index];
@@ -527,36 +551,7 @@
 					cache[index] = new WeakReference<BigDecimal>(value);
 				}
 			});
-			valueMaps.put(DefaultDataClasses.STRING, new HashedValueCache<String>(15) {
-				HashedValueCache<String> smallCache = new HashedValueCache<String>(13);
-				
-				@Override
-				public String getValue(String value) {
-					if (value.length() < 14) {
-						return smallCache.getValue(value);
-					}
-					return super.getValue(value);
-				}
-				
-				@Override
-				protected Object get(int index) {
-					WeakReference<?> ref = (WeakReference<?>) cache[index];
-					if (ref != null) {
-						return ref.get();
-					}
-					return null;
-				}
-				
-				@Override
-				protected void set(int index, String value) {
-					cache[index] = new WeakReference<Object>(value);
-				}
-				
-				@Override
-				protected int primaryHash(String value) {
-					return HashCodeUtil.expHashCode(value);
-				}
-			});
+			valueMaps.put(DefaultDataClasses.STRING, stringCache);
 		}
 	}
 
@@ -803,7 +798,7 @@
     }
     
     @SuppressWarnings("unchecked")
-	public static <T> T getCanonicalValue(T value) {
+	public static final <T> T getCanonicalValue(T value) {
     	if (valueCacheEnabled) {
     		if (value == null) {
     			return null;
@@ -816,4 +811,11 @@
     	}
 		return value;
     }
+    
+    public static final String getCanonicalString(String value) {
+    	if (value == null) {
+    		return null;
+    	}
+    	return stringCache.getValue(value);
+    }
 }

Deleted: trunk/common-core/src/main/java/org/teiid/core/types/TeiidBigDecimal.java
===================================================================
--- trunk/common-core/src/main/java/org/teiid/core/types/TeiidBigDecimal.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/common-core/src/main/java/org/teiid/core/types/TeiidBigDecimal.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -1,68 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership.  Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- * 
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- * 
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- * 
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
- 
-package org.teiid.core.types;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-/**
- * Same as a regular BigDecimal, but changes the implementation of hashCode and equals
- * so that the same numerical value regardless of scale will be equal
- */
-public class TeiidBigDecimal extends BigDecimal {
-
-	private static final long serialVersionUID = -5796515987947436480L;
-
-	public TeiidBigDecimal(BigInteger unscaled, int scale) {
-		super(unscaled, scale);
-	}
-
-	public TeiidBigDecimal(BigDecimal bigDecimal) {
-		this(bigDecimal.unscaledValue(), bigDecimal.scale());
-	}
-	
-	public TeiidBigDecimal(String val) {
-		super(val);
-	}
-	
-	@Override
-	public int hashCode() {
-		int xsign = this.signum();
-        if (xsign == 0)
-            return 0;
-        BigDecimal bd = this.stripTrailingZeros();
-        return bd.hashCode();
-    }
-	
-	@Override
-	public boolean equals(Object x) {
-		if (x == this) {
-			return true;
-		}
-		if (!(x instanceof BigDecimal)) {
-			return false;
-		}
-		return this.compareTo((BigDecimal)x) == 0;
-	}
-	
-}

Modified: trunk/engine/src/main/java/org/teiid/query/function/FunctionLibrary.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/function/FunctionLibrary.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/main/java/org/teiid/query/function/FunctionLibrary.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -347,7 +347,7 @@
     
     public static boolean isConvert(Function function) {
         Expression[] args = function.getArgs();
-        String funcName = function.getName().toLowerCase();
+        String funcName = function.getName();
         
         return args.length == 2 && (funcName.equalsIgnoreCase(FunctionLibrary.CONVERT) || funcName.equalsIgnoreCase(FunctionLibrary.CAST));
     }

Modified: trunk/engine/src/main/java/org/teiid/query/metadata/CompositeMetadataStore.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/metadata/CompositeMetadataStore.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/main/java/org/teiid/query/metadata/CompositeMetadataStore.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -38,7 +38,7 @@
 
 /**
  * Aggregates the metadata from multiple stores.  
- * IMPORTANT: All strings queries should be in lower case.
+ * IMPORTANT: All strings queries should be in upper case.
  */
 public class CompositeMetadataStore extends MetadataStore {
 

Modified: trunk/engine/src/main/java/org/teiid/query/metadata/GroupInfo.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/metadata/GroupInfo.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/main/java/org/teiid/query/metadata/GroupInfo.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -30,6 +30,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.teiid.core.types.DataTypeManager;
 import org.teiid.query.sql.symbol.ElementSymbol;
 
 
@@ -48,7 +49,7 @@
 		this.symbolList = Collections.unmodifiableList(new ArrayList(symbols.values()));
 		this.shortNameToSymbolMap = new HashMap<String, ElementSymbol>(symbolList.size());
 		for (ElementSymbol symbol : symbolList) {
-			shortNameToSymbolMap.put(symbol.getShortCanonicalName(), symbol);
+			shortNameToSymbolMap.put(DataTypeManager.getCanonicalString(symbol.getShortCanonicalName()), symbol);
 		}
 	}
 	

Modified: trunk/engine/src/main/java/org/teiid/query/metadata/TransformationMetadata.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/metadata/TransformationMetadata.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/main/java/org/teiid/query/metadata/TransformationMetadata.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -174,7 +174,7 @@
 		if (columnIndex == -1) {
 			throw new QueryMetadataException(elementName+TransformationMetadata.NOT_EXISTS_MESSAGE);
 		}
-		Table table = this.store.findGroup(elementName.substring(0, columnIndex).toLowerCase());
+		Table table = this.store.findGroup(elementName.substring(0, columnIndex).toUpperCase());
 		String shortElementName = elementName.substring(columnIndex + 1);
 		for (Column column : (List<Column>)getElementIDsInGroupID(table)) {
 			if (column.getName().equalsIgnoreCase(shortElementName)) {
@@ -185,7 +185,7 @@
     }
 
     public Table getGroupID(final String groupName) throws TeiidComponentException, QueryMetadataException {
-        return getMetadataStore().findGroup(groupName.toLowerCase());
+        return getMetadataStore().findGroup(groupName.toUpperCase());
     }
     
     public Collection<String> getGroupsForPartialName(final String partialGroupName)
@@ -195,7 +195,7 @@
 		Collection<Table> matches = this.partialNameToFullNameCache.get(partialGroupName);
 		
 		if (matches == null) {
-			String partialName = DELIMITER_CHAR + partialGroupName.toLowerCase(); 
+			String partialName = DELIMITER_CHAR + partialGroupName.toUpperCase(); 
 	
 	        matches = getMetadataStore().getGroupsForPartialName(partialName);
 	        
@@ -317,11 +317,11 @@
 			final String name)
 			throws TeiidComponentException, QueryMetadataException {
 		ArgCheck.isNotEmpty(name);
-        String lowerGroupName = name.toLowerCase();
-        Collection<StoredProcedureInfo> results = this.procedureCache.get(lowerGroupName);
+        String canonicalName = name.toUpperCase();
+        Collection<StoredProcedureInfo> results = this.procedureCache.get(canonicalName);
         
         if (results == null) {
-        	Collection<Procedure> procRecords = getMetadataStore().getStoredProcedure(lowerGroupName); 
+        	Collection<Procedure> procRecords = getMetadataStore().getStoredProcedure(canonicalName); 
         	results = new ArrayList<StoredProcedureInfo>(procRecords.size());
         	for (Procedure procRecord : procRecords) {
                 String procedureFullName = procRecord.getFullName();
@@ -372,7 +372,7 @@
                 procInfo.setUpdateCount(procRecord.getUpdateCount() -1);
 				results.add(procInfo);
 			}
-        	this.procedureCache.put(lowerGroupName, results);        	
+        	this.procedureCache.put(canonicalName, results);        	
         }
         
         StoredProcedureInfo result = null;

Modified: trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverVisitor.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverVisitor.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -267,6 +267,7 @@
         elementSymbol.setMetadataID(resolvedSymbol.getMetadataID());
         elementSymbol.setGroupSymbol(resolvedGroup);
         elementSymbol.setName(resolvedSymbol.getName());
+        elementSymbol.setCanonicalName(resolvedSymbol.getCanonicalName());
         elementSymbol.setOutputName(oldName);
         return true;
 	}

Modified: trunk/engine/src/main/java/org/teiid/query/sql/symbol/Symbol.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/symbol/Symbol.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/main/java/org/teiid/query/sql/symbol/Symbol.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -22,6 +22,7 @@
 
 package org.teiid.query.sql.symbol;
 
+import org.teiid.core.types.DataTypeManager;
 import org.teiid.core.util.StringUtil;
 import org.teiid.query.QueryPlugin;
 import org.teiid.query.sql.LanguageObject;
@@ -92,7 +93,7 @@
 		if(name == null) {
             throw new IllegalArgumentException(QueryPlugin.Util.getString("ERR.015.010.0017")); //$NON-NLS-1$
 		}
-		this.name = name;
+		this.name = DataTypeManager.getCanonicalString(name);
 		this.outputName = null;
         // Canonical name is lazily created
         this.canonicalName = null;
@@ -116,6 +117,10 @@
         computeCanonicalNameAndHash();
         return this.canonicalName;
 	}
+	
+	public void setCanonicalName(String canonicalName) {
+		this.canonicalName = canonicalName;
+	}
     
 	/**
 	 * Returns true if this symbol has been completely resolved with respect
@@ -176,7 +181,7 @@
     
     private void computeCanonicalNameAndHash() {
         if (canonicalName == null) {
-            canonicalName = StringUtil.toUpperCase(name);
+            canonicalName = DataTypeManager.getCanonicalString(StringUtil.toUpperCase(name));
         }
     }
     

Modified: trunk/engine/src/main/java/org/teiid/query/validator/ValidationVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/validator/ValidationVisitor.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/main/java/org/teiid/query/validator/ValidationVisitor.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -482,7 +482,7 @@
 
     public void visit(DeclareStatement obj) {
     	ElementSymbol variable = obj.getVariable();
-    	String elementname = variable.getShortName().toUpperCase();
+    	String elementname = variable.getShortCanonicalName();
 
 		// varible cannot be one of the special variables
     	if(elementname.equals(ProcedureReservedWords.ROWS_UPDATED)) {

Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestTriggerActions.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestTriggerActions.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestTriggerActions.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -41,10 +41,13 @@
 @SuppressWarnings("nls")
 public class TestTriggerActions {
     
+	private static final String GX = "GX";
+	private static final String VM1 = "VM1";
+
 	@Test public void testInsert() throws Exception {
 		TransformationMetadata metadata = TestUpdateValidator.example1();
-		TestUpdateValidator.createView("select 1 as x, 2 as y", metadata, "gx");
-		Table t = metadata.getMetadataStore().getSchemas().get("vm1").getTables().get("gx");
+		TestUpdateValidator.createView("select 1 as x, 2 as y", metadata, GX);
+		Table t = metadata.getMetadataStore().getSchemas().get(VM1).getTables().get(GX);
 		t.setDeletePlan("");
 		t.setUpdatePlan("");
 		t.setInsertPlan("FOR EACH ROW BEGIN insert into pm1.g1 (e1) values (new.x); END");
@@ -63,8 +66,8 @@
 	
 	@Test public void testInsertWithQueryExpression() throws Exception {
 		TransformationMetadata metadata = TestUpdateValidator.example1();
-		TestUpdateValidator.createView("select '1' as x, 2 as y", metadata, "gx");
-		Table t = metadata.getMetadataStore().getSchemas().get("vm1").getTables().get("gx");
+		TestUpdateValidator.createView("select '1' as x, 2 as y", metadata, GX);
+		Table t = metadata.getMetadataStore().getSchemas().get(VM1).getTables().get(GX);
 		t.setDeletePlan("");
 		t.setUpdatePlan("");
 		t.setInsertPlan("FOR EACH ROW BEGIN insert into pm1.g1 (e1) values (new.x); END");
@@ -82,8 +85,8 @@
 	
 	@Test public void testDelete() throws Exception {
 		TransformationMetadata metadata = TestUpdateValidator.example1();
-		TestUpdateValidator.createView("select 1 as x, 2 as y", metadata, "gx");
-		Table t = metadata.getMetadataStore().getSchemas().get("vm1").getTables().get("gx");
+		TestUpdateValidator.createView("select 1 as x, 2 as y", metadata, GX);
+		Table t = metadata.getMetadataStore().getSchemas().get(VM1).getTables().get(GX);
 		t.setDeletePlan("FOR EACH ROW BEGIN delete from pm1.g1 where e2 = old.x; END");
 		t.setUpdatePlan("");
 		t.setInsertPlan("");
@@ -102,8 +105,8 @@
 	
 	@Test public void testUpdate() throws Exception {
 		TransformationMetadata metadata = TestUpdateValidator.example1();
-		TestUpdateValidator.createView("select 1 as x, 2 as y", metadata, "gx");
-		Table t = metadata.getMetadataStore().getSchemas().get("vm1").getTables().get("gx");
+		TestUpdateValidator.createView("select 1 as x, 2 as y", metadata, GX);
+		Table t = metadata.getMetadataStore().getSchemas().get(VM1).getTables().get(GX);
 		t.setDeletePlan("");
 		t.setUpdatePlan("FOR EACH ROW BEGIN update pm1.g1 set e2 = new.y where e2 = old.y; END");
 		t.setInsertPlan("");
@@ -123,8 +126,8 @@
 	
 	@Test public void testUpdateWithNonConstant() throws Exception {
 		TransformationMetadata metadata = TestUpdateValidator.example1();
-		TestUpdateValidator.createView("select 1 as x, 2 as y", metadata, "gx");
-		Table t = metadata.getMetadataStore().getSchemas().get("vm1").getTables().get("gx");
+		TestUpdateValidator.createView("select 1 as x, 2 as y", metadata, GX);
+		Table t = metadata.getMetadataStore().getSchemas().get(VM1).getTables().get(GX);
 		t.setDeletePlan("");
 		t.setUpdatePlan("FOR EACH ROW BEGIN update pm1.g1 set e2 = new.y where e2 = old.y; END");
 		t.setInsertPlan("");

Modified: trunk/engine/src/test/java/org/teiid/query/validator/TestUpdateValidator.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/validator/TestUpdateValidator.java	2011-03-20 15:06:45 UTC (rev 3012)
+++ trunk/engine/src/test/java/org/teiid/query/validator/TestUpdateValidator.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -84,7 +84,7 @@
 			throws QueryParserException, QueryResolverException,
 			TeiidComponentException {
 		QueryNode vm1g1n1 = new QueryNode(vGroup, sql); 
-		Table vm1g1 = RealMetadataFactory.createUpdatableVirtualGroup(vGroup, md.getMetadataStore().getSchema("vm1"), vm1g1n1);
+		Table vm1g1 = RealMetadataFactory.createUpdatableVirtualGroup(vGroup, md.getMetadataStore().getSchema("VM1"), vm1g1n1);
 
 		Command command = QueryParser.getQueryParser().parseCommand(sql);
 		QueryResolver.resolveCommand(command, md);

Added: trunk/test-integration/common/src/test/java/org/teiid/jdbc/MetadataSizeExperiment.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/jdbc/MetadataSizeExperiment.java	                        (rev 0)
+++ trunk/test-integration/common/src/test/java/org/teiid/jdbc/MetadataSizeExperiment.java	2011-03-21 14:11:08 UTC (rev 3013)
@@ -0,0 +1,20 @@
+package org.teiid.jdbc;
+
+import org.teiid.core.util.UnitTestUtil;
+
+public class MetadataSizeExperiment {
+
+	static FakeServer server = new FakeServer();
+
+	public static void main(String[] args) throws Exception {
+    	server.deployVDB("test", UnitTestUtil.getTestDataPath() + "/TestCase3473/test.vdb");
+    	server.deployVDB("QT_Ora9DS", UnitTestUtil.getTestDataPath()+"/QT_Ora9DS_1.vdb");
+		server.deployVDB("x", UnitTestUtil.getTestDataPath() + "/PartsSupplier.vdb");
+		server.deployVDB("x1", UnitTestUtil.getTestDataPath() + "/PartsSupplier.vdb");
+		
+		Thread.sleep(10000000);
+		
+		System.out.println(server);
+	}
+	
+}


Property changes on: trunk/test-integration/common/src/test/java/org/teiid/jdbc/MetadataSizeExperiment.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain



More information about the teiid-commits mailing list