db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From d..@apache.org
Subject svn commit: r596505 - in /db/derby/code/branches/10.3/java: engine/org/apache/derby/catalog/ engine/org/apache/derby/iapi/services/property/ engine/org/apache/derby/iapi/sql/conn/ engine/org/apache/derby/iapi/sql/dictionary/ engine/org/apache/derby/iap...
Date Tue, 20 Nov 2007 00:58:59 GMT
Author: djd
Date: Mon Nov 19 16:58:56 2007
New Revision: 596505

URL: http://svn.apache.org/viewvc?rev=596505&view=rev
Log:
DERBY-3147 Merge  588385 588788 589712 589749 589796 589804 from trunk - required for future merge of fix for DERBY-3158 and DERBY-3159

Modified:
    db/derby/code/branches/10.3/java/engine/org/apache/derby/catalog/SystemProcedures.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/services/property/PropertyUtil.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/dictionary/CatalogRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/IdUtil.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/StringUtil.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/db/BasicDatabase.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/services/reflect/UpdateLoader.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/PermissionsCatalogRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSALIASESRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCHECKSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLPERMSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONGLOMERATESRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONSTRAINTSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDEPENDSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDUMMY1RowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFILESRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFOREIGNKEYSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSKEYSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSROUTINEPERMSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSCHEMASRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATEMENTSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATISTICSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLEPERMSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLESRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTRIGGERSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSVIEWSRowFactory.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java
    db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/JarUtil.java
    db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/AuthenticationTest.java

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/catalog/SystemProcedures.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/catalog/SystemProcedures.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/catalog/SystemProcedures.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/catalog/SystemProcedures.java Mon Nov 19 16:58:56 2007
@@ -983,7 +983,7 @@
             
             LanguageConnectionContext lcc = ConnectionUtil.getCurrentLCC();
 
-			String[] st = IdUtil.parseQualifiedName(jar.trim(), true);
+			String[] st = IdUtil.parseMultiPartSQLIdentifier(jar.trim());
 
 			String schemaName;
 			String sqlName;
@@ -1025,7 +1025,7 @@
             
             LanguageConnectionContext lcc = ConnectionUtil.getCurrentLCC();
 
-			String[] st = IdUtil.parseQualifiedName(jar.trim(), true);
+			String[] st = IdUtil.parseMultiPartSQLIdentifier(jar.trim());
 
             String schemaName;
             String sqlName;
@@ -1065,7 +1065,7 @@
             
             LanguageConnectionContext lcc = ConnectionUtil.getCurrentLCC();
 
-			String[] st = IdUtil.parseQualifiedName(jar.trim(), true);
+			String[] st = IdUtil.parseMultiPartSQLIdentifier(jar.trim());
 
             String schemaName;
             String sqlName;

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/services/property/PropertyUtil.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/services/property/PropertyUtil.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/services/property/PropertyUtil.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/services/property/PropertyUtil.java Mon Nov 19 16:58:56 2007
@@ -459,9 +459,10 @@
 			return defaultValue;
 
 		String vS = ((String) v).trim();
-		if (StringUtil.SQLToLowerCase(vS).equals("true"))
+
+		if ("TRUE".equals(StringUtil.SQLToUpperCase(vS)))
 			return true;
-		if (StringUtil.SQLToLowerCase(vS).equals("false"))
+        if ("FALSE".equals(StringUtil.SQLToUpperCase(vS)))
 			return false;
 
 		throw StandardException.newException(SQLState.PROPERTY_INVALID_VALUE, p,vS);

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java Mon Nov 19 16:58:56 2007
@@ -94,11 +94,10 @@
 	/**
 	 * Initialize. For use after pushing the contexts that initialization needs.
 	 *
-	 * @param sqlConnection	Whether or not this is called from a sql connection.
 	 *
 	 * @exception StandardException thrown if something goes wrong
 	 */
-	void initialize(boolean sqlConnection) throws StandardException;
+	void initialize() throws StandardException;
 
 	/**
 	 * Get value of logStatementText.
@@ -903,27 +902,6 @@
 	  *				false otherwise
 	  */
 	public	boolean	isTransactionPristine();
-
-	/**
-	  *	Get casing for delimited identifiers. This feature is here to
-	  *	support the Plugin.
-	  *
-	  *	@return	ANSI_CASING or ANTI_ANSI_CASING.
-	  *
-	  * @exception StandardException thrown if something goes wrong
-	  */
-    public	int	getIdentifierCasing() throws StandardException;
-
-    /**
-     * Convert an identifier to the proper case for this connection. This method
-     * is here to support the Plugin.
-     *
-     * @param id an identifier string
-     * @return  the string converted to upper or lower case, as appropriate
-     *
-     * @exception StandardException thrown if something goes wrong
-     */
-    public	String convertIdentifierCase( String id) throws StandardException;
 
 
 	/**

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/dictionary/CatalogRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/dictionary/CatalogRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/dictionary/CatalogRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/sql/dictionary/CatalogRowFactory.java Mon Nov 19 16:58:56 2007
@@ -62,7 +62,6 @@
 	private     final ExecutionFactory    ef;
 	private		UUIDFactory			uuidf;
 
-    private     boolean convertIdToLower;
     private     int indexCount;
 	private     int columnCount;
 	private     String catalogName;
@@ -75,14 +74,12 @@
 
     public CatalogRowFactory(UUIDFactory uuidf,
 							 ExecutionFactory ef,
-							 DataValueFactory dvf,
-							 boolean convertIdToLower)
+							 DataValueFactory dvf)
 								 
 	{
 		this.uuidf = uuidf;
 		this.dvf = dvf;
 		this.ef = ef;
-        this.convertIdToLower = convertIdToLower;
 	}
 
 	/**
@@ -152,7 +149,7 @@
 	 *
 	 * @return String	The name for the heap conglomerate.
 	 */
