[ 
https://issues.apache.org/jira/browse/IMPALA-14335?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pain Sun updated IMPALA-14335:
------------------------------
    Description: 
When using the MERGE operation in an Iceberg table, an error will occur if the 
source table contains window functions.

MERGE INTO test111.icebergtest t USING (
    select
        updatetime_day,
        mainsellernick,
        code,
        num_channelid,
        tid
    from
        (
            select
                updatetime_day,
                mainsellernick,
                code,
                num_channelid,
                tid,
                row_number() over(
                    partition by updatetime_day,
                    mainsellernick,
                    code
                    order by
                        updatetime desc
                ) as rk
            from
                (
                    select
                        20250709 as updatetime_day,
                        'sjztest' as mainsellernick,
                        'code1' as code,
                        'tid1' as tid,
                        6 as num_channelid,
                        cast('2025-08-21 00:00:00' as timestamp) as updatetime
                    union
                    all
                    select
                        20250709 as updatetime_day,
                        'sjztest' as mainsellernick,
                        'code1' as code,
                        'tid1' as tid,
                        6 as num_channelid,
                        cast('2025-08-22 00:00:00' as timestamp) as updatetime
                    union
                    all
                    select
                        20250709 as updatetime_day,
                        'sjztest' as mainsellernick,
                        'code3' as code,
                        'tid3' as tid,
                        6 as num_channelid,
                        cast('2025-08-21 00:00:00' as timestamp) as updatetime
                    union
                    all
                    select
                        20250709 as updatetime_day,
                        'sjztest' as mainsellernick,
                        'code5' as code,
                        'tid5' as tid,
                        6 as num_channelid,
                        cast('2025-08-21 00:00:00' as timestamp) as updatetime
                ) as a
        ) as a
    where
        rk = 1
) s ON t.updatetime_day = s.updatetime_day
and t.mainsellernick = s.mainsellernick
and t.code = s.code
WHEN MATCHED THEN
UPDATE
SET
    t.tid = s.tid,
    t.num_channelid = s.num_channelid
    WHEN NOT MATCHED THEN
INSERT
    (
        updatetime_day,
        mainsellernick,
        code,
        tid,
        num_channelid
    )
VALUES
    (
        s.updatetime_day,
        s.mainsellernick,
        s.code,
        s.tid,
        s.num_channelid
    );

IllegalStateException: Illegal reference to non-materialized tuple: tid=3

I0821 14:02:16.392138 134791 jni-util.cc:321] 
a844461a0a7aa168:55012b5200000000] java.lang.IllegalStateException: Illegal 
reference to non-materialized tuple: tid=3
        at 
com.google.common.base.Preconditions.checkState(Preconditions.java:512)
        at 
org.apache.impala.analysis.TupleIsNullPredicate.toThrift(TupleIsNullPredicate.java:94)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:905)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at 
org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at 
org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at 
org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at 
org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
        at org.apache.impala.analysis.Expr.treeToThrift(Expr.java:883)
        at org.apache.impala.analysis.Expr.treeToThrift(Expr.java:869)
        at 
org.apache.impala.planner.IcebergMergeNode.toThrift(IcebergMergeNode.java:79)
        at org.apache.impala.planner.PlanNode.toThrift(PlanNode.java:878)
        at 
org.apache.impala.planner.PlanNode.treeToThriftHelper(PlanNode.java:585)
        at org.apache.impala.planner.PlanNode.treeToThrift(PlanNode.java:516)
        at 
org.apache.impala.planner.PlanFragment.toThrift(PlanFragment.java:638)
        at 
org.apache.impala.service.Frontend.createPlanExecInfo(Frontend.java:1958)
        at 
org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1988)
        at 
org.apache.impala.service.Frontend.getPlannedExecRequest(Frontend.java:3015)
        at 
org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:2773)
        at 
org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:2291)
        at 
org.apache.impala.service.Frontend.createExecRequest(Frontend.java:2032)
        at 
org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:171)
I0821 14:02:16.392177 134791 status.cc:129] a844461a0a7aa168:55012b5200000000] 
IllegalStateException: Illegal reference to non-materialized tuple: tid=3
    @          0x10a31d4
    @          0x1c1a17a
    @          0x17ce990
    @          0x24ab806
    @          0x24aba44
    @          0x19185ca
    @          0x19254ba
    @          0x18a1495
    @          0x1a1db81
    @          0x19e8653
    @           0xf8b7fb
    @          0x14a8a42
    @          0x1cff659
    @          0x264d407
    @     0x1503959ce1ca
    @     0x1503928778d3

  was:
When using the MERGE operation in an Iceberg table, an error will occur if the 
source table contains window functions.




