aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorJames Ahlborn <jtahlborn@yahoo.com>2015-06-17 02:20:58 +0000
committerJames Ahlborn <jtahlborn@yahoo.com>2015-06-17 02:20:58 +0000
commitb521c2b020a5afa4dbd8517c554cb022a66dde2f (patch)
tree72d4b318a48598245fa77ec87ce7e820439b2d36 /src/main
parentc43233278ea5a070889b36a3265c53aba5a4fc22 (diff)
downloadjackcess-b521c2b020a5afa4dbd8517c554cb022a66dde2f.tar.gz
jackcess-b521c2b020a5afa4dbd8517c554cb022a66dde2f.zip
handle reading null calculated values, fixes #125
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@949 f203690c-595d-4dc9-a70b-905162fa7fd2
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/healthmarketscience/jackcess/impl/CalculatedColumnUtil.java14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/CalculatedColumnUtil.java b/src/main/java/com/healthmarketscience/jackcess/impl/CalculatedColumnUtil.java
index 2b7395a..f3fdc21 100644
--- a/src/main/java/com/healthmarketscience/jackcess/impl/CalculatedColumnUtil.java
+++ b/src/main/java/com/healthmarketscience/jackcess/impl/CalculatedColumnUtil.java
@@ -139,7 +139,12 @@ class CalculatedColumnUtil
@Override
public Object read(byte[] data, ByteOrder order) throws IOException {
- return super.read(unwrapCalculatedValue(data), order);
+ data = unwrapCalculatedValue(data);
+ if((data.length == 0) && !getType().isVariableLength()) {
+ // apparently "null" values can be written as actual data
+ return null;
+ }
+ return super.read(data, order);
}
@Override
@@ -173,6 +178,9 @@ class CalculatedColumnUtil
@Override
public Object read(byte[] data, ByteOrder order) throws IOException {
data = unwrapCalculatedValue(data);
+ if(data.length == 0) {
+ return Boolean.FALSE;
+ }
return ((data[0] != 0) ? Boolean.TRUE : Boolean.FALSE);
}
@@ -266,6 +274,10 @@ class CalculatedColumnUtil
@Override
public Object read(byte[] data, ByteOrder order) throws IOException {
data = unwrapCalculatedValue(data);
+ if(data.length == 0) {
+ // apparently "null" values can be written as actual data
+ return null;
+ }
return readCalcNumericValue(ByteBuffer.wrap(data).order(order));
}