@@ -904,36 +904,36 @@ func Test_TooManyColumns(t *testing.T) {
904904 name : "with_numRowGroups_2_shards" ,
905905 withNumRowGroups : true ,
906906 description : "Uses shardedTSDBRowReaders path when numRowGroups is set, creates 2 shards" ,
907- maxNumColumns : 1000 , // 998 label columns + 2 system columns
908- uniqueLabelNames : 1200 , // Exceeds maxNumColumns to trigger sharding
909- labelsPerSeries : 200 , // Each series will have 200 unique labels (plus __name__)
907+ maxNumColumns : 100 , // 98 label columns + 2 system columns
908+ uniqueLabelNames : 150 , // Exceeds maxNumColumns to trigger sharding
909+ labelsPerSeries : 50 , // Each series will have 50 unique labels (plus __name__)
910910 minShards : 2 ,
911911 },
912912 {
913913 name : "without_numRowGroups_2_shards" ,
914914 withNumRowGroups : false ,
915915 description : "Uses singleTSDBRowReader path when numRowGroups is not set, creates 2 shards" ,
916- maxNumColumns : 1000 , // 998 label columns + 2 system columns
917- uniqueLabelNames : 1200 , // Exceeds maxNumColumns to trigger sharding
918- labelsPerSeries : 200 , // Each series will have 200 unique labels (plus __name__)
916+ maxNumColumns : 100 , // 98 label columns + 2 system columns
917+ uniqueLabelNames : 150 , // Exceeds maxNumColumns to trigger sharding
918+ labelsPerSeries : 50 , // Each series will have 50 unique labels (plus __name__)
919919 minShards : 2 ,
920920 },
921921 {
922922 name : "with_numRowGroups_3_shards" ,
923923 withNumRowGroups : true ,
924924 description : "Uses shardedTSDBRowReaders path when numRowGroups is set, creates 3+ shards" ,
925- maxNumColumns : 1000 , // 998 label columns + 2 system columns
926- uniqueLabelNames : 2500 , // Will require at least 3 shards (2500 / 998 ≈ 2.5 )
927- labelsPerSeries : 300 , // Each series will have 300 unique labels (plus __name__)
925+ maxNumColumns : 100 , // 98 label columns + 2 system columns
926+ uniqueLabelNames : 250 , // Will require at least 3 shards (250 / 98 ≈ 2.55 )
927+ labelsPerSeries : 80 , // Each series will have 80 unique labels (plus __name__)
928928 minShards : 3 ,
929929 },
930930 {
931931 name : "without_numRowGroups_3_shards" ,
932932 withNumRowGroups : false ,
933933 description : "Uses singleTSDBRowReader path when numRowGroups is not set, creates 3+ shards" ,
934- maxNumColumns : 1000 , // 998 label columns + 2 system columns
935- uniqueLabelNames : 2500 , // Will require at least 3 shards (2500 / 998 ≈ 2.5 )
936- labelsPerSeries : 300 , // Each series will have 300 unique labels (plus __name__)
934+ maxNumColumns : 100 , // 98 label columns + 2 system columns
935+ uniqueLabelNames : 250 , // Will require at least 3 shards (250 / 98 ≈ 2.55 )
936+ labelsPerSeries : 80 , // Each series will have 80 unique labels (plus __name__)
937937 minShards : 3 ,
938938 },
939939 }
@@ -1038,8 +1038,18 @@ func rowToSeries(t *testing.T, s *parquet.Schema, dec *schema.PrometheusParquetC
10381038 col := cols [colIdx ][0 ]
10391039 label , ok := schema .ExtractLabelFromColumn (col )
10401040 if ok {
1041+ // Only include label columns that have actual values (not null/empty)
1042+ // This matches what's stored in s_col_indexes - only labels present in the series
1043+ if colVal .IsNull () {
1044+ continue
1045+ }
10411046 b .Add (label , colVal .String ())
1042- foundLblsIdxs = append (foundLblsIdxs , colIdx )
1047+ // Look up the ColumnIndex from the schema (same as when writing)
1048+ lc , ok := s .Lookup (col )
1049+ if ! ok {
1050+ return nil , nil , fmt .Errorf ("column %s not found in schema" , col )
1051+ }
1052+ foundLblsIdxs = append (foundLblsIdxs , lc .ColumnIndex )
10431053 }
10441054
10451055 if schema .IsDataColumn (col ) && dec != nil {
0 commit comments