Skip to content

fix: Support merging HUGEINT value filters - #18626

Open
rui-mo wants to merge 1 commit into
facebookincubator:mainfrom
rui-mo:wip_merge
Open

fix: Support merging HUGEINT value filters#18626
rui-mo wants to merge 1 commit into
facebookincubator:mainfrom
rui-mo:wip_merge

Conversation

@rui-mo

@rui-mo rui-mo commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Background

Long decimal dynamic filter pushdown now produces HugeintValuesUsingHashTable
filters. When a runtime dynamic filter is added to a scan column that already
has a filter, Velox merges them using Filter::mergeWith(). HUGEINT value
filters did not implement this, so dynamic filter pushdown could fail with the
below exception.

Error Source: USER
Error Code: UNSUPPORTED
Reason: Filter(HugeintValuesUsingHashTable, deterministic, no nulls): mergeWith() is not supported.
Retriable: False
Function: mergeWith

Changes

This PR:

  • Adding mergeWith() support for HugeintValuesUsingHashTable.
  • Adding mergeWith() support for HugeintRange.

Follow-up for: #18159.

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Aug 21, 2026
@netlify

netlify Bot commented Aug 21, 2026

Copy link
Copy Markdown

Deploy Preview for meta-velox canceled.

Name Link
🔨 Latest commit 83b4003
🔍 Latest deploy log https://app.netlify.com/projects/meta-velox/deploys/6a88b1b11d65800008b8824f

@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown

Selective Build Plan

Linux release with adapters is running a selective build of 537 cmake targets (out of 622 total). See the CI workflows README for what this means.

Affected targets (537)

Directly changed (270)