-	public String getCanonicalHeapName() { return catalogName + convertIdCase( "_HEAP"); }
+	public String getCanonicalHeapName() { return catalogName + "_HEAP"; }
 
 	/**
 	 * Get the name for the specified index number.
@@ -195,7 +192,7 @@
 	public	String	generateIndexName( int indexNumber )
 	{
 		indexNumber++;
-		return	catalogName + convertIdCase( "_INDEX") + indexNumber;
+		return	catalogName + "_INDEX" + indexNumber;
 	}
 
 	/** get the number of indexes on this catalog */
@@ -226,7 +223,7 @@
 		indexCount = (indexColumnPositions != null) ? 
 			                 indexColumnPositions.length : 0;
 
-		this.catalogName = convertIdCase(catalogName);
+		this.catalogName = catalogName;
 		this.columnCount = columnCount;
 
 		UUIDFactory	uf = getUUIDFactory();
@@ -300,15 +297,6 @@
 	{
 		return columnCount;
 	}
-
-    protected String convertIdCase( String id)
-    {
-        if( convertIdToLower)
-            return StringUtil.SQLToLowerCase(id);
-        else
-            return id;
-    }
-    
 
 	/** 
 	 * Return an empty row for this conglomerate. 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/IdUtil.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/IdUtil.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/IdUtil.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/IdUtil.java Mon Nov 19 16:58:56 2007
@@ -61,7 +61,7 @@
 	  Delimit the identifier provided.
 	  @return the delimited identifier.
 	  */
-	public static String delimitId(String id)
+	private static String delimitId(String id)
 	{
 		StringBuffer quotedBuffer = new StringBuffer();
 		quotedBuffer.append('\"');
@@ -109,40 +109,39 @@
 	}
 
 	/**
-	  Scan a qualified name from the String provided. Raise an excepion
-	  if the string does not contain a qualified name.
+	  Parse a multi-part (dot separated) SQL identifier form the
+      String provided. Raise an excepion
+	  if the string does not contain valid SQL indentifiers.
+      The returned String array contains the normalized form of the
+      identifiers.
       
       @param s The string to be parsed
-      @param normalizeToUpper If true then undelimited names are converted to upper case (the ANSI standard). If false then undelimited names are converted to lower case (used when the source database is Informix Foundation).
       @return An array of strings made by breaking the input string at its dots, '.'.
 	  @exception StandardException Oops
 	  */
-	public static String[] parseQualifiedName(String s, boolean normalizeToUpper)
+	public static String[] parseMultiPartSQLIdentifier(String s)
 		 throws StandardException
 	{
 		StringReader r = new StringReader(s);
-		String[] qName = parseQualifiedName(r, normalizeToUpper);
+		String[] qName = parseMultiPartSQLIdentifier(r);
 		verifyEmpty(r);
 		return qName;
 	}
 
