Skip to content

Commit adad702

Browse files
committed
JdbcRowFactory now handles null quirk correctly.
1 parent 6f32a68 commit adad702

File tree

8 files changed

+23
-14
lines changed

8 files changed

+23
-14
lines changed

src/main/java/com/softwareverde/database/connection/JdbcDatabaseConnection.java renamed to src/main/java/com/softwareverde/database/connection/jdbc/JdbcDatabaseConnection.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.softwareverde.database.connection;
1+
package com.softwareverde.database.connection.jdbc;
22

33
import com.softwareverde.database.DatabaseConnection;
44
import com.softwareverde.database.DatabaseException;
55
import com.softwareverde.database.query.Query;
66
import com.softwareverde.database.query.parameter.TypedParameter;
7-
import com.softwareverde.database.row.JdbcRowFactory;
7+
import com.softwareverde.database.row.jdbc.JdbcRowFactory;
88
import com.softwareverde.database.row.Row;
99
import com.softwareverde.database.row.RowFactory;
1010
import com.softwareverde.util.Util;

src/main/java/com/softwareverde/database/row/JdbcRow.java renamed to src/main/java/com/softwareverde/database/row/jdbc/JdbcRow.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package com.softwareverde.database.row;
1+
package com.softwareverde.database.row.jdbc;
22

33
import com.softwareverde.database.query.parameter.ParameterType;
44
import com.softwareverde.database.query.parameter.TypedParameter;
5+
import com.softwareverde.database.row.Row;
56
import com.softwareverde.util.Util;
67

78
import java.nio.charset.Charset;

src/main/java/com/softwareverde/database/row/JdbcRowFactory.java renamed to src/main/java/com/softwareverde/database/row/jdbc/JdbcRowFactory.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package com.softwareverde.database.row;
1+
package com.softwareverde.database.row.jdbc;
22

33
import com.softwareverde.database.DatabaseException;
44
import com.softwareverde.database.query.parameter.TypedParameter;
5+
import com.softwareverde.database.row.RowFactory;
56

67
import java.sql.ResultSet;
78
import java.sql.ResultSetMetaData;
@@ -62,20 +63,22 @@ public JdbcRow fromResultSet(final ResultSet resultSet) throws DatabaseException
6263
final TypedParameter typedValue;
6364
{
6465
if (JdbcRowFactory.isWholeNumberType(sqlDataType)) {
65-
final Long longValue = resultSet.getLong(columnIndex);
66-
typedValue = new TypedParameter(longValue);
66+
final long longValue = resultSet.getLong(columnIndex); // NOTE: ResultSet::getLong returns 0L if null. Must use ResultSet::wasNull.
67+
final boolean wasNull = resultSet.wasNull();
68+
typedValue = (wasNull ? TypedParameter.NULL : new TypedParameter(longValue));
6769
}
6870
else if (JdbcRowFactory.isBinaryType(sqlDataType)) {
6971
final byte[] bytes = resultSet.getBytes(columnIndex);
70-
typedValue = new TypedParameter(bytes);
72+
typedValue = ((bytes == null) ? TypedParameter.NULL : new TypedParameter(bytes));
7173
}
7274
else if (JdbcRowFactory.isFloatingPointNumberType(sqlDataType)) {
73-
final Double doubleValue = resultSet.getDouble(columnIndex);
74-
typedValue = new TypedParameter(doubleValue);
75+
final double doubleValue = resultSet.getDouble(columnIndex); // NOTE: ResultSet::getDouble returns 0D if null. Must use ResultSet::wasNull.
76+
final boolean wasNull = resultSet.wasNull();
77+
typedValue = (wasNull ? TypedParameter.NULL : new TypedParameter(doubleValue));
7578
}
7679
else {
7780
final String stringValue = resultSet.getString(columnIndex);
78-
typedValue = new TypedParameter(stringValue);
81+
typedValue = ((stringValue == null) ? TypedParameter.NULL : new TypedParameter(stringValue));
7982
}
8083
}
8184

src/main/java/com/softwareverde/database/transaction/DatabaseTransaction.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.softwareverde.database.transaction;
22

33
import com.softwareverde.database.DatabaseException;
4+
import com.softwareverde.database.transaction.jdbc.DatabaseCallable;
5+
import com.softwareverde.database.transaction.jdbc.DatabaseRunnable;
46

57
public interface DatabaseTransaction<ConnectionType> {
68
void execute(final DatabaseRunnable<ConnectionType> databaseRunnable) throws DatabaseException;

src/main/java/com/softwareverde/database/transaction/DatabaseCallable.java renamed to src/main/java/com/softwareverde/database/transaction/jdbc/DatabaseCallable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.softwareverde.database.transaction;
1+
package com.softwareverde.database.transaction.jdbc;
22

33
import com.softwareverde.database.DatabaseConnection;
44
import com.softwareverde.database.DatabaseException;

src/main/java/com/softwareverde/database/transaction/DatabaseRunnable.java renamed to src/main/java/com/softwareverde/database/transaction/jdbc/DatabaseRunnable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.softwareverde.database.transaction;
1+
package com.softwareverde.database.transaction.jdbc;
22

33
import com.softwareverde.database.DatabaseConnection;
44
import com.softwareverde.database.DatabaseException;

src/main/java/com/softwareverde/database/transaction/JdbcDatabaseTransaction.java renamed to src/main/java/com/softwareverde/database/transaction/jdbc/JdbcDatabaseTransaction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
package com.softwareverde.database.transaction;
1+
package com.softwareverde.database.transaction.jdbc;
22

33
import com.softwareverde.database.DatabaseConnection;
44
import com.softwareverde.database.DatabaseConnectionFactory;
55
import com.softwareverde.database.DatabaseException;
6+
import com.softwareverde.database.transaction.DatabaseTransaction;
67

78
import java.sql.Connection;
89
import java.sql.SQLException;

src/test/java/com/softwareverde/database/transaction/JdbcDatabaseTransactionTests.java renamed to src/test/java/com/softwareverde/database/transaction/jdbc/JdbcDatabaseTransactionTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
package com.softwareverde.database.transaction;
1+
package com.softwareverde.database.transaction.jdbc;
22

33
import com.softwareverde.database.Database;
44
import com.softwareverde.database.DatabaseConnection;
55
import com.softwareverde.database.DatabaseException;
66
import com.softwareverde.database.memory.mysql.MysqlMemoryDatabase;
77
import com.softwareverde.database.query.Query;
88
import com.softwareverde.database.row.Row;
9+
import com.softwareverde.database.transaction.DatabaseTransaction;
10+
import com.softwareverde.database.transaction.jdbc.DatabaseRunnable;
911
import com.softwareverde.util.Container;
1012
import org.junit.After;
1113
import org.junit.Assert;

0 commit comments

Comments
 (0)