MERGE INTO test111.icebergtest t USING (
    select
        updatetime_day,
        mainsellernick,
        code,
        num_channelid,
        tid
    from
        (
            select
                updatetime_day,
                mainsellernick,
                code,
                num_channelid,
                tid,
                row_number() over(
                    partition by updatetime_day,
                    mainsellernick,
                    code,
                    tid
                    order by
                        updatetime desc
                ) as rk
            from
                (
                    select
                        20250709 as updatetime_day,
                        'sjztest' as mainsellernick,
                        'code1' as code,
                        'tid1' as tid,
                        6 as num_channelid,
                        cast('2025-08-21 00:00:00' as timestamp) as updatetime
                    union
                    all
                    select
                        20250709 as updatetime_day,
                        'sjztest' as mainsellernick,
                        'code1' as code,
                        'tid1' as tid,
                        6 as num_channelid,
                        cast('2025-08-22 00:00:00' as timestamp) as updatetime
                    union
                    all
                    select
                        20250709 as updatetime_day,
                        'sjztest' as mainsellernick,
                        'code3' as code,
                        'tid3' as tid,
                        6 as num_channelid,
                        cast('2025-08-21 00:00:00' as timestamp) as updatetime
                    union
                    all
                    select
                        20250709 as updatetime_day,
                        'sjztest' as mainsellernick,
                        'code5' as code,
                        'tid5' as tid,
                        6 as num_channelid,
                        cast('2025-08-21 00:00:00' as timestamp) as updatetime
                ) as a
        ) as a
    where
        rk = 1
) s ON t.updatetime_day = s.updatetime_day
and t.mainsellernick = s.mainsellernick
and t.code = s.code
WHEN MATCHED THEN
UPDATE
SET
    t.tid = s.tid,
    t.num_channelid = s.num_channelid
    WHEN NOT MATCHED THEN
INSERT
    (
        updatetime_day,
        mainsellernick,
        code,
        tid,
        num_channelid
    )
VALUES
    (
        s.updatetime_day,
        s.mainsellernick,
        s.code,
        s.tid,
        s.num_channelid
    );

IllegalStateException: Illegal reference to non-materialized tuple: tid=3

I0821 14:02:16.392138 134791 jni-util.cc:321] 
a844461a0a7aa168:55012b5200000000] java.lang.IllegalStateException: Illegal 
reference to non-materialized tuple: tid=3
        at 
com.google.common.base.Preconditions.checkState(Preconditions.java:512)
        at 
org.apache.impala.analysis.TupleIsNullPredicate.toThrift(TupleIsNullPredicate.java:94)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:905)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at 
org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at 
org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at 
org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
        at 
org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
        at org.apache.impala.analysis.Expr.treeToThrift(Expr.java:883)
        at org.apache.impala.analysis.Expr.treeToThrift(Expr.java:869)
        at 
org.apache.impala.planner.IcebergMergeNode.toThrift(IcebergMergeNode.java:79)
        at org.apache.impala.planner.PlanNode.toThrift(PlanNode.java:878)
        at 
org.apache.impala.planner.PlanNode.treeToThriftHelper(PlanNode.java:585)
        at org.apache.impala.planner.PlanNode.treeToThrift(PlanNode.java:516)
        at 
org.apache.impala.planner.PlanFragment.toThrift(PlanFragment.java:638)
        at 
org.apache.impala.service.Frontend.createPlanExecInfo(Frontend.java:1958)
        at 
org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1988)
        at 
org.apache.impala.service.Frontend.getPlannedExecRequest(Frontend.java:3015)
        at 
org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:2773)
        at 
org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:2291)
        at 
org.apache.impala.service.Frontend.createExecRequest(Frontend.java:2032)
        at 
org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:171)
I0821 14:02:16.392177 134791 status.cc:129] a844461a0a7aa168:55012b5200000000] 
IllegalStateException: Illegal reference to non-materialized tuple: tid=3
    @          0x10a31d4
    @          0x1c1a17a
    @          0x17ce990
    @          0x24ab806
    @          0x24aba44
    @          0x19185ca
    @          0x19254ba
    @          0x18a1495
    @          0x1a1db81
    @          0x19e8653
    @           0xf8b7fb
    @          0x14a8a42
    @          0x1cff659
    @          0x264d407
    @     0x1503959ce1ca
    @     0x1503928778d3