-	/**
-	  Scan a qualified name from a StringReader. Return an array
-	  of Strings with 1 entry per name scanned. Raise an exception
-	  if the StringReader does not contain a valid qualified name.
-
-      @param r A StringReader for the string to be parsed
-      @param normalizeToUpper If true then undelimited names are converted to upper case (the ANSI standard). If false then undelimited names are converted to lower case (used when the source database is Informix Foundation).
-      @return An array of strings made by breaking the input string at its dots, '.'.
-	  @exception StandardException Oops
-	  */
-	public static String[] parseQualifiedName(StringReader r, boolean normalizeToUpper)
+    /**
+c
+    
+    @param s The string to be parsed
+    @return An array of strings made by breaking the input string at its dots, '.'.
+      @exception StandardException Oops
+      */
+	private static String[] parseMultiPartSQLIdentifier(StringReader r)
 		 throws StandardException
 	{
 		Vector v = new Vector();
 		while (true)
 		{
-			String thisId = parseId(r,true, normalizeToUpper);
+			String thisId = parseId(r,true);
 			v.addElement(thisId);
 			int dot;
 
@@ -166,20 +165,18 @@
 	}
 	
 	/**
-	  Convert the String provided to an ID. Throw an exception
-	  iff the string does not contain only a valid external form
-	  for an id. This is a convenience routine that simply
-	  uses getId(StringReader) to do the work.
-	  
-	  <P> See the header for getId below for restrictions.
-	  
+      Parse a SQL identifier from the String provided. Raise an excepion
+      if the string does not contain a valid SQL indentifier.
+      The returned String  contains the normalized form of the
+      identifier.
+        
 	  @exception StandardException Oops
 	  */
-	public static String parseId(String s)
+	public static String parseSQLIdentifier(String s)
 		 throws StandardException
 	{
 		StringReader r = new StringReader(s);
-		String id = parseId(r,true, true);
+		String id = parseId(r,true);
 		verifyEmpty(r);
 		return id;
 	}
@@ -197,7 +194,7 @@
 
 	  @exception StandardException Ooops.
 	  */
-	public static String parseId(StringReader r, boolean normalize, boolean normalizeToUpper)
+	private static String parseId(StringReader r, boolean normalize)
 		 throws StandardException
 	{
 		try {
@@ -209,7 +206,7 @@
 			if (c == '"')
 				return parseQId(r,normalize);
 			else
-				return parseUnQId(r,normalize, normalizeToUpper);
+				return parseUnQId(r,normalize, true);
 		}
 
 		catch (IOException ioe){
@@ -217,6 +214,19 @@
 		}
 	}
 
+    /**
+     * Parse a regular identifier (unquoted) returning returning either
+     * the value of the identifier or a delimited identifier. Ensures
+     * that all characters in the identifer are valid for a regular identifier.
+     * 
+     * @param r Regular identifier to parse.
+     * @param normalize If true return the identifer converted to a single case, otherwise return the identifier as entered.
+     * @param normalizeToUpper
+     * @return the value of the identifer or a delimited identifier
+     * @throws IOException Error accessing value
+     * @throws StandardException Error parsing identifier.
+ 
+     */
 	private static String parseUnQId(StringReader r, boolean normalize, boolean normalizeToUpper)
 		 throws IOException,StandardException
 	{
@@ -252,6 +262,16 @@
 			return true;
 		return false;
 	}
+    
+    /**
+     * Parse a delimited (quoted) identifier returning either
+     * the value of the identifier or a delimited identifier.
+     * @param r Quoted identifier to parse.
+     * @param normalize If true return a delimited identifer, otherwise return the identifier's value.
+     * @return the value of the identifer or a delimited identifier
+     * @throws IOException Error accessing value
+     * @throws StandardException Error parsing identifier.
+     */
 	private static String parseQId(StringReader r,boolean normalize)
 		 throws IOException,StandardException
 	{
@@ -323,7 +343,7 @@
 
 	  @exception StandardException Oops
 	  */
-	public static String[][] parseDbClassPath(String input, boolean normalizeToUpper)
+	public static String[][] parseDbClassPath(String input)
 		 throws StandardException
 	{
 		//As a special case we accept a zero length dbclasspath.
@@ -336,7 +356,7 @@
 		while (true)
 		{
 			try {
-				String[] thisQName = IdUtil.parseQualifiedName(r, normalizeToUpper);
+				String[] thisQName = IdUtil.parseMultiPartSQLIdentifier(r);
 				if (thisQName.length != 2)
 					throw StandardException.newException(SQLState.DB_CLASS_PATH_PARSE_ERROR,input);
 
@@ -374,8 +394,10 @@
 
 
 	/**
-	  Scan a list of ids from the string provided. This returns
-	  an array with id per entry. This raises an an exception if
+	  Scan a list of comma separated SQL identifiers from the string provided.
+      This returns an array with containing the normalized forms of the identifiers.
+      
+      This raises an an exception if
 	  the string does not contain a valid list of names.
 
 	  @exception StandardException Oops
@@ -392,7 +414,8 @@
 	
 	
 	/**
-	  Parse an idList. 
+	  Parse a list of comma separated SQL identifiers returning
+      them a as elements in an array.
 
 	  @param normalize true means return ids in nomral form, false means
 	        return them as they were entered.
@@ -407,7 +430,7 @@
 		{
 			int delim;
 			try {
-				String thisId = IdUtil.parseId(r,normalize, true);
+				String thisId = IdUtil.parseId(r,normalize);
 				v.addElement(thisId);
 				r.mark(0);
 				delim = r.read();
@@ -471,7 +494,7 @@
 	}
 
 	/**
-	 * Map userName to authorizationId
+	 * Map userName to authorizationId in its normal form.
 	 * 
 	 * @exception StandardException on error or userName is null
 	 */
@@ -479,7 +502,7 @@
 	{
 		try {
             if (userName != null)
-			    return parseId(userName);
+			    return parseSQLIdentifier(userName);
 		}
 		catch (StandardException se) {
 		}
@@ -487,9 +510,11 @@
 	}
 
 	/**
-	 * Get user name from URL properties. Handles the case of "" user.
-	 * 
-	 * @exception StandardException on error
+	 * Get user name from URL properties (key user) without any transformation.
+     * If the user property does not exist or is set to the empty string
+     * then Property.DEFAULT_USER_NAME is returned.
+     * 
+     * @see Property#DEFAULT_USER_NAME
 	 */
 	public static String getUserNameFromURLProps(Properties params)
 	{
@@ -591,7 +616,8 @@
 	}
 
 	/**
-	  Return true if the id provided is on the list provided.
+	  Return true if the normalized value of an indentifier is on the list 
+      of SQL identifiers provided.
 	  @param id an id in normal form
 	  @param	list a list of ids in external form.
 	  @exception StandardException oops.
@@ -607,13 +633,18 @@
 	}
 
 	/**
-	  Delete an id from a list of ids.
-	  @param id an id in normal form (quotes removed, upshifted)
+	  Delete an normal value from a list of SQL identifiers.
+      The returned list maintains its remaining identifiers in the
+      format they were upon entry to the call.
+      
+      
+	  @param id an id in normal form (quotes removed, upshifted if regular)
 	  @param list a comma separated list of ids in external
 	         form (possibly delmited or not upshifted).
 	  @return the list with the id deleted or null if the
 	    resulting list has no ids. If 'id' is not on 'list'
-		this returns list unchanged.
+		this returns list unchanged. If list becomes empty after the removal
+        null is returned.
 				 
 	  @exception StandardException oops.
 	  */
@@ -624,13 +655,14 @@
 		Vector v = new Vector();
 		StringReader r = new StringReader(list);
 		String[] enteredList_a = parseIdList(r,false);
+        
 		//
 		//Loop through enteredList element by element
 		//removing elements that match id. Before we
-		//compare we parse each id in list to convert
+		//compare we parse each SQL indentifier in list to convert
 		//to normal form.
 		for (int ix=0; ix < enteredList_a.length; ix++)
-			if (!id.equals(IdUtil.parseId(enteredList_a[ix])))
+			if (!id.equals(IdUtil.parseSQLIdentifier(enteredList_a[ix])))
 				v.addElement(enteredList_a[ix]);
 		if (v.size() == 0)
 			return null;

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/StringUtil.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/StringUtil.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/StringUtil.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/iapi/util/StringUtil.java Mon Nov 19 16:58:56 2007
@@ -372,7 +372,7 @@
 		if (s2 == null)
 			return  false;
 		else
-			return s1.toUpperCase(Locale.ENGLISH).equals(s2.toUpperCase(Locale.ENGLISH));
+			return SQLToUpperCase(s1).equals(SQLToUpperCase(s2));
 
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/db/BasicDatabase.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/db/BasicDatabase.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/db/BasicDatabase.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/db/BasicDatabase.java Mon Nov 19 16:58:56 2007
@@ -126,13 +126,10 @@
 	protected Object resourceAdapter;
 	private Locale databaseLocale;
 	private RuleBasedCollator ruleBasedCollator;
-	private int			spaceInt;
-	private boolean		spaceIntSet;
 	private DateFormat dateFormat;
 	private DateFormat timeFormat;
 	private DateFormat timestampFormat;
 	private UUID		myUUID;
-    private boolean normalizeToUpper = true;
 
 	protected boolean lastToBoot; // is this class last to boot
 
@@ -165,10 +162,7 @@
 		} else {
 			databaseLocale = monitor.getLocale(this);
 		}
-		setLocale(databaseLocale);
-
-        normalizeToUpper = true;
-        
+		setLocale(databaseLocale);      
 
 		// boot the validation needed to do property validation, now property
 		// validation is separated from AccessFactory, therefore from store
@@ -306,7 +300,7 @@
 		//Initialize our language connection context. Note: This is
 		//a bit of a hack. Unfortunately, we can't initialize this
 		//when we push it. We first must push a few more contexts. 
-		lctx.initialize(true);		
+		lctx.initialize();		
 
 		// Need to commit this to release locks gotten in initialize.  
 		// Commit it but make sure transaction not have any updates. 
@@ -650,7 +644,7 @@
 		if (newClasspath != null) {
 			// parse it when it is set to ensure only valid values
 			// are written to the actual conglomerate.
-			dbcp = IdUtil.parseDbClassPath(newClasspath, normalizeToUpper);
+			dbcp = IdUtil.parseDbClassPath(newClasspath);
 		}
 
 		//
@@ -730,9 +724,7 @@
 			String classpath = getClasspath(startParams);
 
 			// parse the class path and allow 2 part names.
-            boolean normalizeToUpper = true;
-			String[][] elements =
-				IdUtil.parseDbClassPath(classpath, normalizeToUpper);
+			IdUtil.parseDbClassPath(classpath);
 
 			startParams.put(Property.BOOT_DB_CLASSPATH, classpath);
 			cfDB = (ClassFactory) Monitor.bootServiceModule(create, this,

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/services/reflect/UpdateLoader.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/services/reflect/UpdateLoader.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/services/reflect/UpdateLoader.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/services/reflect/UpdateLoader.java Mon Nov 19 16:58:56 2007
@@ -116,7 +116,7 @@
 
 	private void initializeFromClassPath(String classpath) throws StandardException {
 
-		final String[][] elements = IdUtil.parseDbClassPath(classpath, normalizeToUpper);
+		final String[][] elements = IdUtil.parseDbClassPath(classpath);
 		
 		final int jarCount = elements.length;
 		jarList = new JarLoader[jarCount];

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java Mon Nov 19 16:58:56 2007
@@ -265,9 +265,6 @@
 	private SchemaDescriptor sysIBMSchemaDesc;
 	private SchemaDescriptor declaredGlobalTemporaryTablesSchemaDesc;
 	private SchemaDescriptor systemUtilSchemaDesc;
-
-    protected boolean convertIdToLower;
-    // Convert identifiers to lower case (as in Foundation) or not.
     
 	// This array of non-core table names *MUST* be in the same order
 	// as the non-core table numbers, above.
@@ -471,16 +468,6 @@
 	{
 		softwareVersion = new DD_Version(this, DataDictionary.DD_VERSION_DERBY_10_3);
 
-		/* There is a bootstrapping problem here. We would like to use
-         * a language connection context to find the name of the system and default
-         * schemas. However a language connection context is not available when a
-         * database is being created, as it is when this method is called. So,
-         * this method must look at the params properties to discover the identifier
-         * casing and convert the standard names as necessary, essentially duplicating
-         * logic found in GenericLanguageConnectionContext.
-         */
-        convertIdToLower = false;
-
 		startupParameters = startParams;
 
 		uuidFactory = Monitor.getMonitor().getUUIDFactory();
@@ -6373,8 +6360,6 @@
 		*/
 		systemSchemaDesc =
           newSystemSchemaDesc(
-              convertIdToLower ? 
-			      StringUtil.SQLToLowerCase(SchemaDescriptor.STD_SYSTEM_SCHEMA_NAME) : 
                   SchemaDescriptor.STD_SYSTEM_SCHEMA_NAME, 
                   SchemaDescriptor.SYSTEM_SCHEMA_UUID);
 
@@ -6589,7 +6574,7 @@
 		SchemaDescriptor schema_desc = 
             new SchemaDescriptor(
                 this, 
-                convertIdToLower ? schema_name.toLowerCase() : schema_name, 
+                schema_name, 
                 authorizationDatabaseOwner,
                 uuidFactory.recreateUUID(schema_uuid),
                 true);
@@ -7489,13 +7474,13 @@
 		UUIDFactory luuidFactory = uuidFactory;
 
 		lcoreInfo[SYSTABLES_CORE_NUM] = 
-			new TabInfoImpl(new SYSTABLESRowFactory(luuidFactory, exFactory, dvf, convertIdToLower));
+			new TabInfoImpl(new SYSTABLESRowFactory(luuidFactory, exFactory, dvf));
 		lcoreInfo[SYSCOLUMNS_CORE_NUM] = 
-			new TabInfoImpl(new SYSCOLUMNSRowFactory(luuidFactory, exFactory, dvf, convertIdToLower));
+			new TabInfoImpl(new SYSCOLUMNSRowFactory(luuidFactory, exFactory, dvf));
 		lcoreInfo[SYSCONGLOMERATES_CORE_NUM] = 
-			new TabInfoImpl(new SYSCONGLOMERATESRowFactory(luuidFactory, exFactory, dvf, convertIdToLower));
+			new TabInfoImpl(new SYSCONGLOMERATESRowFactory(luuidFactory, exFactory, dvf));
 		lcoreInfo[SYSSCHEMAS_CORE_NUM] = 
-			new TabInfoImpl(new SYSSCHEMASRowFactory(luuidFactory, exFactory, dvf, convertIdToLower));
+			new TabInfoImpl(new SYSSCHEMASRowFactory(luuidFactory, exFactory, dvf));
 	}
 
 	/**
@@ -7904,77 +7889,77 @@
 			{
 			  case SYSCONSTRAINTS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSCONSTRAINTSRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSKEYS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSKEYSRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSDEPENDS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSDEPENDSRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSVIEWS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSVIEWSRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSCHECKS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSCHECKSRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSFOREIGNKEYS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSFOREIGNKEYSRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSSTATEMENTS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSSTATEMENTSRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSFILES_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSFILESRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSALIASES_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSALIASESRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSTRIGGERS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSTRIGGERSRowFactory(
-												luuidFactory, exFactory, dvf, convertIdToLower));
+												luuidFactory, exFactory, dvf));
 				break;
 
 			  case SYSSTATISTICS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSSTATISTICSRowFactory(
-												 luuidFactory, exFactory, dvf, convertIdToLower));					 
+												 luuidFactory, exFactory, dvf));					 
 				break;
 
 			  case SYSDUMMY1_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSDUMMY1RowFactory(
-												 luuidFactory, exFactory, dvf, convertIdToLower));					 
+												 luuidFactory, exFactory, dvf));					 
 				break;
 
 			  case SYSTABLEPERMS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSTABLEPERMSRowFactory(
-												 luuidFactory, exFactory, dvf, convertIdToLower));					 
+												 luuidFactory, exFactory, dvf));					 
 				break;
 
 			  case SYSCOLPERMS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSCOLPERMSRowFactory(
-												 luuidFactory, exFactory, dvf, convertIdToLower));					 
+												 luuidFactory, exFactory, dvf));					 
 				break;
 
 			  case SYSROUTINEPERMS_CATALOG_NUM:
 				retval = new TabInfoImpl(new SYSROUTINEPERMSRowFactory(
-												 luuidFactory, exFactory, dvf, convertIdToLower));					 
+												 luuidFactory, exFactory, dvf));					 
 				break;
 			}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/PermissionsCatalogRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/PermissionsCatalogRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/PermissionsCatalogRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/PermissionsCatalogRowFactory.java Mon Nov 19 16:58:56 2007
@@ -37,10 +37,9 @@
 
 abstract class PermissionsCatalogRowFactory extends CatalogRowFactory
 {
-    PermissionsCatalogRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                        boolean convertIdToLower)
+    PermissionsCatalogRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
     {
-        super(uuidf,ef,dvf,convertIdToLower);
+        super(uuidf,ef,dvf);
     }
 
     DataValueDescriptor getAuthorizationID( String value)

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSALIASESRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSALIASESRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSALIASESRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSALIASESRowFactory.java Mon Nov 19 16:58:56 2007
@@ -109,10 +109,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSALIASESRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSALIASESRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSALIASES_COLUMN_COUNT, "SYSALIASES", indexColumnPositions, uniqueness, uuids);
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCHECKSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCHECKSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCHECKSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCHECKSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -81,10 +81,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-	SYSCHECKSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+	SYSCHECKSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSCHECKS_COLUMN_COUNT, TABLENAME_STRING, indexColumnPositions, uniqueness, uuids );
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLPERMSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLPERMSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLPERMSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLPERMSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -90,10 +90,9 @@
 		,"80220011-010c-bc85-060d-000000109ab8" //index3
     };
 
-    SYSCOLPERMSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSCOLPERMSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(COLUMN_COUNT, TABLENAME_STRING, indexColumnPositions, indexUniqueness, uuids);
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCOLUMNSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -117,16 +117,15 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSCOLUMNSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSCOLUMNSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		this(uuidf, ef, dvf, convertIdToLower, TABLENAME_STRING);
+		this(uuidf, ef, dvf, TABLENAME_STRING);
 	}
 
-    public	SYSCOLUMNSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower, String myName )
+    SYSCOLUMNSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
+                                 String myName )
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSCOLUMNS_COLUMN_COUNT, myName, indexColumnPositions, uniqueness, uuids);
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONGLOMERATESRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONGLOMERATESRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONGLOMERATESRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONGLOMERATESRowFactory.java Mon Nov 19 16:58:56 2007
@@ -103,10 +103,9 @@
 		,"80000016-00d0-fd77-3ed8-000a0a0b1900"	// SYSCONGLOMERATES_INDEX3
 	};
 
-	SYSCONGLOMERATESRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+	SYSCONGLOMERATESRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSCONGLOMERATES_COLUMN_COUNT, 
 				 TABLENAME_STRING, indexColumnPositions, 
 				 uniqueness, uuids );

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONSTRAINTSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONSTRAINTSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONSTRAINTSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSCONSTRAINTSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -96,10 +96,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSCONSTRAINTSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSCONSTRAINTSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSCONSTRAINTS_COLUMN_COUNT, TABLENAME_STRING, 
 				 indexColumnPositions, uniqueness, uuids );
 	}

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDEPENDSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDEPENDSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDEPENDSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDEPENDSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -85,10 +85,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSDEPENDSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSDEPENDSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSDEPENDS_COLUMN_COUNT,TABLENAME_STRING, indexColumnPositions,
 				 uniqueness, uuids );
 	}

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDUMMY1RowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDUMMY1RowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDUMMY1RowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSDUMMY1RowFactory.java Mon Nov 19 16:58:56 2007
@@ -64,10 +64,9 @@
 	 */
     SYSDUMMY1RowFactory(UUIDFactory uuidf, 
 									ExecutionFactory ef, 
-									DataValueFactory dvf,
-                                    boolean convertIdToLower)
+									DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		
 		initInfo(SYSDUMMY1_COLUMN_COUNT, "SYSDUMMY1", 
 				 null, null, uuids);

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFILESRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFILESRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFILESRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFILESRowFactory.java Mon Nov 19 16:58:56 2007
@@ -103,10 +103,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    SYSFILESRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower) 
+    SYSFILESRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf) 
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSFILES_COLUMN_COUNT, TABLENAME_STRING, 
 				 indexColumnPositions, uniqueness, uuids );
 	}

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFOREIGNKEYSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFOREIGNKEYSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFOREIGNKEYSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSFOREIGNKEYSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -90,10 +90,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSFOREIGNKEYSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSFOREIGNKEYSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSFOREIGNKEYS_COLUMN_COUNT, TABLENAME_STRING, 
 				 indexColumnPositions, uniqueness, uuids );
 	}

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSKEYSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSKEYSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSKEYSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSKEYSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -73,10 +73,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSKEYSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSKEYSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSKEYS_COLUMN_COUNT, TABLENAME_STRING, indexColumnPositions, uniqueness, uuids );
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSROUTINEPERMSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSROUTINEPERMSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSROUTINEPERMSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSROUTINEPERMSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -81,10 +81,9 @@
 		,"08264012-010c-bc85-060d-000000109ab8" // index3
     };
 
