Author: tomdz
Date: Mon Oct 3 23:27:51 2005
New Revision: 293549
URL: http://svn.apache.org/viewcvs?rev=293549&view=rev
Log:
Fix for DDLUTILS-21 which ensures that for Microsoft SQL Server and Sybase,
identifiers are always enclosed in single quotes when used for comparison in a
WHERE clause (regardless of whether delimited identifiers are used)
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/MSSqlBuilder.java
db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/SybaseBuilder.java
db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java
db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestSybasePlatform.java
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/MSSqlBuilder.java
URL:
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/MSSqlBuilder.java?rev=293549&r1=293548&r2=293549&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/MSSqlBuilder.java
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/MSSqlBuilder.java
Mon Oct 3 23:27:51 2005
@@ -72,7 +72,7 @@
writeQuotationOnStatement();
print("IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
");
- printAlwaysQuotedIdentifier(tableName);
+ printAlwaysSingleQuotedIdentifier(tableName);
println(")");
println("BEGIN");
println(" DECLARE @reftable nvarchar(60), @constraintname
nvarchar(60)");
@@ -86,7 +86,7 @@
println(" and cons.id = ref.constid");
println(" and reftables.id = ref.fkeyid");
print(" and tables.name = ");
- printAlwaysQuotedIdentifier(tableName);
+ printAlwaysSingleQuotedIdentifier(tableName);
println(" OPEN refcursor");
println(" FETCH NEXT from refcursor into @reftable,
@constraintname");
println(" while @@FETCH_STATUS = 0");
@@ -162,7 +162,7 @@
String constraintName = foreignKey.getName() == null ?
getConstraintName(null, table, "FK", getForeignKeyName(foreignKey)) :
foreignKey.getName();
print("IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name
= ");
- printAlwaysQuotedIdentifier(constraintName);
+ printAlwaysSingleQuotedIdentifier(constraintName);
println(")");
printIndent();
print("ALTER TABLE ");
@@ -226,22 +226,15 @@
}
/**
- * Prints the given identifier with enforced quotes. If delimited
identifiers are
- * turned on, this will use the normal [EMAIL PROTECTED]
SqlBuilder#printIdentifier(String)}
- * method. If not, single quotation marks are used around the identifier.
+ * Prints the given identifier with enforced single quotes around it
regardless of whether
+ * delimited identifiers are turned on or not.
*
* @param identifier The identifier
*/
- private void printAlwaysQuotedIdentifier(String identifier) throws
IOException
+ private void printAlwaysSingleQuotedIdentifier(String identifier) throws
IOException
{
- if (!getPlatformInfo().isUseDelimitedIdentifiers())
- {
- print("'");
- }
- printIdentifier(identifier);
- if (!getPlatformInfo().isUseDelimitedIdentifiers())
- {
- print("'");
- }
+ print("'");
+ print(identifier);
+ print("'");
}
}
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/SybaseBuilder.java
URL:
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/SybaseBuilder.java?rev=293549&r1=293548&r2=293549&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/SybaseBuilder.java
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/builder/SybaseBuilder.java
Mon Oct 3 23:27:51 2005
@@ -68,7 +68,7 @@
{
writeQuotationOnStatement();
print("IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
");
- printAlwaysQuotedIdentifier(getTableName(table));
+ printAlwaysSingleQuotedIdentifier(getTableName(table));
println(")");
println("BEGIN");
printIndent();
@@ -86,7 +86,7 @@
String constraintName = foreignKey.getName() == null ?
getConstraintName(null, table, "FK", getForeignKeyName(foreignKey)) :
foreignKey.getName();
print("IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name
= ");
- printAlwaysQuotedIdentifier(constraintName);
+ printAlwaysSingleQuotedIdentifier(constraintName);
println(")");
printIndent();
print("ALTER TABLE ");
@@ -159,22 +159,15 @@
}
/**
- * Prints the given identifier with enforced quotes. If delimited
identifiers are
- * turned on, this will use the normal [EMAIL PROTECTED]
SqlBuilder#printIdentifier(String)}
- * method. If not, single quotation marks are used around the identifier.
+ * Prints the given identifier with enforced single quotes around it
regardless of whether
+ * delimited identifiers are turned on or not.
*
* @param identifier The identifier
*/
- private void printAlwaysQuotedIdentifier(String identifier) throws
IOException
+ private void printAlwaysSingleQuotedIdentifier(String identifier) throws
IOException
{
- if (!getPlatformInfo().isUseDelimitedIdentifiers())
- {
- print("'");
- }
- printIdentifier(identifier);
- if (!getPlatformInfo().isUseDelimitedIdentifiers())
- {
- print("'");
- }
+ print("'");
+ print(identifier);
+ print("'");
}
}
Modified:
db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java
URL:
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java?rev=293549&r1=293548&r2=293549&view=diff
==============================================================================
---
db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java
(original)
+++
db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java
Mon Oct 3 23:27:51 2005
@@ -43,7 +43,7 @@
assertEqualsIgnoringWhitespaces(
"SET quoted_identifier on;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"coltype\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'coltype')\n"+
"BEGIN\n"+
" DECLARE @reftable nvarchar(60), @constraintname
nvarchar(60)\n"+
" DECLARE refcursor CURSOR FOR\n"+
@@ -55,7 +55,7 @@
" where tables.id = ref.rkeyid\n"+
" and cons.id = ref.constid\n"+
" and reftables.id = ref.fkeyid\n"+
- " and tables.name = \"coltype\"\n"+
+ " and tables.name = 'coltype'\n"+
" OPEN refcursor\n"+
" FETCH NEXT from refcursor into @reftable, @constraintname\n"+
" while @@FETCH_STATUS = 0\n"+
@@ -115,7 +115,7 @@
assertEqualsIgnoringWhitespaces(
"SET quoted_identifier on;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"constraints\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'constraints')\n"+
"BEGIN\n"+
" DECLARE @reftable nvarchar(60), @constraintname
nvarchar(60)\n"+
" DECLARE refcursor CURSOR FOR\n"+
@@ -127,7 +127,7 @@
" where tables.id = ref.rkeyid\n"+
" and cons.id = ref.constid\n"+
" and reftables.id = ref.fkeyid\n"+
- " and tables.name = \"constraints\"\n"+
+ " and tables.name = 'constraints'\n"+
" OPEN refcursor\n"+
" FETCH NEXT from refcursor into @reftable, @constraintname\n"+
" while @@FETCH_STATUS = 0\n"+
@@ -160,14 +160,14 @@
{
assertEqualsIgnoringWhitespaces(
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name =
\"testfk\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name =
'testfk')\n"+
" ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name =
\"table2_FK_COL_FK_1_COL_FK_2_table1\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name =
'table2_FK_COL_FK_1_COL_FK_2_table1')\n"+
" ALTER TABLE \"table2\" DROP CONSTRAINT
\"table2_FK_COL_FK_1_COL_FK_2_table1\";\n"+
"SET quoted_identifier on;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"table3\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'table3')\n"+
"BEGIN\n"+
" DECLARE @reftable nvarchar(60), @constraintname
nvarchar(60)\n"+
" DECLARE refcursor CURSOR FOR\n"+
@@ -179,7 +179,7 @@
" where tables.id = ref.rkeyid\n"+
" and cons.id = ref.constid\n"+
" and reftables.id = ref.fkeyid\n"+
- " and tables.name = \"table3\"\n"+
+ " and tables.name = 'table3'\n"+
" OPEN refcursor\n"+
" FETCH NEXT from refcursor into @reftable, @constraintname\n"+
" while @@FETCH_STATUS = 0\n"+
@@ -192,7 +192,7 @@
" DROP TABLE \"table3\"\n"+
"END;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"table2\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'table2')\n"+
"BEGIN\n"+
" DECLARE @reftable nvarchar(60), @constraintname
nvarchar(60)\n"+
" DECLARE refcursor CURSOR FOR\n"+
@@ -204,7 +204,7 @@
" where tables.id = ref.rkeyid\n"+
" and cons.id = ref.constid\n"+
" and reftables.id = ref.fkeyid\n"+
- " and tables.name = \"table2\"\n"+
+ " and tables.name = 'table2'\n"+
" OPEN refcursor\n"+
" FETCH NEXT from refcursor into @reftable, @constraintname\n"+
" while @@FETCH_STATUS = 0\n"+
@@ -217,7 +217,7 @@
" DROP TABLE \"table2\"\n"+
"END;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"table1\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'table1')\n"+
"BEGIN\n"+
" DECLARE @reftable nvarchar(60), @constraintname
nvarchar(60)\n"+
" DECLARE refcursor CURSOR FOR\n"+
@@ -229,7 +229,7 @@
" where tables.id = ref.rkeyid\n"+
" and cons.id = ref.constid\n"+
" and reftables.id = ref.fkeyid\n"+
- " and tables.name = \"table1\"\n"+
+ " and tables.name = 'table1'\n"+
" OPEN refcursor\n"+
" FETCH NEXT from refcursor into @reftable, @constraintname\n"+
" while @@FETCH_STATUS = 0\n"+
Modified:
db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestSybasePlatform.java
URL:
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestSybasePlatform.java?rev=293549&r1=293548&r2=293549&view=diff
==============================================================================
---
db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestSybasePlatform.java
(original)
+++
db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestSybasePlatform.java
Mon Oct 3 23:27:51 2005
@@ -43,7 +43,7 @@
assertEqualsIgnoringWhitespaces(
"SET quoted_identifier on;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"coltype\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'coltype')\n"+
"BEGIN\n"+
" DROP TABLE \"coltype\"\n"+
"END;\n"+
@@ -94,7 +94,7 @@
assertEqualsIgnoringWhitespaces(
"SET quoted_identifier on;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"constraints\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'constraints')\n"+
"BEGIN\n"+
" DROP TABLE \"constraints\"\n"+
"END;\n"+
@@ -119,24 +119,24 @@
{
assertEqualsIgnoringWhitespaces(
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name =
\"testfk\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name =
'testfk')\n"+
" ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name =
\"table2_FK_COL_F_OL_FK_2_table1\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'RI' AND name =
'table2_FK_COL_F_OL_FK_2_table1')\n"+
" ALTER TABLE \"table2\" DROP CONSTRAINT
\"table2_FK_COL_F_OL_FK_2_table1\";\n"+
"SET quoted_identifier on;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"table3\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'table3')\n"+
"BEGIN\n"+
" DROP TABLE \"table3\"\n"+
"END;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"table2\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'table2')\n"+
"BEGIN\n"+
" DROP TABLE \"table2\"\n"+
"END;\n"+
"SET quoted_identifier on;\n"+
- "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
\"table1\")\n"+
+ "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name =
'table1')\n"+
"BEGIN\n"+
" DROP TABLE \"table1\"\n"+
"END;\n"+