CREATE TABLE iceberg.tmp.repro_wide_tbl_2 (
col_001 bigint,
col_002 varchar,
col_003 varchar,
col_004 bigint,
col_005 varchar,
col_006 bigint,
col_007 bigint,
col_008 bigint,
col_009 bigint,
col_010 bigint,
col_011 bigint,
col_012 timestamp(6) with time zone,
col_013 varchar,
col_014 timestamp(6) with time zone,
col_015 timestamp(6) with time zone,
col_016 timestamp(6) with time zone,
col_017 timestamp(6) with time zone,
col_018 timestamp(6) with time zone,
col_019 timestamp(6) with time zone,
col_020 integer,
col_021 varchar,
col_022 varchar,
col_023 varchar,
col_024 integer,
col_025 integer,
col_026 varchar,
col_027 varchar,
col_028 varchar,
col_029 bigint,
col_030 varchar,
col_031 bigint,
col_032 bigint,
col_033 bigint,
col_034 varchar,
col_035 varchar,
col_036 varchar,
col_037 varchar,
col_038 varchar,
col_039 decimal(13, 2),
col_040 decimal(13, 2),
col_041 decimal(13, 2),
col_042 decimal(13, 2),
col_043 decimal(15, 4),
col_044 double,
col_045 decimal(13, 2),
col_046 decimal(13, 2),
col_047 decimal(13, 2),
col_048 decimal(13, 2),
col_049 decimal(13, 2),
col_050 decimal(13, 2),
col_051 decimal(13, 2),
col_052 decimal(13, 2),
col_053 decimal(13, 2),
col_054 decimal(13, 2),
col_055 decimal(13, 2),
col_056 decimal(13, 2),
col_057 decimal(13, 2),
col_058 decimal(13, 2),
col_059 decimal(13, 2),
col_060 decimal(13, 2),
col_061 decimal(13, 2),
col_062 decimal(13, 2),
col_063 decimal(13, 2),
col_064 decimal(13, 2),
col_065 decimal(13, 2),
col_066 decimal(13, 2),
col_067 decimal(13, 2),
col_068 decimal(13, 2),
col_069 decimal(13, 2),
col_070 decimal(13, 2),
col_071 boolean,
col_072 varchar,
col_073 decimal(13, 2),
col_074 decimal(13, 2),
col_075 decimal(13, 2),
col_076 varchar,
col_077 decimal(13, 2),
col_078 decimal(13, 2),
col_079 decimal(13, 2),
col_080 decimal(13, 2),
col_081 decimal(13, 2),
col_082 decimal(13, 2),
col_083 decimal(13, 2),
col_084 decimal(13, 2),
col_085 decimal(13, 2),
col_086 varchar,
col_087 varchar,
col_088 varchar,
col_089 varchar,
col_090 bigint,
col_091 bigint,
col_092 decimal(13, 2),
col_093 varchar,
col_094 varchar,
col_095 varchar,
col_096 decimal(13, 2),
col_097 decimal(13, 2),
col_098 bigint,
col_099 decimal(13, 2),
col_100 decimal(13, 2),
col_101 decimal(13, 2),
col_102 decimal(13, 2),
col_103 decimal(13, 2),
col_104 decimal(13, 2),
col_105 varchar,
col_106 decimal(13, 2),
col_107 varchar,
col_108 varchar,
col_109 decimal(13, 2),
col_110 decimal(13, 2),
col_111 decimal(13, 2),
col_112 varchar,
col_113 decimal(13, 2),
col_114 decimal(13, 2),
col_115 decimal(13, 2),
col_116 decimal(13, 2),
col_117 varchar,
col_118 decimal(13, 2),
col_119 decimal(13, 2),
col_120 decimal(13, 2),
col_121 varchar,
col_122 varchar,
col_123 varchar,
col_124 decimal(13, 3),
col_125 decimal(13, 3),
col_126 varchar,
col_127 bigint,
col_128 varchar,
col_129 varchar,
col_130 decimal(13, 2),
col_131 varchar,
col_132 varchar,
col_133 varchar,
col_134 decimal(13, 2),
col_135 decimal(13, 2),
col_136 decimal(13, 2),
col_137 decimal(13, 2),
col_138 decimal(13, 2),
col_139 decimal(13, 2),
col_140 decimal(13, 2),
col_141 double,
col_142 decimal(13, 2),
col_143 decimal(13, 2),
col_144 decimal(13, 2),
col_145 varchar,
col_146 varchar,
col_147 decimal(13, 2),
col_148 decimal(13, 2),
col_149 decimal(13, 2),
col_150 decimal(13, 2),
col_151 decimal(13, 2),
col_152 decimal(13, 2),
col_153 decimal(13, 2),
col_154 decimal(13, 2),
col_155 timestamp(6) with time zone,
col_156 bigint,
col_157 timestamp(6) with time zone
)
WITH (
format = 'PARQUET',
format_version = 2
);
Trino version
482
Please describe the bug
Summary
SELECT * FROM "<table>$partitions"(or any projection that includes thedatacolumn) on an Iceberg table with ~120 columns fails on Trino 482 withQUERY_EXCEEDED_COMPILER_LIMIT/MethodTooLargeException. The same query on the same table succeeds on Trino 481.Environment
Steps to reproduce
CREATE TABLE (fails on 482)
Expected behavior
The query compiles and runs, as it does on Trino 481 (zero rows for an empty table, or one row with the
datastats for a populated one).Actual behavior on 482
Worker-side stack trace (truncated):
Workarounds that succeed on 482: selecting only the scalar columns (
record_count,file_count,total_size), or dereferencing a few fields ofdata(data.col_003.min).Observations
The failure depends on the type mix of the stats row, not the raw column count. On the same 482 cluster,
SELECT dataon the$partitionstable of a wider table (157 columns) succeeds. The difference:dataarraycolumns excluded)timestamp(6) with time zonevarchardecimal(p<=18),bigint, ...)The passing table is dominated by
decimal(13,2)/bigint(singlelongper value, compact codegen), while the failing table carries moretimestamp(6) with time zone(LongTimestampWithTimeZone, 128-bit object type) andvarcharmin/max fields, which generate much bulkier bytecode. This suggests thepartialRowConstructorsplit introduced for large row constructors chunks by field count rather than by estimated bytecode size, so a chunk of heavyweight fields can still exceed the JVM 64KB method limit. Since 481 handles the identical schema, something in 482 changed the generated-code size or the split boundaries.CREATE TABLE for the 157-column table that passes on 482 (counter-example)