-    public SYSROUTINEPERMSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                     boolean convertIdToLower)
+    SYSROUTINEPERMSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo( COLUMN_COUNT, TABLENAME_STRING, indexColumnPositions, indexUniqueness, uuids);
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSCHEMASRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSCHEMASRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSCHEMASRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSCHEMASRowFactory.java Mon Nov 19 16:58:56 2007
@@ -95,10 +95,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSSCHEMASRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSSCHEMASRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSSCHEMAS_COLUMN_COUNT, TABLENAME_STRING, 
 				 indexColumnPositions, uniqueness, uuids );
 	}

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATEMENTSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATEMENTSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATEMENTSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATEMENTSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -116,10 +116,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSSTATEMENTSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                 boolean convertIdToLower)
+    SYSSTATEMENTSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSSTATEMENTS_COLUMN_COUNT, TABLENAME_STRING, 
 				 indexColumnPositions, uniqueness, uuids);
 	}

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATISTICSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATISTICSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATISTICSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSSTATISTICSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -115,12 +115,11 @@
 	/*
 	 *	CONSTRUCTORS
 	 */
-    public	SYSSTATISTICSRowFactory(UUIDFactory uuidf, 
+    SYSSTATISTICSRowFactory(UUIDFactory uuidf, 
 									ExecutionFactory ef, 
-									DataValueFactory dvf,
-                                    boolean convertIdToLower)
+									DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		
 		initInfo(SYSSTATISTICS_COLUMN_COUNT, TABLENAME_STRING, 
 				 indexColumnPositions, uniqueness, uuids);

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLEPERMSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLEPERMSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLEPERMSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLEPERMSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -84,10 +84,9 @@
 		,"f81e0010-010c-bc85-060d-000000109ab8"	// index3
     };
 