> Error when using merge into iceberg table:Illegal reference to 
> non-materialized tuple: tid=2
> --------------------------------------------------------------------------------------------
>
>                 Key: IMPALA-14335
>                 URL: https://issues.apache.org/jira/browse/IMPALA-14335
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Backend
>    Affects Versions: Impala 4.5.0
>         Environment: rocky linux 8
>            Reporter: Pain Sun
>            Priority: Major
>
> When using the MERGE operation in an Iceberg table, an error will occur if 
> the source table contains window functions.
> MERGE INTO test111.icebergtest t USING (
>     select
>         updatetime_day,
>         mainsellernick,
>         code,
>         num_channelid,
>         tid
>     from
>         (
>             select
>                 updatetime_day,
>                 mainsellernick,
>                 code,
>                 num_channelid,
>                 tid,
>                 row_number() over(
>                     partition by updatetime_day,
>                     mainsellernick,
>                     code
>                     order by
>                         updatetime desc
>                 ) as rk
>             from
>                 (
>                     select
>                         20250709 as updatetime_day,
>                         'sjztest' as mainsellernick,
>                         'code1' as code,
>                         'tid1' as tid,
>                         6 as num_channelid,
>                         cast('2025-08-21 00:00:00' as timestamp) as updatetime
>                     union
>                     all
>                     select
>                         20250709 as updatetime_day,
>                         'sjztest' as mainsellernick,
>                         'code1' as code,
>                         'tid1' as tid,
>                         6 as num_channelid,
>                         cast('2025-08-22 00:00:00' as timestamp) as updatetime
>                     union
>                     all
>                     select
>                         20250709 as updatetime_day,
>                         'sjztest' as mainsellernick,
>                         'code3' as code,
>                         'tid3' as tid,
>                         6 as num_channelid,
>                         cast('2025-08-21 00:00:00' as timestamp) as updatetime
>                     union
>                     all
>                     select
>                         20250709 as updatetime_day,
>                         'sjztest' as mainsellernick,
>                         'code5' as code,
>                         'tid5' as tid,
>                         6 as num_channelid,
>                         cast('2025-08-21 00:00:00' as timestamp) as updatetime
>                 ) as a
>         ) as a
>     where
>         rk = 1
> ) s ON t.updatetime_day = s.updatetime_day
> and t.mainsellernick = s.mainsellernick
> and t.code = s.code
> WHEN MATCHED THEN
> UPDATE
> SET
>     t.tid = s.tid,
>     t.num_channelid = s.num_channelid
>     WHEN NOT MATCHED THEN
> INSERT
>     (
>         updatetime_day,
>         mainsellernick,
>         code,
>         tid,
>         num_channelid
>     )
> VALUES
>     (
>         s.updatetime_day,
>         s.mainsellernick,
>         s.code,
>         s.tid,
>         s.num_channelid
>     );
> IllegalStateException: Illegal reference to non-materialized tuple: tid=3
> I0821 14:02:16.392138 134791 jni-util.cc:321] 
> a844461a0a7aa168:55012b5200000000] java.lang.IllegalStateException: Illegal 
> reference to non-materialized tuple: tid=3
>         at 
> com.google.common.base.Preconditions.checkState(Preconditions.java:512)
>         at 
> org.apache.impala.analysis.TupleIsNullPredicate.toThrift(TupleIsNullPredicate.java:94)
>         at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:905)
>         at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
>         at 
> org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
>         at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
>         at 
> org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
>         at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
>         at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
>         at 
> org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
>         at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
>         at org.apache.impala.analysis.Expr.treeToThriftHelper(Expr.java:908)
>         at 
> org.apache.impala.analysis.CastExpr.treeToThriftHelper(CastExpr.java:273)
>         at org.apache.impala.analysis.Expr.treeToThrift(Expr.java:883)
>         at org.apache.impala.analysis.Expr.treeToThrift(Expr.java:869)
>         at 
> org.apache.impala.planner.IcebergMergeNode.toThrift(IcebergMergeNode.java:79)
>         at org.apache.impala.planner.PlanNode.toThrift(PlanNode.java:878)
>         at 
> org.apache.impala.planner.PlanNode.treeToThriftHelper(PlanNode.java:585)
>         at org.apache.impala.planner.PlanNode.treeToThrift(PlanNode.java:516)
>         at 
> org.apache.impala.planner.PlanFragment.toThrift(PlanFragment.java:638)
>         at 
> org.apache.impala.service.Frontend.createPlanExecInfo(Frontend.java:1958)
>         at 
> org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1988)
>         at 
> org.apache.impala.service.Frontend.getPlannedExecRequest(Frontend.java:3015)
>         at 
> org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:2773)
>         at 
> org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:2291)
>         at 
> org.apache.impala.service.Frontend.createExecRequest(Frontend.java:2032)
>         at 
> org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:171)
> I0821 14:02:16.392177 134791 status.cc:129] 
> a844461a0a7aa168:55012b5200000000] IllegalStateException: Illegal reference 
> to non-materialized tuple: tid=3
>     @          0x10a31d4
>     @          0x1c1a17a
>     @          0x17ce990
>     @          0x24ab806
>     @          0x24aba44
>     @          0x19185ca
>     @          0x19254ba
>     @          0x18a1495
>     @          0x1a1db81
>     @          0x19e8653
>     @           0xf8b7fb
>     @          0x14a8a42
>     @          0x1cff659
>     @          0x264d407
>     @     0x1503959ce1ca
>     @     0x1503928778d3



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to