Target Changed Files
aggregate_companion_functions_test Filter.h
local_runner_service_test Filter.h
materialized_output_buffer_test Filter.h
materialized_partitioned_output_test Filter.h
physical_size_aggregator_test Filter.h
presto_sql_test Filter.h
spark_aggregation_fuzzer_test Filter.h
spark_expression_fuzzer_test Filter.h
velox_aggregates Filter.h
velox_aggregates_GeometryAggregateTest Filter.h
velox_aggregates_reduce_agg_bm Filter.h
velox_aggregates_simple_aggregates_bm Filter.h
velox_aggregates_string_keys_bm Filter.h
velox_aggregates_test_group0 Filter.h
velox_aggregates_test_group1 Filter.h
velox_aggregates_test_group2 Filter.h
velox_aggregates_test_group3 Filter.h
velox_aggregates_test_group4 Filter.h
velox_aggregation_fuzzer Filter.h
velox_aggregation_fuzzer_base Filter.h
velox_aggregation_fuzzer_test Filter.h
velox_aggregation_result_verifier Filter.h
velox_aggregation_runner_test Filter.h
velox_base_test Filter.h
velox_common_test Filter.h
velox_connector Filter.h
velox_connector_registry Filter.h
velox_connector_test Filter.h
velox_core Filter.h
velox_core_plan_consistency_checker_test Filter.h
velox_core_test Filter.h
velox_coverage_util Filter.h
velox_cursor Filter.h
velox_driver_test Filter.h
velox_duckdb_conversion_test Filter.h
velox_dwio_arrow_parquet_writer Filter.h
velox_dwio_arrow_parquet_writer_test Filter.h
velox_dwio_cache_test Filter.h
velox_dwio_common Filter.h
velox_dwio_common_compression Filter.h
velox_dwio_common_test Filter.h
velox_dwio_common_test_utils Filter.h
velox_dwio_dwrf_binary_stream_reader_test Filter.h
velox_dwio_dwrf_buffered_output_stream_test Filter.h
velox_dwio_dwrf_byte_rle_encoder_test Filter.h
velox_dwio_dwrf_byte_rle_test Filter.h
velox_dwio_dwrf_column_reader_test Filter.h
velox_dwio_dwrf_column_statistics_test Filter.h
velox_dwio_dwrf_common Filter.h
velox_dwio_dwrf_compression_test Filter.h
velox_dwio_dwrf_config_test Filter.h
velox_dwio_dwrf_decompression_test Filter.h
velox_dwio_dwrf_decryption_test Filter.h
velox_dwio_dwrf_dictionary_encoder_test Filter.h
velox_dwio_dwrf_dictionary_encoding_utils_test Filter.h
velox_dwio_dwrf_encryption_test Filter.h
velox_dwio_dwrf_flush_policy_test Filter.h
velox_dwio_dwrf_index_builder_test Filter.h
velox_dwio_dwrf_int_direct_test Filter.h
velox_dwio_dwrf_int_encoder_test Filter.h
velox_dwio_dwrf_layout_planner_test Filter.h
velox_dwio_dwrf_reader Filter.h
velox_dwio_dwrf_reader_base_test Filter.h
velox_dwio_dwrf_reader_test Filter.h
velox_dwio_dwrf_rle_test Filter.h
velox_dwio_dwrf_rlev1_encoder_test Filter.h
velox_dwio_dwrf_stripe_dictionary_cache_test Filter.h
velox_dwio_dwrf_stripe_reader_base_test Filter.h
velox_dwio_dwrf_stripe_stream_test Filter.h
velox_dwio_dwrf_utils Filter.h
velox_dwio_dwrf_utils_test Filter.h
velox_dwio_dwrf_writer Filter.h
velox_dwio_dwrf_writer_context_test Filter.h
velox_dwio_dwrf_writer_encoding_manager_test Filter.h
velox_dwio_dwrf_writer_sink_test Filter.h
velox_dwio_dwrf_writer_test Filter.h
velox_dwio_iceberg_reader_benchmark Filter.h
velox_dwio_iceberg_reader_benchmark_lib Filter.h
velox_dwio_native_parquet_reader Filter.h
velox_dwio_orc_column_statistics_test Filter.h
velox_dwio_orc_reader Filter.h
velox_dwio_orc_reader_filter_test Filter.h
velox_dwio_orc_reader_test Filter.h
velox_dwio_parquet_metadata_benchmark Filter.h
velox_dwio_parquet_page_reader_test Filter.h
velox_dwio_parquet_reader Filter.h
velox_dwio_parquet_reader_benchmark Filter.h
velox_dwio_parquet_reader_benchmark_lib Filter.h
velox_dwio_parquet_reader_test Filter.h
velox_dwio_parquet_table_scan_test Filter.h
velox_dwio_parquet_test_base Filter.h
velox_dwio_parquet_tpch_test Filter.h
velox_dwio_parquet_writer Filter.h
velox_dwio_parquet_writer_benchmark Filter.h
velox_dwio_text_reader Filter.h
velox_dwio_text_reader_register Filter.h
velox_dwio_text_writer Filter.h
velox_dwio_text_writer_register Filter.h
velox_dwrf_column_writer_index_test Filter.h
velox_dwrf_column_writer_stats_test Filter.h
velox_dwrf_column_writer_test Filter.h
velox_dwrf_e2e_filter_test Filter.h
velox_dwrf_e2e_reader_test Filter.h
velox_dwrf_e2e_writer_test Filter.h
velox_dwrf_float_column_writer_benchmark Filter.h
velox_dwrf_int_encoder_benchmark Filter.h
velox_dwrf_statistics_builder_utils_test Filter.h
velox_dwrf_test_utils Filter.h
velox_dwrf_writer_extended_test Filter.h
velox_dwrf_writer_flush_test Filter.h
velox_example_operator_extensibility Filter.h
velox_example_scan_orc Filter.h
velox_exchange_benchmark Filter.h
velox_exchange_fuzzer Filter.h
velox_exec Filter.h
velox_exec_SpatialJoinTest Filter.h
velox_exec_bm_duplicate_project Filter.h
velox_exec_infra_test Filter.h
velox_exec_test_group0 Filter.h
velox_exec_test_group1 Filter.h
velox_exec_test_group2 Filter.h
velox_exec_test_group3 Filter.h
velox_exec_test_group4 Filter.h
velox_exec_test_group5 Filter.h
velox_exec_test_group6 Filter.h
velox_exec_test_group7 Filter.h
velox_exec_test_group8 Filter.h
velox_exec_test_lib Filter.h
velox_exec_util_test_group0 Filter.h
velox_exec_vector_hasher_benchmark Filter.h
velox_exec_window Filter.h
velox_expression Filter.h
velox_expression_fuzzer Filter.h
velox_expression_fuzzer_test Filter.h
velox_expression_fuzzer_unit_test Filter.h
velox_expression_runner Filter.h
velox_expression_runner_test Filter.h
velox_expression_runner_unit_test Filter.h
velox_expression_test Filter.h
velox_expression_test_utility Filter.h
velox_expression_verifier Filter.h
velox_expression_verifier_unit_test Filter.h
velox_filemetadata_test Filter.h
velox_filter_benchmark Filter.h
velox_filter_project_benchmark Filter.h
velox_functions_aggregates Filter.h
velox_functions_aggregates_test Filter.h
velox_functions_aggregates_test_lib Filter.h
velox_functions_prestosql_impl Filter.h
velox_functions_spark_aggregates Filter.h
velox_functions_spark_aggregates_test Filter.h
velox_functions_spark_impl Filter.h
velox_functions_window Filter.h
velox_functions_window_test_lib Filter.h
velox_fuzzer_connector Filter.h
velox_fuzzer_connector_test Filter.h
velox_fuzzer_util Filter.h
velox_gcs_insert_test Filter.h
velox_gcs_multiendpoints_test Filter.h
velox_hash_benchmark Filter.h
velox_hash_join_build_benchmark Filter.h
velox_hash_join_left_benchmark Filter.h
velox_hash_join_list_result_benchmark Filter.h
velox_hash_join_prepare_join_table_benchmark Filter.h
velox_hash_join_right_semi_benchmark Filter.h
velox_hdfs_insert_test Filter.h
velox_hive_config Filter.h
velox_hive_connector Filter.h
velox_hive_connector_test Filter.h, HiveConnectorTest.cpp
velox_hive_iceberg_deletion_vector_test Filter.h
velox_hive_iceberg_deletion_vector_writer_test Filter.h
velox_hive_iceberg_equality_delete_test Filter.h
velox_hive_iceberg_insert_test Filter.h
velox_hive_iceberg_merge_sink_test Filter.h
velox_hive_iceberg_splitreader Filter.h
velox_hive_iceberg_test Filter.h
velox_hive_paimon_connector Filter.h
velox_hive_paimon_split Filter.h
velox_hive_paimon_split_test Filter.h
velox_hive_partition_function Filter.h
velox_hive_partition_function_benchmark Filter.h
velox_hive_writer_options_adapter_test Filter.h
velox_in_10_min_demo Filter.h
velox_join_fuzzer Filter.h
velox_key_encoder Filter.h
velox_key_encoder_test Filter.h
velox_local_runner_service_lib Filter.h
velox_local_runner_service_runner Filter.h
velox_mark_distinct_fuzzer Filter.h
velox_mark_distinct_fuzzer_lib Filter.h
velox_mark_sorted_benchmark Filter.h
velox_memory_arbitration_fuzzer Filter.h
velox_memory_test Filter.h
velox_merge_benchmark Filter.h
velox_negated_bigint_range_benchmark Filter.h
velox_negated_bytes_range_benchmark Filter.h
velox_negated_bytes_values_benchmark Filter.h
velox_negated_values_filter_benchmark Filter.h
velox_orderby_benchmark Filter.h
velox_output_transport_registry_test Filter.h
velox_parquet_e2e_filter_test Filter.h
velox_parquet_writer_sink_test Filter.h
velox_parquet_writer_test Filter.h
velox_parse_parser Filter.h
velox_parse_test Filter.h
velox_parse_utils Filter.h
velox_prefixsort_benchmark Filter.h
velox_presto_types Filter.h
velox_presto_types_fuzzer_utils Filter.h
velox_presto_types_fuzzer_utils_test Filter.h
velox_query_benchmark Filter.h
velox_query_replayer Filter.h
velox_query_trace_replayer_base Filter.h
velox_row_number_fuzzer Filter.h
velox_row_number_fuzzer_lib Filter.h
velox_rows_streaming_window_benchmark Filter.h
velox_rpc_aimd_under_load_test Filter.h
velox_rpc_node_test Filter.h
velox_rpc_operator Filter.h
velox_rpc_operator_test Filter.h
velox_rpc_plan_node_translator Filter.h
velox_s3file_test Filter.h
velox_s3insert_test Filter.h
velox_s3metrics_test Filter.h
velox_s3multiendpoints_test Filter.h
velox_s3read_test Filter.h
velox_s3registration_test Filter.h
velox_simple_aggregate Filter.h
velox_simple_aggregate_test Filter.h
velox_sort_benchmark Filter.h
velox_spark_query_runner Filter.h
velox_spark_query_runner_test Filter.h
velox_spark_windows_test Filter.h
velox_sparksql_coverage Filter.h
velox_spatial_join_benchmark Filter.h
velox_spatial_join_fuzzer Filter.h
velox_spill_fuzzer_base_lib Filter.h
velox_spiller_aggregate_benchmark Filter.h
velox_spiller_aggregate_benchmark_base Filter.h
velox_spiller_join_benchmark Filter.h
velox_spiller_join_benchmark_base Filter.h
velox_streaming_aggregation_benchmark Filter.h
velox_table_evolution_fuzzer_test Filter.h
velox_text_reader_test Filter.h
velox_text_writer_test Filter.h
velox_tool_trace_test Filter.h
velox_topn_row_number_fuzzer Filter.h
velox_topn_row_number_fuzzer_lib Filter.h
velox_tpcds_benchmark Filter.h
velox_tpcds_benchmark_lib Filter.h
velox_tpcds_connector Filter.h
velox_tpcds_connector_test Filter.h
velox_tpch_benchmark Filter.h
velox_tpch_benchmark_lib Filter.h
velox_tpch_connector Filter.h
velox_tpch_connector_test Filter.h
velox_tpch_speed_test Filter.h
velox_trace Filter.h
velox_type Filter.cpp, Filter.h
velox_type_test Filter.h, FilterTest.cpp
velox_window Filter.h
velox_window_fuzzer Filter.h
velox_window_fuzzer_test Filter.h
velox_window_prefixsort_benchmark Filter.h
velox_window_sub_partitioned_sort_benchmark Filter.h
velox_windows_agg_test Filter.h
velox_windows_rank_test Filter.h
velox_windows_value_test Filter.h
velox_writer_fuzzer Filter.h
velox_writer_fuzzer_test Filter.h