-    public SYSTABLEPERMSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                   boolean convertIdToLower)
+    SYSTABLEPERMSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(COLUMN_COUNT, TABLENAME_STRING, indexColumnPositions, indexUniqueness, uuids);
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLESRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLESRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLESRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTABLESRowFactory.java Mon Nov 19 16:58:56 2007
@@ -97,10 +97,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    SYSTABLESRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                boolean convertIdToLower)
+    SYSTABLESRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSTABLES_COLUMN_COUNT, TABLENAME_STRING, indexColumnPositions, (boolean[]) null, uuids);
 	}
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTRIGGERSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTRIGGERSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTRIGGERSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSTRIGGERSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -119,10 +119,9 @@
 	//	CONSTRUCTORS
 	//
 	/////////////////////////////////////////////////////////////////////////////
-	public	SYSTRIGGERSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                                  boolean convertIdToLower)
+	SYSTRIGGERSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSTRIGGERS_COLUMN_COUNT, TABLENAME_STRING, 
 				 indexColumnPositions,  uniqueness, uuids);
 	}

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSVIEWSRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSVIEWSRowFactory.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSVIEWSRowFactory.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/catalog/SYSVIEWSRowFactory.java Mon Nov 19 16:58:56 2007
@@ -82,10 +82,9 @@
 	//
 	/////////////////////////////////////////////////////////////////////////////
 
