You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2006/12/18 02:43:45 UTC

svn commit: r488098 - in /db/ddlutils/trunk/src: java/org/apache/ddlutils/platform/ java/org/apache/ddlutils/platform/postgresql/ test/org/apache/ddlutils/io/

Author: tomdz
Date: Sun Dec 17 17:43:44 2006
New Revision: 488098

URL: http://svn.apache.org/viewvc?view=rev&rev=488098
Log:
Fixed PostgreSQL character unescaping
Fixed a small bug in the handling of escaped single quote characters
Made misc tests more robust
Simplified datatype tests using the new DatabaseDataIO class

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlModelReader.java
    db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatatypes.java
    db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java?view=diff&rev=488098&r1=488097&r2=488098
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/JdbcModelReader.java Sun Dec 17 17:43:44 2006
@@ -1096,7 +1096,7 @@
         {
             if (escaped.equals("''"))
             {
-                if ((result.length() >= 2) && result.startsWith("'") && result.endsWith("'"))
+                if ((result.length() > 2) && result.startsWith("'") && result.endsWith("'"))
                 {
                     result = "'" + StringUtils.replace(result.substring(1, result.length() - 1), escaped, unescaped) + "'";
                 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlModelReader.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlModelReader.java?view=diff&rev=488098&r1=488097&r2=488098
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlModelReader.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlModelReader.java Sun Dec 17 17:43:44 2006
@@ -153,7 +153,7 @@
                 }
                 if (TypeMap.isTextType(column.getTypeCode()))
                 {
-                    defaultValue = unescape(defaultValue, "'", "\\'");
+                    defaultValue = unescape(defaultValue, "'", "''");
                 }
             }
             column.setDefaultValue(defaultValue);

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatatypes.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatatypes.java?view=diff&rev=488098&r1=488097&r2=488098
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatatypes.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestDatatypes.java Sun Dec 17 17:43:44 2006
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.math.BigDecimal;
@@ -30,11 +31,10 @@
 import java.util.List;
 import java.util.TreeSet;
 
-import org.apache.ddlutils.model.Database;
-import org.apache.ddlutils.model.Table;
-
 import junit.framework.Test;
 
+import org.apache.ddlutils.model.Database;
+
 /**
  * Performs roundtrip datatype tests.
  * 
@@ -118,17 +118,10 @@
         assertEquals("",
         		     alterTablesSql);
 
-        StringWriter stringWriter = new StringWriter();
-        DataWriter   dataWriter   = new DataWriter(stringWriter, "UTF-8");
+        StringWriter   stringWriter = new StringWriter();
+        DatabaseDataIO dataIO       = new DatabaseDataIO();
 
-        dataWriter.writeDocumentStart();
-        for (int idx = 0; idx < getModel().getTableCount(); idx++)
-        {
-            Table table = getModel().getTable(idx);
-
-            dataWriter.write(getPlatform().query(getModel(), getSelectQueryForAllString(table), new Table[] { table }));
-        }
-        dataWriter.writeDocumentEnd();
+        dataIO.writeDataToXML(getPlatform(), stringWriter, "UTF-8");
 
         String dataSql = stringWriter.toString();
         
@@ -138,26 +131,7 @@
 
         createDatabase(modelXml);
 
-        DataToDatabaseSink sink   = new DataToDatabaseSink(getPlatform(), getModel());
-        DataReader         reader = new DataReader();
-
-        sink.setEnsureForeignKeyOrder(true);
-        sink.setUseBatchMode(false);
-        reader.setModel(getModel());
-        reader.setSink(sink);
-        sink.start();
-        try
-        {
-            reader.parse(new StringReader(dataSql));
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-        finally
-        {
-            sink.end();
-        }
+        dataIO.writeDataToDatabase(getPlatform(), new Reader[] { new StringReader(dataSql) });
 
         beans = getRows("roundtrip");
 

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java?view=diff&rev=488098&r1=488097&r2=488098
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java Sun Dec 17 17:43:44 2006
@@ -94,11 +94,11 @@
         SAXReader reader    = new SAXReader();
         Document  testDoc   = reader.read(new InputSource(new StringReader(dataAsXml)));
 
-        if (getPlatform().isDelimitedIdentifierModeOn())
-        {
-            List misc1Rows = testDoc.selectNodes("//misc1");
-            List misc2Rows = testDoc.selectNodes("//misc2");
+        List misc1Rows = testDoc.selectNodes("//misc1");
+        List misc2Rows = testDoc.selectNodes("//misc2");
 
+        if (misc1Rows.size() > 0)
+        {
             assertEquals(3, misc1Rows.size());
             assertEquals("10", ((Element)misc1Rows.get(0)).attributeValue("pk"));
             assertEquals("1",  ((Element)misc1Rows.get(0)).attributeValue("avalue"));
@@ -114,8 +114,8 @@
         }
         else
         {
-            List misc1Rows = testDoc.selectNodes("//MISC1");
-            List misc2Rows = testDoc.selectNodes("//MISC2");
+            misc1Rows = testDoc.selectNodes("//MISC1");
+            misc2Rows = testDoc.selectNodes("//MISC2");
 
             assertEquals(3, misc1Rows.size());
             assertEquals("10", ((Element)misc1Rows.get(0)).attributeValue("PK"));
@@ -202,11 +202,11 @@
         SAXReader reader    = new SAXReader();
         Document  testDoc   = reader.read(new InputSource(new StringReader(dataAsXml)));
 
-        if (getPlatform().isDelimitedIdentifierModeOn())
-        {
-            List misc1Rows = testDoc.selectNodes("//misc1");
-            List misc2Rows = testDoc.selectNodes("//misc2");
+        List misc1Rows = testDoc.selectNodes("//misc1");
+        List misc2Rows = testDoc.selectNodes("//misc2");
 
+        if (misc1Rows.size() > 0)
+        {
             assertEquals(3, misc1Rows.size());
             assertEquals("10", ((Element)misc1Rows.get(0)).attributeValue("pk"));
             assertEquals("1",  ((Element)misc1Rows.get(0)).attributeValue("avalue"));
@@ -222,8 +222,8 @@
         }
         else
         {
-            List misc1Rows = testDoc.selectNodes("//MISC1");
-            List misc2Rows = testDoc.selectNodes("//MISC2");
+            misc1Rows = testDoc.selectNodes("//MISC1");
+            misc2Rows = testDoc.selectNodes("//MISC2");
 
             assertEquals(3, misc1Rows.size());
             assertEquals("10", ((Element)misc1Rows.get(0)).attributeValue("PK"));