[
https://issues.apache.org/jira/browse/IGNITE-19066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17874887#comment-17874887
]
Andrey Mashenkov commented on IGNITE-19066:
-------------------------------------------
Seems, this ticket is no longer valid after IGNITE-19130.
> Sql. Investigate why there is more than one instance of default value
> placeholder.
> ----------------------------------------------------------------------------------
>
> Key: IGNITE-19066
> URL: https://issues.apache.org/jira/browse/IGNITE-19066
> Project: Ignite
> Issue Type: Improvement
> Components: sql
> Reporter: Maksim Zhuravkov
> Priority: Minor
> Labels: calcite3-required, ignite-3
> Fix For: 3.0.0-beta2
>
>
> Investigate why there is more than value of default value placeholder even
> though Default value placeholder implements readResolve method and it is uses
> java serialization.
> Reproducer:
> Update RexImpTable to use the following code for placeholders.
> {code:java}
> private static class Placeholder {
> static final Object DEFAULT_VALUE = DefaultValuePlaceholder.VALUE;
> static final Object UNSPECIFIED_VALUE =
> UnspecifiedValuePlaceholder.VALUE;
> }
> public static void ensurePlaceholderRemoved(Object value) {
> if (value instanceof DefaultValuePlaceholder && value !=
> Placeholder.DEFAULT_VALUE) {
> throw new AssertionError("Unexpected DEFAULT value placeholder: "
> + value + ". Expected: " + Placeholder.DEFAULT_VALUE);
> }
> }
> private static final class DefaultValuePlaceholder implements
> Serializable {
> private static final DefaultValuePlaceholder VALUE = new
> DefaultValuePlaceholder();
> private static final long serialVersionUID = -978388731876609995L;
> private Object readResolve() {
> return VALUE;
> }
> public String toString() {
> return "DEFAULT#" + hashCode();
> }
> }
> private static final class UnspecifiedValuePlaceholder implements
> Serializable {
> private static final UnspecifiedValuePlaceholder VALUE = new
> UnspecifiedValuePlaceholder();
> private static final long serialVersionUID = 3312208611999510012L;
> private Object readResolve() {
> return VALUE;
> }
> public String toString() {
> return "<UNSPECIFIED_VALUE>";
> }
> }
> {code}
> Update IgniteTableImpl convertRow:
> {code:java}
> Object val = hnd.get(colDesc.logicalIndex(), row);
> + if (val != null) {
> + RexImpTable.ensurePlaceholderRemoved(val);
> + }
> {code}
> Error:
> {code:java}
> Caused by: java.lang.AssertionError: Unexpected DEFAULT value placeholder:
> DEFAULT#238068340. Expected: DEFAULT#1599919888
> at
> org.apache.ignite.internal.sql.engine.exec.exp.RexImpTable.ensurePlaceholderRemoved(RexImpTable.java:2588)
> at
> org.apache.ignite.internal.sql.engine.schema.IgniteTableImpl.convertRow(IgniteTableImpl.java:514)
> at
> org.apache.ignite.internal.sql.engine.schema.IgniteTableImpl.insertAll(IgniteTableImpl.java:390)
> at
> org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.flushTuples(ModifyNode.java:218)
> at
> org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.tryEnd(ModifyNode.java:187)
> at
> org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.end(ModifyNode.java:160)
> at
> org.apache.ignite.internal.sql.engine.exec.rel.Inbox.pushUnordered(Inbox.java:333)
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)