-    public	SYSVIEWSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf,
-                               boolean convertIdToLower)
+    SYSVIEWSRowFactory(UUIDFactory uuidf, ExecutionFactory ef, DataValueFactory dvf)
 	{
-		super(uuidf,ef,dvf,convertIdToLower);
+		super(uuidf,ef,dvf);
 		initInfo(SYSVIEWS_COLUMN_COUNT, TABLENAME_STRING, 
 				 indexColumnPositions, uniqueness, uuids );
 	}

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj Mon Nov 19 16:58:56 2007
@@ -12595,7 +12595,7 @@
  * <A NAME="identifier">identifier</A>
  */
 String
-internalIdentifier( int id_length_limit, boolean useANSICasing, boolean checkLength) throws StandardException :
+internalIdentifier( int id_length_limit, boolean checkLength) throws StandardException :
 {
 	String	str;
 	Token 	tok;
@@ -12603,11 +12603,9 @@
 {
 	tok = <IDENTIFIER>
 	{
-        if( useANSICasing)
-            str = StringUtil.SQLToUpperCase(tok.image);
-        else
-            str = getLanguageConnectionContext().convertIdentifierCase( tok.image);
-		if (checkLength) {//if checkLength false, then calling method would do the length limit checks
+        str = StringUtil.SQLToUpperCase(tok.image);
+ 
+ 		if (checkLength) {//if checkLength false, then calling method would do the length limit checks
 			//limit the identifier to the id length limit passed to this method
 			checkIdentifierLengthLimit(str, id_length_limit);
 		}
@@ -12630,7 +12628,7 @@
 |
 	str = nonReservedKeyword()
 	{
-		return getLanguageConnectionContext().convertIdentifierCase( str);
+		return StringUtil.SQLToUpperCase(str);
 	}
 }
 
@@ -12640,7 +12638,7 @@
 	String	id;
 }
 {
-    id = internalIdentifier( id_length_limit, false, checkLength)
+    id = internalIdentifier( id_length_limit, checkLength)
     {
         return id;
     }
@@ -13122,7 +13120,7 @@
 |
 	str = reservedKeyword()
 	{
-		return getLanguageConnectionContext().convertIdentifierCase( str);
+		return StringUtil.SQLToUpperCase(str);
 	}
 }
 

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java Mon Nov 19 16:58:56 2007
@@ -64,17 +64,13 @@
 	private final String authorizationId; //the userName after parsing by IdUtil 
 	
 	GenericAuthorizer(String authorizationId, 
-						     LanguageConnectionContext lcc,
-					         boolean sqlConnection)
+						     LanguageConnectionContext lcc)
 		 throws StandardException
 	{
 		this.lcc = lcc;
 		this.authorizationId = authorizationId;
 
-		//we check the access level only if this is coming from a sql
-		//connection, not internal logSniffer or StageTrunc db connection
-		if(sqlConnection)
-			refresh();
+		refresh();
 	}
 
 	/*

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java Mon Nov 19 16:58:56 2007
@@ -135,8 +135,6 @@
 	private final int instanceNumber;
 	private String drdaID;
 	private String dbname;
-
-    private int identifierCasing = UNKNOWN_CASING;
     
 	/**
 	The transaction to use within this language connection context.  It may
@@ -309,16 +307,11 @@
 		triggerTables = new ArrayList();
 	}
 
-	public void initialize(boolean sqlConnection) throws StandardException
+	public void initialize() throws StandardException
 	{
 		//
 		//Creating the authorizer authorizes the connection.
-		authorizer = new GenericAuthorizer(IdUtil.getUserAuthorizationId(userName),this, sqlConnection);
-
-		//we can ignore the following if this is a database connection
-		//associated with internal thread such as logSniffer and StageTrunc
-		if(!sqlConnection)
-			return;
+		authorizer = new GenericAuthorizer(IdUtil.getUserAuthorizationId(userName),this);
 
 		/*
 		** Set the authorization id.  User shouldn't
@@ -2597,39 +2590,6 @@
 		return getTransactionExecute().isPristine();
 	}
 
-    /**
-     * Convert an identifier to the proper case for this connection. This method
-     * is here to support the Plugin.
-     *
-     * @param id an identifier string
-     * @return  the string converted to upper or lower case, as appropriate
-     *
-     * @exception StandardException thrown if something goes wrong
-     */
-    public	String convertIdentifierCase( String id) throws StandardException
-    {
-        if( ANTI_ANSI_CASING == getIdentifierCasing())
-            return StringUtil.SQLToLowerCase(id);
-        else
-            return StringUtil.SQLToUpperCase(id);
-    }
-    
-	/**
-	  *	Get casing for delimited identifiers. This feature is here to
-	  *	support the Plugin.
-	  *
-	  *	@return	ANSI_CASING or ANTI_ANSI_CASING.
-	  *
-	  * @exception StandardException thrown if something goes wrong
-	  */
-    public	int	getIdentifierCasing() throws StandardException
-	{
-        if( UNKNOWN_CASING == identifierCasing)
-        {
-            identifierCasing = ANSI_CASING;
-        }
-        return identifierCasing;
-    }
 
 	//
 	// Context interface

Modified: db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/JarUtil.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/JarUtil.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/JarUtil.java (original)
+++ db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/execute/JarUtil.java Mon Nov 19 16:58:56 2007
@@ -181,8 +181,7 @@
 		String dbcp_s = PropertyUtil.getServiceProperty(lcc.getTransactionExecute(),Property.DATABASE_CLASSPATH);
 		if (dbcp_s != null)
 		{
-			String[][]dbcp= IdUtil.parseDbClassPath(dbcp_s,
-                                                            lcc.getIdentifierCasing() != lcc.ANTI_ANSI_CASING );
+			String[][]dbcp= IdUtil.parseDbClassPath(dbcp_s);
 			boolean found = false;
 			//
 			//Look for the jar we are dropping on our database classpath.

Modified: db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/AuthenticationTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/AuthenticationTest.java?rev=596505&r1=596504&r2=596505&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/AuthenticationTest.java (original)
+++ db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/AuthenticationTest.java Mon Nov 19 16:58:56 2007
@@ -429,6 +429,66 @@
         // use valid user/pwd to set the full accessusers.
         Connection conn1 = openDefaultConnection(
             "dan", ("dan" + PASSWORD_SUFFIX));
+        
+        // Test duplicates on the list of users
+        try {
+            setDatabaseProperty("derby.database.fullAccessUsers", 
+                    "dan,jamie,dan", conn1);
+            fail("Duplicate allowed on derby.database.fullAccessUsers");
+        } catch (SQLException e) {
+            assertSQLState("4250D", e);
+        }
+        try {
+            setDatabaseProperty("derby.database.fullAccessUsers", 
+                    "dan,jamie,DaN", conn1);
+            fail("Duplicate allowed on derby.database.fullAccessUsers");
+        } catch (SQLException e) {
+            assertSQLState("4250D", e);
+        }
+        try {
+            setDatabaseProperty("derby.database.fullAccessUsers", 
+                    "dan,jamie,\"DAN\"", conn1);
+            fail("Duplicate allowed on derby.database.fullAccessUsers");
+        } catch (SQLException e) {
+            assertSQLState("4250D", e);
+        }
+        try {
+            setDatabaseProperty("derby.database.fullAccessUsers", 
+                    "\"dan\",jamie,\"dan\"", conn1);
+            fail("Duplicate allowed on derby.database.fullAccessUsers");
+        } catch (SQLException e) {
+            assertSQLState("4250D", e);
+        }
+        
+        try {
+            setDatabaseProperty("derby.database.readOnlyAccessUsers", 
+                    "dan,jamie,dan", conn1);
+            fail("Duplicate allowed on derby.database.readOnlyAccessUsers");
+        } catch (SQLException e) {
+            assertSQLState("4250D", e);
+        }
+        try {
+            setDatabaseProperty("derby.database.readOnlyAccessUsers", 
+                    "dan,jamie,DaN", conn1);
+            fail("Duplicate allowed on derby.database.readOnlyAccessUsers");
+        } catch (SQLException e) {
+            assertSQLState("4250D", e);
+        }
+        try {
+            setDatabaseProperty("derby.database.readOnlyAccessUsers", 
+                    "dan,jamie,\"DAN\"", conn1);
+            fail("Duplicate allowed on derby.database.readOnlyAccessUsers");
+        } catch (SQLException e) {
+            assertSQLState("4250D", e);
+        }
+        try {
+            setDatabaseProperty("derby.database.readOnlyAccessUsers", 
+                    "\"dan\",jamie,\"dan\"", conn1);
+            fail("Duplicate allowed on derby.database.readOnlyAccessUsers");
+        } catch (SQLException e) {
+            assertSQLState("4250D", e);
+        }
+        
         setDatabaseProperty("derby.database.fullAccessUsers", 
             "dan,jamie,system", conn1);
         // cannot set a user to both full and readonly access...



Mime
View raw message