Transitively affected (267)

  • bias_vector_test
  • cached_factory_test
  • copy_benchmark
  • file_utils_test
  • simple_lru_cache_test
  • simple_vector_test
  • velox_abfs
  • velox_abfs_registration_test
  • velox_abfs_test
  • velox_arrow_bridge
  • velox_arrow_bridge_test
  • velox_async_rpc_function_registry
  • velox_benchmark_array_writer_no_nulls
  • velox_benchmark_array_writer_with_nulls
  • velox_benchmark_basic_comparison_conjunct
  • velox_benchmark_basic_decoded_vector
  • velox_benchmark_basic_preproc
  • velox_benchmark_basic_selectivity_vector
  • velox_benchmark_basic_simple_arithmetic
  • velox_benchmark_basic_simple_cast
  • velox_benchmark_basic_vector_compare
  • velox_benchmark_basic_vector_fuzzer
  • velox_benchmark_basic_vector_slice
  • velox_benchmark_builder
  • velox_benchmark_estimate_flat_size
  • velox_benchmark_expr_flat_no_nulls
  • velox_benchmark_feature_normalization
  • velox_benchmark_local_remote_comparison
  • velox_benchmark_map_writer_no_nulls
  • velox_benchmark_map_writer_with_nulls
  • velox_benchmark_nested_array_writer_no_nulls
  • velox_benchmark_nested_array_writer_with_nulls
  • velox_buffer
  • velox_buffer_test
  • velox_cache_fuzzer
  • velox_cache_fuzzer_lib
  • velox_cache_test_group0
  • velox_caching
  • velox_cast_benchmark
  • velox_common_base
  • velox_common_base_benchmarks
  • velox_common_compression
  • velox_common_compression_test
  • velox_common_config
  • velox_common_encode_test
  • velox_common_fuzzer_util
  • velox_common_geospatial_serde
  • velox_common_geospatial_serde_test
  • velox_common_hyperloglog
  • velox_common_hyperloglog_dense_hll_bm
  • velox_common_hyperloglog_test
  • velox_common_indexed_priority_queue_benchmark
  • velox_common_io
  • velox_common_sorting_network_benchmark
  • velox_common_split_block_bloom_filter_benchmark
  • velox_common_stringsearch_benchmarks
  • velox_concurrent_allocation_benchmark
  • velox_config_property
  • velox_config_test
  • velox_congestion_controller_test
  • velox_constrained_input_generators
  • velox_constrained_input_generators_test
  • velox_constrained_vector_generator
  • velox_constrained_vector_generator_test
  • velox_custom_memory_resource_registry
  • velox_date_conversion_benchmark
  • velox_date_extract_benchmark
  • velox_demo_batch_rpc_function
  • velox_demo_rpc_function
  • velox_demo_rpc_function_test
  • velox_duckdb_conversion
  • velox_duckdb_parser
  • velox_dwio_arrow_parquet_writer_lib
  • velox_dwio_arrow_parquet_writer_test_lib
  • velox_dwio_arrow_parquet_writer_util_lib
  • velox_dwio_catalog_fbhive
  • velox_dwio_common_bitpack_decoder_benchmark
  • velox_dwio_common_data_buffer_benchmark
  • velox_dwio_common_exception
  • velox_dwio_common_int_decoder_benchmark
  • velox_dwio_dwrf_checksum_test
  • velox_dwio_dwrf_data_buffer_holder_test
  • velox_dwio_dwrf_encoding_selector_test
  • velox_dwio_dwrf_ratio_checker_test
  • velox_dwio_dwrf_stream_labels_test
  • velox_dwio_faulty_file_sink
  • velox_dwio_parquet_boolean_decoder_benchmark
  • velox_dwio_parquet_common
  • velox_dwio_parquet_common_test
  • velox_dwio_parquet_rlebp_decoder_test
  • velox_dwio_parquet_structure_decoder_benchmark
  • velox_dwio_parquet_structure_decoder_test
  • velox_dynamic_library_loader
  • velox_example_expression_eval
  • velox_example_opaque_type
  • velox_example_simple_functions
  • velox_example_vector_reader_writer
  • velox_exception
  • velox_exec_prefixsort_test
  • velox_exec_prefixsort_test_lib
  • velox_exec_spill_stats
  • velox_expression_functions
  • velox_expression_fuzzer_test_utility
  • velox_file
  • velox_file_test
  • velox_file_test_utils
  • velox_format_datetime_benchmark
  • velox_fragmentation_benchmark
  • velox_function_dynamic_link_test
  • velox_function_registry
  • velox_function_registry_test
  • velox_functions_benchmarks_compare
  • velox_functions_benchmarks_row_writer_no_nulls
  • velox_functions_benchmarks_simdjson_function_with_expr
  • velox_functions_benchmarks_string_writer_no_nulls
  • velox_functions_benchmarks_url
  • velox_functions_geo
  • velox_functions_iceberg
  • velox_functions_iceberg_hash
  • velox_functions_iceberg_test
  • velox_functions_json
  • velox_functions_json_test
  • velox_functions_lib
  • velox_functions_lib_date_time_formatter
  • velox_functions_lib_test
  • velox_functions_prestosql
  • velox_functions_prestosql_benchmarks_array_contains
  • velox_functions_prestosql_benchmarks_array_join
  • velox_functions_prestosql_benchmarks_array_min_max
  • velox_functions_prestosql_benchmarks_array_position
  • velox_functions_prestosql_benchmarks_array_sum
  • velox_functions_prestosql_benchmarks_bitwise
  • velox_functions_prestosql_benchmarks_cardinality
  • velox_functions_prestosql_benchmarks_comparisons
  • velox_functions_prestosql_benchmarks_concat
  • velox_functions_prestosql_benchmarks_date_time
  • velox_functions_prestosql_benchmarks_field_reference
  • velox_functions_prestosql_benchmarks_generic
  • velox_functions_prestosql_benchmarks_in
  • velox_functions_prestosql_benchmarks_map_concat
  • velox_functions_prestosql_benchmarks_map_except
  • velox_functions_prestosql_benchmarks_map_input
  • velox_functions_prestosql_benchmarks_map_intersect
  • velox_functions_prestosql_benchmarks_map_subscript
  • velox_functions_prestosql_benchmarks_map_zip_with
  • velox_functions_prestosql_benchmarks_not
  • velox_functions_prestosql_benchmarks_regexp_replace
  • velox_functions_prestosql_benchmarks_row
  • velox_functions_prestosql_benchmarks_string_ascii_utf_functions
  • velox_functions_prestosql_benchmarks_uuid_cast
  • velox_functions_prestosql_benchmarks_width_bucket
  • velox_functions_prestosql_benchmarks_zip
  • velox_functions_prestosql_benchmarks_zip_with
  • velox_functions_remote
  • velox_functions_remote_client_test
  • velox_functions_remote_get_serde
  • velox_functions_remote_server
  • velox_functions_remote_server_main
  • velox_functions_remote_utils
  • velox_functions_sfm
  • velox_functions_sfm_test
  • velox_functions_spark
  • velox_functions_spark_specialforms
  • velox_functions_spark_test
  • velox_functions_spark_window
  • velox_functions_string_test
  • velox_functions_test
  • velox_functions_test_lib
  • velox_functions_util
  • velox_gcs
  • velox_gcs_file_test
  • velox_gcsfile_example
  • velox_hdfs
  • velox_hdfs_file_test
  • velox_hierarchical_timer
  • velox_hierarchical_timer_test
  • velox_hive_iceberg_merge_processor_test
  • velox_hive_iceberg_session_credentials_test
  • velox_hive_paimon_data_file_meta_test
  • velox_hive_paimon_deletion_file_test
  • velox_hive_paimon_row_kind_test
  • velox_id_map
  • velox_id_map_test
  • velox_is_null_functions
  • velox_like_benchmark
  • velox_like_tpch_benchmark
  • velox_memcpy_meter
  • velox_memory
  • velox_mock_rpc_client
  • velox_mock_rpc_client_test
  • velox_numeric_upcast_benchmark
  • velox_orderby_benchmark_util
  • velox_parse_expression
  • velox_prefix_sort_algorithm_benchmark
  • velox_presto_coercions
  • velox_presto_coercions_test
  • velox_presto_query_config
  • velox_presto_serializer
  • velox_presto_type_parser
  • velox_presto_type_parser_test
  • velox_presto_types_test
  • velox_prestosql_coverage
  • velox_process
  • velox_process_test
  • velox_query_config_provider
  • velox_query_config_provider_test
  • velox_re2_functions_benchmarks
  • velox_read_benchmark
  • velox_read_benchmark_lib
  • velox_row_fast
  • velox_row_serializer_benchmark
  • velox_row_test
  • velox_rpc_function_stubs
  • velox_rpc_state
  • velox_rpc_state_test
  • velox_s3config_test
  • velox_s3finalize_test
  • velox_s3fs
  • velox_scoped_registry_test
  • velox_serialization
  • velox_serialization_test
  • velox_serializer_benchmark
  • velox_serializer_test_group0
  • velox_signature_parser
  • velox_signature_parser_test
  • velox_spark_function_registry_test
  • velox_spark_query_config
  • velox_sparksql_benchmarks_cast
  • velox_sparksql_benchmarks_compare
  • velox_sparksql_benchmarks_from_json
  • velox_sparksql_benchmarks_get_funcs
  • velox_sparksql_benchmarks_hash
  • velox_sparksql_benchmarks_in
  • velox_sparksql_benchmarks_simd_compare
  • velox_sparksql_benchmarks_split
  • velox_string_core_benchmark
  • velox_string_view_benchmark
  • velox_test_util
  • velox_test_util_test
  • velox_time
  • velox_time_test
  • velox_tpcds_append_info
  • velox_tpcds_dsdgen
  • velox_tpcds_gen
  • velox_tpcds_gen_test
  • velox_tpch_gen
  • velox_tpch_gen_test
  • velox_trace_file_tool
  • velox_trace_file_tool_base
  • velox_tracked_executor
  • velox_type_calculation
  • velox_type_fbhive
  • velox_type_fbhive_test
  • velox_type_serializer_fbhive_test
  • velox_type_signature
  • velox_type_tz_ext_invalid_test
  • velox_type_tz_test
  • velox_unsafe_row_serialize_benchmark
  • velox_vector
  • velox_vector_fuzzer
  • velox_vector_fuzzer_test
  • velox_vector_fuzzer_util
  • velox_vector_hash_all_benchmark
  • velox_vector_map_update_benchmark
  • velox_vector_selectivity_vector_benchmark
  • velox_vector_test
  • velox_vector_test_lib

