[ https://issues.apache.org/jira/browse/ASTERIXDB-1421?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Xikui Wang updated ASTERIXDB-1421: ---------------------------------- Description: When constructing record using data output, if assign not-null (non-optional) attribute null value(through code manipulating data output), for other data type other than string, the record will not be stored to db. For string type and derived type(user defined datatype), the record will be stored, and will cause problem when trying to read record. For the string case, UTF8Util will print the null value as \u0000, however, when there are some non-null attributes result, it will cause exception at L60 UTF8StringUtil.java For the derived data type case, the read record will cause exception at {quote} Caused by: java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException at org.apache.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:266) at org.apache.asterix.dataflow.data.nontagged.printers.adm.ARecordPrinterFactory$1.print(ARecordPrinterFactory.java:65) at org.apache.hyracks.algebricks.runtime.writers.PrinterBasedWriterFactory$1.printTuple(PrinterBasedWriterFactory.java:66) at org.apache.hyracks.algebricks.runtime.serializer.ResultSerializerFactoryProvider$1$1.appendTuple(ResultSerializerFactoryProvider.java:64) at org.apache.hyracks.dataflow.std.result.ResultWriterOperatorDescriptor$1.nextFrame(ResultWriterOperatorDescriptor.java:101) at org.apache.hyracks.dataflow.common.comm.io.AbstractFrameAppender.write(AbstractFrameAppender.java:93) at org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushAndReset(AbstractOneInputOneOutputOneFramePushRuntime.java:63) at org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushIfNotFailed(AbstractOneInputOneOutputOneFramePushRuntime.java:69) at org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:55) at org.apache.hyracks.algebricks.runtime.operators.std.StreamLimitRuntimeFactory$1.close(StreamLimitRuntimeFactory.java:136) at org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:57) at org.apache.hyracks.algebricks.runtime.operators.meta.AlgebricksMetaOperatorDescriptor$2.close(AlgebricksMetaOperatorDescriptor.java:153) at org.apache.hyracks.control.nc.Task.pushFrames(Task.java:356) ... 4 more Caused by: java.lang.IndexOutOfBoundsException at org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream.write(ByteArrayAccessibleOutputStream.java:73) at java.io.DataOutputStream.write(DataOutputStream.java:107) at org.apache.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:225) ... 16 more {quote} was: When constructing record using data output, if assign not-null (non-optional) attribute null value(through code manipulating data output), for other data type other than string, the record will not be stored to db. For string type, and derived type, the record will be stored, and will cause problem when trying to read record. For the string case, UTF8Util will print the null value as \u0000, however, when there are some non-null attributes result, it will cause exception at L60 UTF8StringUtil.java For the derived data type case, the read record will cause exception at {quote} Caused by: java.lang.IllegalStateException: java.lang.IndexOutOfBoundsException at org.apache.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:266) at org.apache.asterix.dataflow.data.nontagged.printers.adm.ARecordPrinterFactory$1.print(ARecordPrinterFactory.java:65) at org.apache.hyracks.algebricks.runtime.writers.PrinterBasedWriterFactory$1.printTuple(PrinterBasedWriterFactory.java:66) at org.apache.hyracks.algebricks.runtime.serializer.ResultSerializerFactoryProvider$1$1.appendTuple(ResultSerializerFactoryProvider.java:64) at org.apache.hyracks.dataflow.std.result.ResultWriterOperatorDescriptor$1.nextFrame(ResultWriterOperatorDescriptor.java:101) at org.apache.hyracks.dataflow.common.comm.io.AbstractFrameAppender.write(AbstractFrameAppender.java:93) at org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushAndReset(AbstractOneInputOneOutputOneFramePushRuntime.java:63) at org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushIfNotFailed(AbstractOneInputOneOutputOneFramePushRuntime.java:69) at org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:55) at org.apache.hyracks.algebricks.runtime.operators.std.StreamLimitRuntimeFactory$1.close(StreamLimitRuntimeFactory.java:136) at org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:57) at org.apache.hyracks.algebricks.runtime.operators.meta.AlgebricksMetaOperatorDescriptor$2.close(AlgebricksMetaOperatorDescriptor.java:153) at org.apache.hyracks.control.nc.Task.pushFrames(Task.java:356) ... 4 more Caused by: java.lang.IndexOutOfBoundsException at org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream.write(ByteArrayAccessibleOutputStream.java:73) at java.io.DataOutputStream.write(DataOutputStream.java:107) at org.apache.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:225) ... 16 more {quote} > Not-null attribute inserting problem. > ------------------------------------- > > Key: ASTERIXDB-1421 > URL: https://issues.apache.org/jira/browse/ASTERIXDB-1421 > Project: Apache AsterixDB > Issue Type: Bug > Reporter: Xikui Wang > Priority: Minor > > When constructing record using data output, if assign not-null (non-optional) > attribute null value(through code manipulating data output), for other data > type other than string, the record will not be stored to db. For string type > and derived type(user defined datatype), the record will be stored, and will > cause problem when trying to read record. > For the string case, UTF8Util will print the null value as \u0000, however, > when there are some non-null attributes result, it will cause exception at > L60 UTF8StringUtil.java > For the derived data type case, the read record will cause exception at > {quote} > Caused by: java.lang.IllegalStateException: > java.lang.IndexOutOfBoundsException > at > org.apache.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:266) > at > org.apache.asterix.dataflow.data.nontagged.printers.adm.ARecordPrinterFactory$1.print(ARecordPrinterFactory.java:65) > at > org.apache.hyracks.algebricks.runtime.writers.PrinterBasedWriterFactory$1.printTuple(PrinterBasedWriterFactory.java:66) > at > org.apache.hyracks.algebricks.runtime.serializer.ResultSerializerFactoryProvider$1$1.appendTuple(ResultSerializerFactoryProvider.java:64) > at > org.apache.hyracks.dataflow.std.result.ResultWriterOperatorDescriptor$1.nextFrame(ResultWriterOperatorDescriptor.java:101) > at > org.apache.hyracks.dataflow.common.comm.io.AbstractFrameAppender.write(AbstractFrameAppender.java:93) > at > org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushAndReset(AbstractOneInputOneOutputOneFramePushRuntime.java:63) > at > org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.flushIfNotFailed(AbstractOneInputOneOutputOneFramePushRuntime.java:69) > at > org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:55) > at > org.apache.hyracks.algebricks.runtime.operators.std.StreamLimitRuntimeFactory$1.close(StreamLimitRuntimeFactory.java:136) > at > org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime.close(AbstractOneInputOneOutputOneFramePushRuntime.java:57) > at > org.apache.hyracks.algebricks.runtime.operators.meta.AlgebricksMetaOperatorDescriptor$2.close(AlgebricksMetaOperatorDescriptor.java:153) > at org.apache.hyracks.control.nc.Task.pushFrames(Task.java:356) > ... 4 more > Caused by: java.lang.IndexOutOfBoundsException > at > org.apache.hyracks.data.std.util.ByteArrayAccessibleOutputStream.write(ByteArrayAccessibleOutputStream.java:73) > at java.io.DataOutputStream.write(DataOutputStream.java:107) > at > org.apache.asterix.om.pointables.ARecordVisitablePointable.set(ARecordVisitablePointable.java:225) > ... 16 more > {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)