You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2007/04/13 16:07:43 UTC
svn commit: r528492 - in /db/derby/code/trunk/java:
engine/org/apache/derby/impl/load/ engine/org/apache/derby/loc/
shared/org/apache/derby/shared/common/reference/
testing/org/apache/derbyTesting/functionTests/master/
testing/org/apache/derbyTesting/f...
Author: rhillegas
Date: Fri Apr 13 07:07:41 2007
New Revision: 528492
URL: http://svn.apache.org/viewvc?view=rev&rev=528492
Log:
DERBY-2193: Add line numbers and file names to import error messages.
Added:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/ImportExport/derby-2193-linenumber.txt (with props)
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/load/Import.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/load/ImportAbstract.java
db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/ieptests.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/ieptests.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/ieptests.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk16/ieptests.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ieptests.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/importExportThruIJ.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ.sql
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ_app.properties
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/load/Import.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/load/Import.java?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/load/Import.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/load/Import.java Fri Apr 13 07:07:41 2007
@@ -31,6 +31,10 @@
import java.sql.DatabaseMetaData;
import java.util.*;
+import org.apache.derby.iapi.reference.SQLState;
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.error.PublicAPI;
+
/**
* This class implements import of data from a URL into a table.
* Import functions provided here in this class shouble be called through
@@ -40,7 +44,10 @@
public class Import extends ImportAbstract{
- private String inputFileName;
+ private static int _importCounter;
+ private static Hashtable _importers = new Hashtable();
+
+ private String inputFileName;
/**
* Constructior to Invoke Import from a select statement
@@ -50,7 +57,8 @@
public Import(String inputFileName, String columnDelimiter,
String characterDelimiter, String codeset,
int noOfColumnsExpected, String columnTypes,
- boolean lobsInExtFile) throws SQLException
+ boolean lobsInExtFile,
+ int importCounter ) throws SQLException
{
try{
@@ -62,6 +70,8 @@
columnDelimiter, codeset);
this.lobsInExtFile = lobsInExtFile;
+ _importers.put( new Integer( importCounter ), this );
+
doImport();
}catch(Exception e)
@@ -159,111 +169,130 @@
* INTEGER) from new org.apache.derby.impl.load.Import('extin/Tutor1.asc') as importvti;
*
*/
- private static void performImport(Connection connection,
- String schemaName,
- String insertColumnList,
- String columnIndexes,
- String tableName,
- String inputFileName,
- String columnDelimiter,
- String characterDelimiter,
- String codeset,
- short replace,
- boolean lobsInExtFile)
+ private static void performImport
+ (Connection connection,
+ String schemaName,
+ String insertColumnList,
+ String columnIndexes,
+ String tableName,
+ String inputFileName,
+ String columnDelimiter,
+ String characterDelimiter,
+ String codeset,
+ short replace,
+ boolean lobsInExtFile)
throws SQLException
- {
-
- if (connection == null)
- throw LoadError.connectionNull();
-
-
-
- if (tableName == null)
- throw LoadError.entityNameMissing();
-
-
- ColumnInfo columnInfo = new ColumnInfo(connection , schemaName ,
- tableName, insertColumnList,
- columnIndexes, COLUMNNAMEPREFIX);
-
- /* special handling of single quote delimiters
- * Single quote should be writeen with an extra quote otherwise sql will
- * throw syntac error.
- * i.e to recognize a quote it has to be appended with extra quote ('')
- */
- if(characterDelimiter!=null && characterDelimiter.equals("'"))
- characterDelimiter = "''";
- if(columnDelimiter !=null && columnDelimiter.equals("'"))
- columnDelimiter = "''";
-
-
- StringBuffer sb = new StringBuffer("new ");
- sb.append("org.apache.derby.impl.load.Import");
- sb.append("(") ;
- sb.append( (inputFileName !=null ? "'" + inputFileName + "'" : null));
- sb.append(",") ;
- sb.append( (columnDelimiter !=null ? "'" + columnDelimiter + "'" : null));
- sb.append(",") ;
- sb.append( (characterDelimiter !=null ? "'" + characterDelimiter + "'" : null));
- sb.append(",") ;
- sb.append( (codeset !=null ? "'" + codeset + "'" : null));
- sb.append(", ");
- sb.append( columnInfo.getExpectedNumberOfColumnsInFile());
- sb.append(", ");
- sb.append( "'" + columnInfo.getExpectedVtiColumnTypesAsString() + "'");
- sb.append(", ");
- sb.append(lobsInExtFile);
- sb.append(" )") ;
-
- String importvti = sb.toString();
-
- // delimit the table and schema names with quotes.
- // because they might have been created as quoted
- // identifiers(for example when reserved words are used, names are quoted)
-
- // Import procedures are to be called with case-senisitive names.
- // Incase of delimited table names, they need to be passed as defined
- // and when they are not delimited, they need to be passed in upper
- // case, because all undelimited names are stored in the upper case
- // in the database.
-
- String entityName = (schemaName == null ? "\""+ tableName + "\"" :
- "\"" + schemaName + "\"" + "." + "\"" + tableName + "\"");
-
- String insertModeValue;
- if(replace > 0)
- insertModeValue = "replace";
- else
- insertModeValue = "bulkInsert";
-
- String cNamesWithCasts = columnInfo.getColumnNamesWithCasts();
- String insertColumnNames = columnInfo.getInsertColumnNames();
- if(insertColumnNames !=null)
- insertColumnNames = "(" + insertColumnNames + ") " ;
- else
- insertColumnNames = "";
- String insertSql = "INSERT INTO " + entityName + insertColumnNames +
- " --DERBY-PROPERTIES insertMode=" + insertModeValue + "\n" +
- " SELECT " + cNamesWithCasts + " from " +
- importvti + " AS importvti" ;
-
- //prepare the import statement to hit any errors before locking the table
- PreparedStatement ips = connection.prepareStatement(insertSql);
-
- //lock the table before perfoming import, because there may
- //huge number of lockes aquired that might have affect on performance
- //and some possible dead lock scenarios.
- Statement statement = connection.createStatement();
- String lockSql = "LOCK TABLE " + entityName + " IN EXCLUSIVE MODE";
- statement.executeUpdate(lockSql);
-
- //execute the import operaton.
- ips.executeUpdate();
- statement.close();
- ips.close();
-
- }
-
+ {
+ Integer importCounter = new Integer( bumpImportCounter() );
+
+ try {
+ if (connection == null)
+ throw LoadError.connectionNull();
+
+
+
+ if (tableName == null)
+ throw LoadError.entityNameMissing();
+
+
+ ColumnInfo columnInfo = new ColumnInfo(connection , schemaName ,
+ tableName, insertColumnList,
+ columnIndexes, COLUMNNAMEPREFIX);
+
+ /* special handling of single quote delimiters
+ * Single quote should be writeen with an extra quote otherwise sql will
+ * throw syntac error.
+ * i.e to recognize a quote it has to be appended with extra quote ('')
+ */
+ if(characterDelimiter!=null && characterDelimiter.equals("'"))
+ characterDelimiter = "''";
+ if(columnDelimiter !=null && columnDelimiter.equals("'"))
+ columnDelimiter = "''";
+
+
+ StringBuffer sb = new StringBuffer("new ");
+ sb.append("org.apache.derby.impl.load.Import");
+ sb.append("(") ;
+ sb.append( (inputFileName !=null ? "'" + inputFileName + "'" : null));
+ sb.append(",") ;
+ sb.append( (columnDelimiter !=null ? "'" + columnDelimiter + "'" : null));
+ sb.append(",") ;
+ sb.append( (characterDelimiter !=null ? "'" + characterDelimiter + "'" : null));
+ sb.append(",") ;
+ sb.append( (codeset !=null ? "'" + codeset + "'" : null));
+ sb.append(", ");
+ sb.append( columnInfo.getExpectedNumberOfColumnsInFile());
+ sb.append(", ");
+ sb.append( "'" + columnInfo.getExpectedVtiColumnTypesAsString() + "'");
+ sb.append(", ");
+ sb.append(lobsInExtFile);
+ sb.append(", ");
+ sb.append( importCounter.intValue() );
+ sb.append(" )") ;
+
+ String importvti = sb.toString();
+
+ // delimit the table and schema names with quotes.
+ // because they might have been created as quoted
+ // identifiers(for example when reserved words are used, names are quoted)
+
+ // Import procedures are to be called with case-senisitive names.
+ // Incase of delimited table names, they need to be passed as defined
+ // and when they are not delimited, they need to be passed in upper
+ // case, because all undelimited names are stored in the upper case
+ // in the database.
+
+ String entityName = (schemaName == null ? "\""+ tableName + "\"" :
+ "\"" + schemaName + "\"" + "." + "\"" + tableName + "\"");
+
+ String insertModeValue;
+ if(replace > 0)
+ insertModeValue = "replace";
+ else
+ insertModeValue = "bulkInsert";
+
+ String cNamesWithCasts = columnInfo.getColumnNamesWithCasts();
+ String insertColumnNames = columnInfo.getInsertColumnNames();
+ if(insertColumnNames !=null)
+ insertColumnNames = "(" + insertColumnNames + ") " ;
+ else
+ insertColumnNames = "";
+ String insertSql = "INSERT INTO " + entityName + insertColumnNames +
+ " --DERBY-PROPERTIES insertMode=" + insertModeValue + "\n" +
+ " SELECT " + cNamesWithCasts + " from " +
+ importvti + " AS importvti" ;
+
+ //prepare the import statement to hit any errors before locking the table
+ PreparedStatement ips = connection.prepareStatement(insertSql);
+
+ //lock the table before perfoming import, because there may
+ //huge number of lockes aquired that might have affect on performance
+ //and some possible dead lock scenarios.
+ Statement statement = connection.createStatement();
+ String lockSql = "LOCK TABLE " + entityName + " IN EXCLUSIVE MODE";
+ statement.executeUpdate(lockSql);
+
+ //execute the import operaton.
+ try {
+ ips.executeUpdate();
+ }
+ catch (Throwable t)
+ {
+ throw formatImportError( (Import) _importers.get( importCounter ), inputFileName, t );
+ }
+ statement.close();
+ ips.close();
+ }
+ finally
+ {
+ //
+ // The importer was put into a hashtable so that we could look up
+ // line numbers for error messages. The Import constructor put
+ // the importer in the hashtable. Now garbage collect that entry.
+ //
+ _importers.remove( importCounter );
+ }
+ }
/** virtual method from the abstract class
* @exception Exception on error
@@ -271,23 +300,31 @@
ImportReadData getImportReadData() throws Exception {
return new ImportReadData(inputFileName, controlFileReader);
}
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ /*
+ * Bump the import counter.
+ *
+ */
+ private static synchronized int bumpImportCounter()
+ {
+ return ++_importCounter;
+ }
+
+ /*
+ * Format a import error with line number
+ *
+ */
+ private static SQLException formatImportError( Import importer, String inputFile, Throwable t )
+ {
+ int lineNumber = -1;
+
+ if ( importer != null ) { lineNumber = importer.getCurrentLineNumber(); }
+
+ StandardException se = StandardException.newException
+ ( SQLState.UNEXPECTED_IMPORT_ERROR, new Integer( lineNumber ), inputFile, t.getMessage() );
+ se.setNestedException( t );
+
+ return PublicAPI.wrapStandardException(se);
+ }
+
+}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/load/ImportAbstract.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/load/ImportAbstract.java?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/load/ImportAbstract.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/load/ImportAbstract.java Fri Apr 13 07:07:41 2007
@@ -45,6 +45,7 @@
int numberOfColumns;
int[] columnWidths;
+ int lineNumber = 0;
String[] nextRow;
ResultSetMetaData importResultSetMetaData;
@@ -114,8 +115,12 @@
return (importReadData.getCurrentRowNumber());
}
+ /** gets the current line number */
+ public int getCurrentLineNumber() { return lineNumber; }
+
public boolean next() throws SQLException {
try {
+ lineNumber++;
return (importReadData.readNextRow(nextRow));
} catch (Exception ex) {
throw LoadError.unexpectedError(ex);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml Fri Apr 13 07:07:41 2007
@@ -3888,6 +3888,14 @@
<text>Lob data file name cannot be null. </text>
</msg>
+ <msg>
+ <name>XIE0R.S</name>
+ <text>Import error on line {0} of file {1}: {2} </text>
+ <arg>lineNumber</arg>
+ <arg>fileName</arg>
+ <arg>details</arg>
+ </msg>
+
</family>
Modified: db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java (original)
+++ db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java Fri Apr 13 07:07:41 2007
@@ -1712,6 +1712,7 @@
String IMPORTFILE_HAS_INVALID_HEXSTRING ="XIE0N.S";
String LOB_DATA_FILE_NOT_FOUND ="XIE0P.S";
String LOB_DATA_FILE_NULL ="XIE0Q.S";
+ String UNEXPECTED_IMPORT_ERROR ="XIE0R.S";
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/ieptests.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/ieptests.out?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/ieptests.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/ieptests.out Fri Apr 13 07:07:41 2007
@@ -661,7 +661,7 @@
Statement executed.
ij> --replace should fail because of dependent table
CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(NULL, 'PARENT', 'extinout/parent.del',null, null, null,1);
-ERROR 38000: The exception 'java.sql.SQLException: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.' was thrown while evaluating an expression. SQLSTATE: 23503: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.
+ERROR XIE0R: Import error on line 3 of file extinout/parent.del: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back. SQLSTATE: 23503: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.
ij> select * from parent;
A
-----
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/ieptests.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/ieptests.out?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/ieptests.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNet/jdk16/ieptests.out Fri Apr 13 07:07:41 2007
@@ -661,7 +661,7 @@
Statement executed.
ij> --replace should fail because of dependent table
CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(NULL, 'PARENT', 'extinout/parent.del',null, null, null,1);
-ERROR 38000: The exception 'java.sql.SQLException: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.' was thrown while evaluating an expression.
+ERROR XIE0R: Import error on line 3 of file extinout/parent.del: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.
ij> select * from parent;
A
-----
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/ieptests.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/ieptests.out?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/ieptests.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/ieptests.out Fri Apr 13 07:07:41 2007
@@ -661,7 +661,7 @@
Statement executed.
ij> --replace should fail because of dependent table
CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(NULL, 'PARENT', 'extinout/parent.del',null, null, null,1);
-ERROR 38000: The exception 'java.sql.SQLException: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.' was thrown while evaluating an expression. SQLSTATE: 23503: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.
+ERROR XIE0R: Import error on line 3 of file extinout/parent.del: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back. SQLSTATE: 23503: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.
ij> select * from parent;
A
-----
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk16/ieptests.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk16/ieptests.out?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk16/ieptests.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/jdk16/ieptests.out Fri Apr 13 07:07:41 2007
@@ -661,7 +661,7 @@
Statement executed.
ij> --replace should fail because of dependent table
CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(NULL, 'PARENT', 'extinout/parent.del',null, null, null,1);
-ERROR 38000: The exception 'java.sql.SQLException: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.' was thrown while evaluating an expression.
+ERROR XIE0R: Import error on line 3 of file extinout/parent.del: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.
ij> select * from parent;
A
-----
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ieptests.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ieptests.out?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ieptests.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ieptests.out Fri Apr 13 07:07:41 2007
@@ -676,7 +676,7 @@
0 rows inserted/updated/deleted
ij> --replace should fail because of dependent table
CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE(NULL, 'PARENT', 'extinout/parent.del',null, null, null,1);
-ERROR 38000: The exception 'java.sql.SQLException: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.' was thrown while evaluating an expression.
+ERROR XIE0R: Import error on line 3 of file extinout/parent.del: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.
ERROR 23503: INSERT on table 'PARENT' caused a violation of foreign key constraint 'xxxxGENERATED-IDxxxx' for key (3). The statement has been rolled back.
ij> select * from parent;
A
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/importExportThruIJ.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/importExportThruIJ.out?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/importExportThruIJ.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/importExportThruIJ.out Fri Apr 13 07:07:41 2007
@@ -38,7 +38,7 @@
0 rows inserted/updated/deleted
ij> call SYSCS_UTIL.SYSCS_IMPORT_TABLE (null, 'T1' , 'extin/EndOfFile.txt' ,
null, null, null, 0) ;
-ERROR 38000: The exception 'java.sql.SQLException: Read endOfFile at unexpected place on line 2.' was thrown while evaluating an expression.
+ERROR XIE0R: Import error on line 2 of file extin/EndOfFile.txt: Read endOfFile at unexpected place on line 2.
ERROR XIE0E: Read endOfFile at unexpected place on line 2.
ij> call SYSCS_UTIL.SYSCS_IMPORT_TABLE (null, 'T1' , 'extin/Tutor1.asc' ,
null, null, null, 0) ;
@@ -382,7 +382,7 @@
0 rows inserted/updated/deleted
ij> call SYSCS_UTIL.SYSCS_IMPORT_TABLE (null, 'ALT1' , 'extin/Alt1.asc' ,
null, null, null, 0) ;
-ERROR 38000: The exception 'java.sql.SQLException: Invalid character string format for type INTEGER.' was thrown while evaluating an expression.
+ERROR XIE0R: Import error on line 1 of file extin/Alt1.asc: Invalid character string format for type INTEGER.
ERROR 22018: Invalid character string format for type INTEGER.
ij> select * from Alt1 where State = 'CA';
ACCOUNT |FNAME |LNAME |COMPANY |ADDRESS |CITY |STATE|ZIP |PAYMENT |BALANCE
@@ -406,7 +406,7 @@
0 rows inserted/updated/deleted
ij> call SYSCS_UTIL.SYSCS_IMPORT_TABLE (null, 'ALT3' , 'extin/Alt3.asc' ,
null, null, null, 0) ;
-ERROR 38000: The exception 'java.sql.SQLException: Invalid character string format for type INTEGER.' was thrown while evaluating an expression.
+ERROR XIE0R: Import error on line 1 of file extin/Alt3.asc: Invalid character string format for type INTEGER.
ERROR 22018: Invalid character string format for type INTEGER.
ij> select * from Alt3 where State = 'CA' or State = 'TX';
ACCOUNT |FNAME |LNAME |COMPANY |ADDRESS |CITY |STATE|ZIP |PAYMENT |BALANCE
@@ -800,6 +800,22 @@
in the bopshebop |16
NULL |NULL
boopdeedoo |10
+ij> --
+-- Errors should contain identifying line numbers
+--
+create table derby_2193_lineNumber
+(
+ a int,
+ b int
+);
+0 rows inserted/updated/deleted
+ij> CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE
+( null, 'DERBY_2193_LINENUMBER', 'extin/derby-2193-linenumber.txt', null, null, null, 0 );
+ERROR XIE0R: Import error on line 2 of file extin/derby-2193-linenumber.txt: Invalid character string format for type INTEGER.
+ERROR 22018: Invalid character string format for type INTEGER.
+ij> select * from derby_2193_lineNumber;
+A |B
+-----------------------
ij> --
-- end test case for derby-2193:
--
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/ImportExport/derby-2193-linenumber.txt
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/ImportExport/derby-2193-linenumber.txt?view=auto&rev=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/ImportExport/derby-2193-linenumber.txt (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/ImportExport/derby-2193-linenumber.txt Fri Apr 13 07:07:41 2007
@@ -0,0 +1,3 @@
+1, 2
+3, foo
+5, 6
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/testData/ImportExport/derby-2193-linenumber.txt
------------------------------------------------------------------------------
svn:eol-style = native
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ.sql
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ.sql?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ.sql (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ.sql Fri Apr 13 07:07:41 2007
@@ -321,6 +321,19 @@
select b, length(b) from derby_2193_tab;
--
+-- Errors should contain identifying line numbers
+--
+create table derby_2193_lineNumber
+(
+ a int,
+ b int
+);
+
+CALL SYSCS_UTIL.SYSCS_IMPORT_TABLE
+( null, 'DERBY_2193_LINENUMBER', 'extin/derby-2193-linenumber.txt', null, null, null, 0 );
+select * from derby_2193_lineNumber;
+
+--
-- end test case for derby-2193:
--
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ_app.properties
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ_app.properties?view=diff&rev=528492&r1=528491&r2=528492
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ_app.properties (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/tools/importExportThruIJ_app.properties Fri Apr 13 07:07:41 2007
@@ -1,4 +1,4 @@
-supportfiles=testData/ImportExport/sqlAnywhere1.utf,testData/ImportExport/sqlAnywhere2.utf,testData/ImportExport/Access1.txt,testData/ImportExport/Access2.txt,testData/ImportExport/Access3.txt,testData/ImportExport/Alt1.asc,testData/ImportExport/Alt2.asc,testData/ImportExport/Alt3.asc,testData/ImportExport/Alt4.asc,testData/ImportExport/Alt5.asc,testData/ImportExport/Alt6.asc,testData/ImportExport/Tutor1.asc,testData/ImportExport/Tutor2.asc,testData/ImportExport/Tutor3.asc,testData/ImportExport/EndOfFile.txt,testData/ImportExport/derby-2193.txt
+supportfiles=testData/ImportExport/sqlAnywhere1.utf,testData/ImportExport/sqlAnywhere2.utf,testData/ImportExport/Access1.txt,testData/ImportExport/Access2.txt,testData/ImportExport/Access3.txt,testData/ImportExport/Alt1.asc,testData/ImportExport/Alt2.asc,testData/ImportExport/Alt3.asc,testData/ImportExport/Alt4.asc,testData/ImportExport/Alt5.asc,testData/ImportExport/Alt6.asc,testData/ImportExport/Tutor1.asc,testData/ImportExport/Tutor2.asc,testData/ImportExport/Tutor3.asc,testData/ImportExport/EndOfFile.txt,testData/ImportExport/derby-2193.txt,testData/ImportExport/derby-2193-linenumber.txt
# fails: supportfiles=testData/ImportExport/sqlAnywhere2.txt,testData/ImportExport/Access1.txt,testData/ImportExport/Access2.txt,testData/ImportExport/Access3.txt,testData/ImportExport/Alt1.asc,testData/ImportExport/Alt2.asc,testData/ImportExport/Alt3.asc,testData/ImportExport/Alt4.asc,testData/ImportExport/Alt5.asc,testData/ImportExport/Alt6.asc,testData/ImportExport/Tutor1.asc,testData/ImportExport/Tutor2.asc,testData/ImportExport/Tutor3.asc,testData/ImportExport/EndOfFile.txt
#also fails: supportfiles=testData/ImportExport/sqlAnywhere1.txt,testData/ImportExport/Access1.txt,testData/ImportExport/Access2.txt,testData/ImportExport/Access3.txt,testData/ImportExport/Alt1.asc,testData/ImportExport/Alt2.asc,testData/ImportExport/Alt3.asc,testData/ImportExport/Alt4.asc,testData/ImportExport/Alt5.asc,testData/ImportExport/Alt6.asc,testData/ImportExport/Tutor1.asc,testData/ImportExport/Tutor2.asc,testData/ImportExport/Tutor3.asc,testData/ImportExport/EndOfFile.txt
usedefaults=true