Fast path • Graph from main@2c661fc83bf7

@github-actions

Copy link
Copy Markdown

CI Failure Analysis

Auto-generated by the CI Failure Analysis workflow. This comment is updated in place each time CI fails on a new commit, so it always reflects the latest run — re-pushing or re-running CI will refresh the analysis below. Last updated 2026-08-21 20:05:48 UTC from workflow run 32519040988.

❌ Build with GCC / TEST: Linux release with adapters — TEST Failure View logs

Failed test: velox_hive_connector_testHiveConnectorTest.extractFiltersFromRemainingFilter

/__w/velox/velox/velox/connectors/hive/tests/HiveConnectorTest.cpp:635: Failure
Value of: remaining
  Actual: false
Expected: true
[  FAILED  ] HiveConnectorTest.extractFiltersFromRemainingFilter (1 ms)

The test at line 635 of HiveConnectorTest.cpp asserts that remaining is truthy (non-null) after calling extractFiltersFromRemainingFilter on a DECIMAL(20,0) (hugeint) expression not (c2 > 1::decimal(20, 0) or c2 < 0::decimal(20, 0)). The test has an explicit comment:

// Change these once HUGEINT filter merge is fixed.
ASSERT_TRUE(remaining);

Correlation with PR changes:

This failure is directly caused by the PR changes. The PR implements HugeintRange::mergeWith() and HugeintValuesUsingHashTable::mergeWith() in velox/type/Filter.cpp and velox/type/Filter.h. Before this PR, merging hugeint filters was not supported, so extractFiltersFromRemainingFilter could not fully push the not (c2 > 1 or c2 < 0) expression into subfield filters — leaving a remaining expression. Now that hugeint filter merging works, the full expression is pushed down into the subfield filter, and remaining becomes null (falsy).

The test itself anticipated this fix with the comment "Change these once HUGEINT filter merge is fixed".

Known issues:

  • Issue #15731 tracks a related problem with extractFiltersFromRemainingFilter failing with certain bigint filters. This PR's changes (adding hugeint merge support) are part of addressing that broader area.
  • This failure does not occur on the main branch — the last 3 runs on main all passed.

Reproduce locally:

./_build/release/velox/connectors/hive/tests/velox_hive_connector_test \
  --gtest_filter="HiveConnectorTest.extractFiltersFromRemainingFilter"

Recommended fix:

Update the test at velox/connectors/hive/tests/HiveConnectorTest.cpp:635 to reflect the now-correct behavior. Since hugeint filter merge is fixed by this PR, the remaining expression should be null (all filters are pushed down). Replace:

// Change these once HUGEINT filter merge is fixed.
ASSERT_TRUE(remaining);
ASSERT_EQ(
    remaining->toString(), "not(lt(ROW[\"c2\"],cast(0 as DECIMAL(20, 0))))");

with:

ASSERT_FALSE(remaining);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant