master 987460fdf7ca cached
3231 files
46.3 MB
12.3M tokens
10991 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (49,130K chars total). Download the full file to get everything.
Repository: manticoresoftware/manticoresearch
Branch: master
Commit: 987460fdf7ca
Files: 3231
Total size: 46.3 MB

Directory structure:
gitextract_9gwz_73y/

├── .clt/
│   ├── checkers/
│   │   ├── contains
│   │   ├── ignore
│   │   └── something
│   └── patterns
├── .cursorignore
├── .editorconfig
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── feature_request.yml
│   │   └── support_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── stale.yml
│   └── workflows/
│       ├── build_template.yml
│       ├── check_docs.yml
│       ├── checklist_validator.yml
│       ├── clt_nightly.yml
│       ├── clt_tests.yml
│       ├── coverage.yml
│       ├── deploy_docs.yml
│       ├── nightly_dumps.yml
│       ├── nightly_fuzzer.yml
│       ├── nightly_integration.yml
│       ├── nightly_memleaks.yml
│       ├── pack_publish.yml
│       ├── pack_publish_galera.yml
│       ├── test.yml
│       ├── test_template.yml
│       ├── trigger_docs_check.yml
│       └── win_test_template.yml
├── .gitignore
├── .gitlab-ci.yml
├── .gitmodules
├── .noindex
├── .translation-cache/
│   ├── Changelog.md.json
│   ├── Connecting_to_the_server/
│   │   ├── HTTP.md.json
│   │   └── MySQL_protocol.md.json
│   ├── Connecting_to_the_server.md.json
│   ├── Creating_a_cluster/
│   │   ├── Adding_a_new_node.md.json
│   │   ├── Creating_a_cluster.md.json
│   │   ├── Remote_nodes/
│   │   │   ├── Load_balancing.md.json
│   │   │   └── Mirroring.md.json
│   │   ├── Remote_nodes.md.json
│   │   └── Setting_up_replication/
│   │       ├── Adding_and_removing_a_table_from_a_replication_cluster.md.json
│   │       ├── Cluster_recovery.md.json
│   │       ├── Creating_a_replication_cluster.md.json
│   │       ├── Deleting_a_replication_cluster.md.json
│   │       ├── Joining_a_replication_cluster.md.json
│   │       ├── Managing_replication_nodes.md.json
│   │       ├── Replication_cluster_status.md.json
│   │       ├── Restarting_a_cluster.md.json
│   │       └── Setting_up_replication.md.json
│   ├── Creating_a_table/
│   │   ├── Creating_a_distributed_table/
│   │   │   ├── Creating_a_distributed_table.md.json
│   │   │   ├── Creating_a_local_distributed_table.md.json
│   │   │   └── Remote_tables.md.json
│   │   ├── Data_types.md.json
│   │   ├── Local_tables/
│   │   │   ├── Percolate_table.md.json
│   │   │   ├── Plain_and_real-time_table_settings.md.json
│   │   │   ├── Plain_table.md.json
│   │   │   ├── Real-time_table.md.json
│   │   │   └── Template_table.md.json
│   │   ├── Local_tables.md.json
│   │   └── NLP_and_tokenization/
│   │       ├── Advanced_HTML_tokenization.md.json
│   │       ├── Data_tokenization.md.json
│   │       ├── Exceptions.md.json
│   │       ├── Ignoring_stop-words.md.json
│   │       ├── Languages_with_continuous_scripts.md.json
│   │       ├── Low-level_tokenization.md.json
│   │       ├── Morphology.md.json
│   │       ├── Supported_languages.md.json
│   │       ├── Wildcard_searching_settings.md.json
│   │       └── Wordforms.md.json
│   ├── Creating_a_table.md.json
│   ├── Data_creation_and_modification/
│   │   ├── Adding_data_from_external_storages/
│   │   │   ├── Adding_data_to_tables/
│   │   │   │   ├── Attaching_one_table_to_another.md.json
│   │   │   │   ├── Importing_table.md.json
│   │   │   │   ├── Killlist_in_plain_tables.md.json
│   │   │   │   └── Merging_tables.md.json
│   │   │   ├── Fetching_from_CSV,TSV.md.json
│   │   │   ├── Fetching_from_XML_streams.md.json
│   │   │   ├── Fetching_from_databases/
│   │   │   │   ├── Database_connection.md.json
│   │   │   │   ├── Execution_of_fetch_queries.md.json
│   │   │   │   ├── Introduction.md.json
│   │   │   │   ├── Processing_fetched_data.md.json
│   │   │   │   └── Ranged_queries.md.json
│   │   │   ├── Main_delta.md.json
│   │   │   ├── Plain_tables_creation.md.json
│   │   │   └── Rotating_a_table.md.json
│   │   ├── Adding_data_from_external_storages.md.json
│   │   ├── Adding_documents_to_a_table/
│   │   │   ├── Adding_documents_to_a_real-time_table.md.json
│   │   │   └── Adding_rules_to_a_percolate_table.md.json
│   │   ├── Data_creation_and_modification.md.json
│   │   ├── Deleting_documents.md.json
│   │   ├── Transactions.md.json
│   │   └── Updating_documents/
│   │       ├── REPLACE.md.json
│   │       ├── REPLACE_vs_UPDATE.md.json
│   │       └── UPDATE.md.json
│   ├── Deleting_a_table.md.json
│   ├── Emptying_a_table.md.json
│   ├── Extensions/
│   │   ├── FEDERATED.md.json
│   │   ├── SphinxSE.md.json
│   │   └── UDFs_and_Plugins/
│   │       ├── Listing_plugins.md.json
│   │       ├── Plugins/
│   │       │   ├── Creating_a_plugin.md.json
│   │       │   ├── Deleting_a_plugin.md.json
│   │       │   ├── Enabling_and_disabling_buddy_plugins.md.json
│   │       │   ├── Ranker_plugins.md.json
│   │       │   ├── Reloading_plugins.md.json
│   │       │   └── Token_filter_plugins.md.json
│   │       ├── UDF/
│   │       │   ├── Creating_a_function.md.json
│   │       │   └── Deleting_a_function.md.json
│   │       ├── UDF.md.json
│   │       └── UDFs_and_Plugins.md.json
│   ├── Functions/
│   │   ├── Arrays_and_conditions_functions.md.json
│   │   ├── Date_and_time_functions.md.json
│   │   ├── Geo_spatial_functions.md.json
│   │   ├── Mathematical_functions.md.json
│   │   ├── Other_functions.md.json
│   │   ├── Searching_and_ranking_functions.md.json
│   │   ├── String_functions.md.json
│   │   └── Type_casting_functions.md.json
│   ├── Functions.md.json
│   ├── Installation/
│   │   ├── Compiling_from_sources.md.json
│   │   ├── Debian_and_Ubuntu.md.json
│   │   ├── Docker.md.json
│   │   ├── Installation.md.json
│   │   ├── MacOS.md.json
│   │   ├── Manticore_Buddy.md.json
│   │   ├── Migration_from_Sphinx.md.json
│   │   ├── RHEL_and_Centos.md.json
│   │   └── Windows.md.json
│   ├── Integration/
│   │   ├── Apache_Superset.md.json
│   │   ├── DBeaver.md.json
│   │   ├── Filebeat.md.json
│   │   ├── Fluentbit.md.json
│   │   ├── Grafana.md.json
│   │   ├── Kafka.md.json
│   │   ├── Kibana.md.json
│   │   ├── Logstash.md.json
│   │   └── Vectordev.md.json
│   ├── Introduction.md.json
│   ├── Listing_tables.md.json
│   ├── Logging/
│   │   ├── Binary_logging.md.json
│   │   ├── Docker_logging.md.json
│   │   ├── Query_logging.md.json
│   │   ├── Rotating_query_and_server_logs.md.json
│   │   └── Server_logging.md.json
│   ├── Miscellaneous_tools.md.json
│   ├── Node_info_and_management/
│   │   ├── KILL.md.json
│   │   ├── Node_status.md.json
│   │   ├── Profiling/
│   │   │   ├── Query_plan.md.json
│   │   │   └── Query_profile.md.json
│   │   ├── SHOW_META.md.json
│   │   ├── SHOW_QUERIES.md.json
│   │   ├── SHOW_THREADS.md.json
│   │   ├── SHOW_VARIABLES.md.json
│   │   ├── SHOW_VERSION.md.json
│   │   ├── SHOW_WARNINGS.md.json
│   │   └── Table_settings_and_status/
│   │       ├── SHOW_TABLE_INDEXES.md.json
│   │       ├── SHOW_TABLE_SETTINGS.md.json
│   │       └── SHOW_TABLE_STATUS.md.json
│   ├── Openapi.md.json
│   ├── Quick_start_guide.md.json
│   ├── README.md.json
│   ├── Read_this_first.md.json
│   ├── References.md.json
│   ├── Reporting_bugs.md.json
│   ├── Searching/
│   │   ├── Autocomplete.md.json
│   │   ├── Collations.md.json
│   │   ├── Cost_based_optimizer.md.json
│   │   ├── Distributed_searching.md.json
│   │   ├── Expressions.md.json
│   │   ├── Faceted_search.md.json
│   │   ├── Filters.md.json
│   │   ├── Full_text_matching/
│   │   │   ├── Basic_usage.md.json
│   │   │   ├── Boolean_optimization.md.json
│   │   │   ├── Escaping.md.json
│   │   │   ├── Operators.md.json
│   │   │   └── Profiling.md.json
│   │   ├── Geo_search.md.json
│   │   ├── Grouping.md.json
│   │   ├── Highlighting.md.json
│   │   ├── Intro.md.json
│   │   ├── Joining.md.json
│   │   ├── KNN.md.json
│   │   ├── Multi-queries.md.json
│   │   ├── Options.md.json
│   │   ├── Pagination.md.json
│   │   ├── Percolate_query.md.json
│   │   ├── Query_cache.md.json
│   │   ├── Search_results.md.json
│   │   ├── Sorting_and_ranking.md.json
│   │   ├── Spell_correction.md.json
│   │   └── Sub-selects.md.json
│   ├── Securing_and_compacting_a_table/
│   │   ├── Backup_and_restore.md.json
│   │   ├── Compacting_a_table.md.json
│   │   ├── Flushing_RAM_chunk_to_a_new_disk_chunk.md.json
│   │   ├── Flushing_RAM_chunk_to_disk.md.json
│   │   ├── Flushing_attributes.md.json
│   │   ├── Flushing_hostnames.md.json
│   │   ├── Freezing_and_locking_a_table.md.json
│   │   ├── Isolation_during_flushing_and_merging.md.json
│   │   └── RT_table_structure.md.json
│   ├── Security/
│   │   ├── Read_only.md.json
│   │   └── SSL.md.json
│   ├── Server_settings/
│   │   ├── Comments.md.json
│   │   ├── Common.md.json
│   │   ├── Inheritance_of_index_and_source_declarations.md.json
│   │   ├── Scripted_configuration.md.json
│   │   ├── Searchd.md.json
│   │   ├── Setting_variables_online.md.json
│   │   └── Special_suffixes.md.json
│   ├── Starting_the_server/
│   │   ├── Docker.md.json
│   │   ├── Linux.md.json
│   │   ├── MacOS.md.json
│   │   ├── Manually.md.json
│   │   └── Windows.md.json
│   ├── Starting_the_server.md.json
│   ├── Telemetry.md.json
│   └── Updating_table_schema_and_settings.md.json
├── 116.conf
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── INSTALL
├── LICENSE
├── README.md
├── TESTING.md
├── actions/
│   ├── checklist-validator/
│   │   └── action.yml
│   └── update-deps/
│       └── action.yml
├── api/
│   ├── lgpl-3.0.txt
│   ├── libsphinxclient/
│   │   ├── CMakeLists.txt
│   │   ├── COPYING
│   │   ├── README
│   │   ├── smoke.cmake
│   │   ├── smoke_data.csv
│   │   ├── smoke_ref.txt
│   │   ├── smoke_test.conf
│   │   ├── smoke_test.sh
│   │   ├── sphinxclient.c
│   │   ├── sphinxclient.h
│   │   └── test.c
│   ├── ruby/
│   │   ├── README.rdoc
│   │   ├── Rakefile
│   │   ├── init.rb
│   │   ├── install.rb
│   │   ├── lib/
│   │   │   ├── sphinx/
│   │   │   │   ├── client.rb
│   │   │   │   ├── request.rb
│   │   │   │   └── response.rb
│   │   │   └── sphinx.rb
│   │   ├── spec/
│   │   │   ├── client_response_spec.rb
│   │   │   ├── client_spec.rb
│   │   │   ├── fixtures/
│   │   │   │   ├── default_search.php
│   │   │   │   ├── default_search_index.php
│   │   │   │   ├── excerpt_custom.php
│   │   │   │   ├── excerpt_default.php
│   │   │   │   ├── excerpt_flags.php
│   │   │   │   ├── field_weights.php
│   │   │   │   ├── filter.php
│   │   │   │   ├── filter_exclude.php
│   │   │   │   ├── filter_float_range.php
│   │   │   │   ├── filter_float_range_exclude.php
│   │   │   │   ├── filter_range.php
│   │   │   │   ├── filter_range_exclude.php
│   │   │   │   ├── filter_range_int64.php
│   │   │   │   ├── filter_ranges.php
│   │   │   │   ├── filters.php
│   │   │   │   ├── filters_different.php
│   │   │   │   ├── geo_anchor.php
│   │   │   │   ├── group_by_attr.php
│   │   │   │   ├── group_by_attrpair.php
│   │   │   │   ├── group_by_day.php
│   │   │   │   ├── group_by_day_sort.php
│   │   │   │   ├── group_by_month.php
│   │   │   │   ├── group_by_week.php
│   │   │   │   ├── group_by_year.php
│   │   │   │   ├── group_distinct.php
│   │   │   │   ├── id_range.php
│   │   │   │   ├── id_range64.php
│   │   │   │   ├── index_weights.php
│   │   │   │   ├── keywords.php
│   │   │   │   ├── limits.php
│   │   │   │   ├── limits_cutoff.php
│   │   │   │   ├── limits_max.php
│   │   │   │   ├── limits_max_cutoff.php
│   │   │   │   ├── match_all.php
│   │   │   │   ├── match_any.php
│   │   │   │   ├── match_boolean.php
│   │   │   │   ├── match_extended.php
│   │   │   │   ├── match_extended2.php
│   │   │   │   ├── match_fullscan.php
│   │   │   │   ├── match_phrase.php
│   │   │   │   ├── max_query_time.php
│   │   │   │   ├── miltiple_queries.php
│   │   │   │   ├── ranking_bm25.php
│   │   │   │   ├── ranking_none.php
│   │   │   │   ├── ranking_proximity.php
│   │   │   │   ├── ranking_proximity_bm25.php
│   │   │   │   ├── ranking_wordcount.php
│   │   │   │   ├── retries.php
│   │   │   │   ├── retries_delay.php
│   │   │   │   ├── select.php
│   │   │   │   ├── set_override.php
│   │   │   │   ├── sort_attr_asc.php
│   │   │   │   ├── sort_attr_desc.php
│   │   │   │   ├── sort_expr.php
│   │   │   │   ├── sort_extended.php
│   │   │   │   ├── sort_relevance.php
│   │   │   │   ├── sort_time_segments.php
│   │   │   │   ├── sphinxapi.php
│   │   │   │   ├── update_attributes.php
│   │   │   │   ├── update_attributes_mva.php
│   │   │   │   └── weights.php
│   │   │   └── sphinx/
│   │   │       ├── sphinx-id64.conf
│   │   │       ├── sphinx.conf
│   │   │       └── sphinx_test.sql
│   │   ├── sphinx.yml.tpl
│   │   ├── tasks/
│   │   │   └── sphinx.rake
│   │   └── test.rb
│   └── sphinxapi.php
├── cmake/
│   ├── CommonInfo.cmake
│   ├── FindMysql.cmake
│   ├── FindZSTD.cmake
│   ├── Findre2.cmake
│   ├── Findstemmer.cmake
│   ├── GetCCTZ.cmake
│   ├── GetColumnar.cmake
│   ├── GetGALERA.cmake
│   ├── GetGooglebench.cmake
│   ├── GetGoogletest.cmake
│   ├── GetICU.cmake
│   ├── GetJIEBA.cmake
│   ├── GetNLJSON.cmake
│   ├── GetRBitmap.cmake
│   ├── GetRE2.cmake
│   ├── GetSSL.cmake
│   ├── GetSTEMMER.cmake
│   ├── GetUniAlgo.cmake
│   ├── GetVCPKG.cmake
│   ├── GetxxHash.cmake
│   ├── SetBuildType.cmake
│   ├── banner.cmake
│   ├── builds/
│   │   ├── CommonDeb.cmake
│   │   ├── CommonRpm.cmake
│   │   ├── VersionDeps.cmake
│   │   ├── build_bionic.cmake
│   │   ├── build_bookworm.cmake
│   │   ├── build_bullseye.cmake
│   │   ├── build_buster.cmake
│   │   ├── build_debian.cmake
│   │   ├── build_default.cmake
│   │   ├── build_focal.cmake
│   │   ├── build_jammy.cmake
│   │   ├── build_macosbrew.cmake
│   │   ├── build_rhel.cmake
│   │   ├── build_rhel10.cmake
│   │   ├── build_rhel8.cmake
│   │   ├── build_rhel9.cmake
│   │   ├── build_stretch.cmake
│   │   ├── build_windows.cmake
│   │   └── build_xenial.cmake
│   ├── check_atomic_intrinsics.cmake
│   ├── check_const_iconv.cmake
│   ├── check_rwlock_prefer_writer.cmake
│   ├── check_unaligned_ram_access.cmake
│   ├── check_vitable_pthread_setname_np.cmake
│   ├── columnar-imported.cmake.in
│   ├── external-build.cmake.in
│   ├── fixup_test_name.cmake
│   ├── galera-copy-package.sh.in
│   ├── galera-imported.cmake.in
│   ├── galera-package.cmake.in
│   ├── gbench-imported.cmake.in
│   ├── genheader.cmake
│   ├── gtest-imported.cmake.in
│   ├── helpers.cmake
│   ├── init_cache_settings.cmake
│   ├── mincore_test.cmake
│   ├── mybison.cmake
│   ├── printers.cmake
│   ├── setup_distribution_build.cmake
│   ├── split.cmake
│   └── update_bundle.cmake
├── columnar_src.txt
├── compare_manuals.sh
├── component-licenses/
│   ├── FindMysql.cmake-license-gplv2floss
│   ├── README.md
│   ├── cjson-license
│   ├── http_parser-license
│   ├── libmysqlclient-license
│   ├── lz4-license
│   ├── sphinx-license
│   └── xxhash-license
├── config/
│   ├── config_cmake.h.in
│   └── config_indexer_cmake.h.in
├── configure
├── contrib/
│   ├── README
│   └── scripts/
│       ├── cachecleanup.sh
│       └── searchd
├── deps.txt
├── dist/
│   ├── 70-manticore.conf
│   ├── CPackOptions.cmake.in
│   ├── build_dockers/
│   │   ├── README.md
│   │   ├── cross/
│   │   │   ├── external_toolchain/
│   │   │   │   ├── Dockerfile
│   │   │   │   ├── Dockerfile_cmake3243
│   │   │   │   └── entry_point.sh
│   │   │   ├── freebsd.cmake
│   │   │   ├── linux.cmake
│   │   │   ├── osx.cmake
│   │   │   ├── sysroots/
│   │   │   │   ├── README.md
│   │   │   │   ├── boost_include.tar.xz.md
│   │   │   │   ├── boost_library.sh
│   │   │   │   ├── boost_macos__.tar.xz.md
│   │   │   │   ├── boost_windows_x64.tar.xz.md
│   │   │   │   ├── build_alma10.sh
│   │   │   │   ├── build_alma9.sh
│   │   │   │   ├── build_bionic.sh
│   │   │   │   ├── build_bookworm.sh
│   │   │   │   ├── build_bullseye.sh
│   │   │   │   ├── build_buster.sh
│   │   │   │   ├── build_centos8.sh
│   │   │   │   ├── build_focal.sh
│   │   │   │   ├── build_jammy.sh
│   │   │   │   ├── debian.sh
│   │   │   │   ├── finalize.sh
│   │   │   │   ├── in_debian.sh
│   │   │   │   ├── in_rhel10.sh
│   │   │   │   ├── in_rhel8.sh
│   │   │   │   ├── in_rhel9.sh
│   │   │   │   ├── mkboost.sh
│   │   │   │   ├── mksysroot.sh
│   │   │   │   ├── mksysrootrhel.sh
│   │   │   │   ├── packages_bionic.txt
│   │   │   │   ├── packages_bookworm.txt
│   │   │   │   ├── packages_bullseye.txt
│   │   │   │   ├── packages_buster.txt
│   │   │   │   ├── packages_focal.txt
│   │   │   │   ├── packages_jammy.txt
│   │   │   │   ├── packages_rhel10.txt
│   │   │   │   ├── packages_rhel8.txt
│   │   │   │   ├── packages_rhel9.txt
│   │   │   │   ├── redhat.sh
│   │   │   │   ├── sysroot_freebsd13_x86_64.tar.xz.md
│   │   │   │   ├── sysroot_macos__.tar.xz.md
│   │   │   │   └── sysroot_windows_x64.tar.xz.md
│   │   │   ├── triplets/
│   │   │   │   ├── README.md
│   │   │   │   ├── arm64-linux.cmake
│   │   │   │   ├── arm64-osx.cmake
│   │   │   │   ├── x64-freebsd.cmake
│   │   │   │   ├── x64-linux.cmake
│   │   │   │   └── x64-osx.cmake
│   │   │   ├── windows-cl.cmake
│   │   │   └── windows.cmake
│   │   ├── nsis/
│   │   │   ├── Dockerfile
│   │   │   ├── deploy.sh
│   │   │   ├── nsis_src_parser.sh
│   │   │   └── nsisscript.nsi
│   │   └── retired/
│   │       ├── README.md
│   │       ├── aarch64/
│   │       │   ├── bionic/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── buildall.sh
│   │       │   ├── bullseye/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── buster/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── centos7/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── centos8/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── focal/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── stretch/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   └── xenial/
│   │       │       ├── base_build/
│   │       │       │   └── Dockerfile
│   │       │       ├── boost_175/
│   │       │       │   └── Dockerfile
│   │       │       ├── build.sh
│   │       │       ├── build_base.sh
│   │       │       ├── build_boost.sh
│   │       │       ├── build_cmake.sh
│   │       │       ├── cmake_320/
│   │       │       │   └── Dockerfile
│   │       │       └── distr.txt
│   │       ├── bionic/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── base_build_arm/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175_arm/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320_arm/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── buildall.sh
│   │       ├── bullseye/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── buster/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── centos7/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_7/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── centos8/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_11/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── cross/
│   │       │   ├── base_clang12/
│   │       │   │   └── Dockerfile
│   │       │   ├── base_clang13/
│   │       │   │   └── Dockerfile
│   │       │   ├── bigsur_arm64/
│   │       │   │   ├── Dockerfile
│   │       │   │   └── homebrew_arm64.tar.xz.md
│   │       │   ├── bigsur_sdk/
│   │       │   │   ├── Dockerfile
│   │       │   │   ├── MacOSX11.3.sdk.tar.xz.md
│   │       │   │   └── toolchain.cmake
│   │       │   ├── bigsur_x64/
│   │       │   │   ├── Dockerfile
│   │       │   │   └── homebrew_x64.tar.xz.md
│   │       │   ├── build
│   │       │   ├── build_cross/
│   │       │   │   ├── Dockerfile
│   │       │   │   ├── boost_include.tar.xz.md
│   │       │   │   ├── entry_point.sh
│   │       │   │   └── toolchain.cmake
│   │       │   ├── centos_rhel/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake232/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake323/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_clang/
│   │       │   │   └── Dockerfile
│   │       │   ├── freebsd_13/
│   │       │   │   ├── Dockerfile
│   │       │   │   ├── sysroot_fbsd_13.md
│   │       │   │   └── toolchain.cmake
│   │       │   ├── sysroots/
│   │       │   │   ├── build_stretch.sh
│   │       │   │   ├── build_xenial.sh
│   │       │   │   └── stretch.apt
│   │       │   ├── toolchain_clang/
│   │       │   │   └── Dockerfile
│   │       │   ├── ubuntu_debian/
│   │       │   │   ├── Dockerfile
│   │       │   │   └── entry_point.sh
│   │       │   ├── ubuntu_debian_amd64/
│   │       │   │   ├── Dockerfile
│   │       │   │   └── some_name_x86_64.tar.xz.md
│   │       │   └── ubuntu_debian_arm64/
│   │       │       ├── Dockerfile
│   │       │       └── some_name_aarc64.tar.xz.md
│   │       ├── focal/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── jammy/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_178/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_323/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── stretch/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       └── xenial/
│   │           ├── base_build/
│   │           │   └── Dockerfile
│   │           ├── boost_175/
│   │           │   └── Dockerfile
│   │           ├── build.sh
│   │           ├── build_base.sh
│   │           ├── build_boost.sh
│   │           ├── build_clang.sh
│   │           ├── build_cmake.sh
│   │           ├── clang_12/
│   │           │   └── Dockerfile
│   │           ├── cmake_320/
│   │           │   └── Dockerfile
│   │           └── distr.txt
│   ├── bundle/
│   │   └── BUNDLE_LICENSES.in
│   ├── check_deps_in_repos.sh
│   ├── deb/
│   │   ├── README.Debian.in
│   │   ├── README.Debian.in.prepare.php
│   │   ├── conffiles-common.in
│   │   ├── conffiles-server.in
│   │   ├── conffiles-tools.in
│   │   ├── manticore-indexer.service.in
│   │   ├── manticore-indexer@.service.in
│   │   ├── manticore-indexer_global.default.in
│   │   ├── manticore.default.in
│   │   ├── manticore.logrotate.in
│   │   ├── manticore.service.in
│   │   ├── manticore_new_cluster
│   │   ├── postinst-common.in
│   │   ├── postinst-core.in
│   │   ├── postinst-server.head
│   │   ├── postinst.debian.tail
│   │   ├── postinst.in.in
│   │   ├── postinst.ubuntu.tail
│   │   ├── postrm-common.in
│   │   ├── postrm-core.in
│   │   ├── postrm-server.in
│   │   ├── prerm.debian.in
│   │   └── prerm.ubuntu.in
│   ├── dockerhub_deploy.sh
│   ├── download_bundle_deps.sh
│   ├── download_bundle_language_packs.sh
│   ├── gitlab-release.yml
│   ├── nsis-release.yml
│   ├── rpm/
│   │   ├── manticore-common.post.in
│   │   ├── manticore-core.post.in
│   │   ├── manticore-indexer.service.in
│   │   ├── manticore-indexer@.service.in
│   │   ├── manticore-indexer_global.default.in
│   │   ├── manticore-server.post.in
│   │   ├── manticore-tools.preun
│   │   ├── manticore.logrotate.in
│   │   ├── manticore.service.in
│   │   ├── manticore.tmpfiles.in
│   │   └── manticore_new_cluster
│   ├── test_kit_docker_build.sh
│   └── test_kit_docker_push.sh
├── doc/
│   ├── binary-logging.md
│   ├── indexer.1
│   ├── indextool.1
│   ├── internal-binary-protocol.md
│   ├── internals-coding-standard.txt
│   ├── internals-format-versions.txt
│   ├── internals-index-format.md
│   ├── md2man.bash
│   └── searchd.1
├── docker-compose-test.yml
├── example.sql
├── galera_packaging/
│   ├── CommonDeb.cmake
│   ├── CommonRpm.cmake
│   ├── README.md
│   ├── build_bionic.cmake
│   ├── build_bookworm.cmake
│   ├── build_bullseye.cmake
│   ├── build_buster.cmake
│   ├── build_focal.cmake
│   ├── build_jammy.cmake
│   ├── build_macos.cmake
│   ├── build_rhel10.cmake
│   ├── build_rhel7.cmake
│   ├── build_rhel8.cmake
│   ├── build_rhel9.cmake
│   ├── description.txt
│   ├── metainfo.cmake
│   ├── packaging.cmake
│   └── tmp
├── libicu/
│   └── CMakeLists.txt
├── libre2/
│   ├── CMakeLists.txt
│   └── libre2.patch
├── libstemmer_c/
│   ├── CMakeLists.txt
│   └── README
├── manticore.conf.in
├── manual/
│   ├── chinese/
│   │   ├── Changelog.md
│   │   ├── Connecting_to_the_server/
│   │   │   ├── HTTP.md
│   │   │   └── MySQL_protocol.md
│   │   ├── Connecting_to_the_server.md
│   │   ├── Creating_a_cluster/
│   │   │   ├── Adding_a_new_node.md
│   │   │   ├── Creating_a_cluster.md
│   │   │   ├── Remote_nodes/
│   │   │   │   ├── Load_balancing.md
│   │   │   │   └── Mirroring.md
│   │   │   ├── Remote_nodes.md
│   │   │   └── Setting_up_replication/
│   │   │       ├── Adding_and_removing_a_table_from_a_replication_cluster.md
│   │   │       ├── Cluster_recovery.md
│   │   │       ├── Creating_a_replication_cluster.md
│   │   │       ├── Deleting_a_replication_cluster.md
│   │   │       ├── Joining_a_replication_cluster.md
│   │   │       ├── Managing_replication_nodes.md
│   │   │       ├── Replication_cluster_status.md
│   │   │       ├── Restarting_a_cluster.md
│   │   │       └── Setting_up_replication.md
│   │   ├── Creating_a_table/
│   │   │   ├── Creating_a_distributed_table/
│   │   │   │   ├── Creating_a_distributed_table.md
│   │   │   │   ├── Creating_a_local_distributed_table.md
│   │   │   │   └── Remote_tables.md
│   │   │   ├── Data_types.md
│   │   │   ├── Local_tables/
│   │   │   │   ├── Percolate_table.md
│   │   │   │   ├── Plain_and_real-time_table_settings.md
│   │   │   │   ├── Plain_table.md
│   │   │   │   ├── Real-time_table.md
│   │   │   │   └── Template_table.md
│   │   │   ├── Local_tables.md
│   │   │   └── NLP_and_tokenization/
│   │   │       ├── Advanced_HTML_tokenization.md
│   │   │       ├── Data_tokenization.md
│   │   │       ├── Exceptions.md
│   │   │       ├── Ignoring_stop-words.md
│   │   │       ├── Languages_with_continuous_scripts.md
│   │   │       ├── Low-level_tokenization.md
│   │   │       ├── Morphology.md
│   │   │       ├── Supported_languages.md
│   │   │       ├── Wildcard_searching_settings.md
│   │   │       └── Wordforms.md
│   │   ├── Creating_a_table.md
│   │   ├── Data_creation_and_modification/
│   │   │   ├── Adding_data_from_external_storages/
│   │   │   │   ├── Adding_data_to_tables/
│   │   │   │   │   ├── Attaching_one_table_to_another.md
│   │   │   │   │   ├── Importing_table.md
│   │   │   │   │   ├── Killlist_in_plain_tables.md
│   │   │   │   │   └── Merging_tables.md
│   │   │   │   ├── Fetching_from_CSV,TSV.md
│   │   │   │   ├── Fetching_from_XML_streams.md
│   │   │   │   ├── Fetching_from_databases/
│   │   │   │   │   ├── Database_connection.md
│   │   │   │   │   ├── Execution_of_fetch_queries.md
│   │   │   │   │   ├── Introduction.md
│   │   │   │   │   ├── Processing_fetched_data.md
│   │   │   │   │   └── Ranged_queries.md
│   │   │   │   ├── Main_delta.md
│   │   │   │   ├── Plain_tables_creation.md
│   │   │   │   └── Rotating_a_table.md
│   │   │   ├── Adding_data_from_external_storages.md
│   │   │   ├── Adding_documents_to_a_table/
│   │   │   │   ├── Adding_documents_to_a_real-time_table.md
│   │   │   │   └── Adding_rules_to_a_percolate_table.md
│   │   │   ├── Data_creation_and_modification.md
│   │   │   ├── Deleting_documents.md
│   │   │   ├── Transactions.md
│   │   │   └── Updating_documents/
│   │   │       ├── REPLACE.md
│   │   │       ├── REPLACE_vs_UPDATE.md
│   │   │       └── UPDATE.md
│   │   ├── Deleting_a_table.md
│   │   ├── Emptying_a_table.md
│   │   ├── Extensions/
│   │   │   ├── FEDERATED.md
│   │   │   ├── SphinxSE.md
│   │   │   └── UDFs_and_Plugins/
│   │   │       ├── Listing_plugins.md
│   │   │       ├── Plugins/
│   │   │       │   ├── Creating_a_plugin.md
│   │   │       │   ├── Deleting_a_plugin.md
│   │   │       │   ├── Enabling_and_disabling_buddy_plugins.md
│   │   │       │   ├── Ranker_plugins.md
│   │   │       │   ├── Reloading_plugins.md
│   │   │       │   └── Token_filter_plugins.md
│   │   │       ├── UDF/
│   │   │       │   ├── Creating_a_function.md
│   │   │       │   └── Deleting_a_function.md
│   │   │       ├── UDF.md
│   │   │       └── UDFs_and_Plugins.md
│   │   ├── Functions/
│   │   │   ├── Arrays_and_conditions_functions.md
│   │   │   ├── Date_and_time_functions.md
│   │   │   ├── Geo_spatial_functions.md
│   │   │   ├── Mathematical_functions.md
│   │   │   ├── Other_functions.md
│   │   │   ├── Searching_and_ranking_functions.md
│   │   │   ├── String_functions.md
│   │   │   └── Type_casting_functions.md
│   │   ├── Functions.md
│   │   ├── Installation/
│   │   │   ├── Compiling_from_sources.md
│   │   │   ├── Debian_and_Ubuntu.md
│   │   │   ├── Docker.md
│   │   │   ├── Installation.md
│   │   │   ├── MacOS.md
│   │   │   ├── Manticore_Buddy.md
│   │   │   ├── Migration_from_Sphinx.md
│   │   │   ├── RHEL_and_Centos.md
│   │   │   └── Windows.md
│   │   ├── Integration/
│   │   │   ├── Apache_Superset.md
│   │   │   ├── DBeaver.md
│   │   │   ├── Filebeat.md
│   │   │   ├── Fluentbit.md
│   │   │   ├── Grafana.md
│   │   │   ├── Kafka.md
│   │   │   ├── Kibana.md
│   │   │   ├── Logstash.md
│   │   │   └── Vectordev.md
│   │   ├── Introduction.md
│   │   ├── Listing_tables.md
│   │   ├── Logging/
│   │   │   ├── Binary_logging.md
│   │   │   ├── Docker_logging.md
│   │   │   ├── Query_logging.md
│   │   │   ├── Rotating_query_and_server_logs.md
│   │   │   └── Server_logging.md
│   │   ├── Miscellaneous_tools.md
│   │   ├── Node_info_and_management/
│   │   │   ├── KILL.md
│   │   │   ├── Node_status.md
│   │   │   ├── Profiling/
│   │   │   │   ├── Query_plan.md
│   │   │   │   └── Query_profile.md
│   │   │   ├── SHOW_META.md
│   │   │   ├── SHOW_QUERIES.md
│   │   │   ├── SHOW_THREADS.md
│   │   │   ├── SHOW_VARIABLES.md
│   │   │   ├── SHOW_VERSION.md
│   │   │   ├── SHOW_WARNINGS.md
│   │   │   └── Table_settings_and_status/
│   │   │       ├── SHOW_TABLE_INDEXES.md
│   │   │       ├── SHOW_TABLE_SETTINGS.md
│   │   │       └── SHOW_TABLE_STATUS.md
│   │   ├── Openapi.md
│   │   ├── Quick_start_guide.md
│   │   ├── README.md
│   │   ├── Read_this_first.md
│   │   ├── References.md
│   │   ├── Reporting_bugs.md
│   │   ├── Searching/
│   │   │   ├── Autocomplete.md
│   │   │   ├── Collations.md
│   │   │   ├── Cost_based_optimizer.md
│   │   │   ├── Distributed_searching.md
│   │   │   ├── Expressions.md
│   │   │   ├── Faceted_search.md
│   │   │   ├── Filters.md
│   │   │   ├── Full_text_matching/
│   │   │   │   ├── Basic_usage.md
│   │   │   │   ├── Boolean_optimization.md
│   │   │   │   ├── Escaping.md
│   │   │   │   ├── Operators.md
│   │   │   │   └── Profiling.md
│   │   │   ├── Geo_search.md
│   │   │   ├── Grouping.md
│   │   │   ├── Highlighting.md
│   │   │   ├── Intro.md
│   │   │   ├── Joining.md
│   │   │   ├── KNN.md
│   │   │   ├── Multi-queries.md
│   │   │   ├── Options.md
│   │   │   ├── Pagination.md
│   │   │   ├── Percolate_query.md
│   │   │   ├── Query_cache.md
│   │   │   ├── Search_results.md
│   │   │   ├── Sorting_and_ranking.md
│   │   │   ├── Spell_correction.md
│   │   │   └── Sub-selects.md
│   │   ├── Securing_and_compacting_a_table/
│   │   │   ├── Backup_and_restore.md
│   │   │   ├── Compacting_a_table.md
│   │   │   ├── Flushing_RAM_chunk_to_a_new_disk_chunk.md
│   │   │   ├── Flushing_RAM_chunk_to_disk.md
│   │   │   ├── Flushing_attributes.md
│   │   │   ├── Flushing_hostnames.md
│   │   │   ├── Freezing_and_locking_a_table.md
│   │   │   ├── Isolation_during_flushing_and_merging.md
│   │   │   └── RT_table_structure.md
│   │   ├── Security/
│   │   │   ├── Read_only.md
│   │   │   └── SSL.md
│   │   ├── Server_settings/
│   │   │   ├── Comments.md
│   │   │   ├── Common.md
│   │   │   ├── Inheritance_of_index_and_source_declarations.md
│   │   │   ├── Scripted_configuration.md
│   │   │   ├── Searchd.md
│   │   │   ├── Setting_variables_online.md
│   │   │   └── Special_suffixes.md
│   │   ├── Starting_the_server/
│   │   │   ├── Docker.md
│   │   │   ├── Linux.md
│   │   │   ├── MacOS.md
│   │   │   ├── Manually.md
│   │   │   └── Windows.md
│   │   ├── Starting_the_server.md
│   │   ├── Telemetry.md
│   │   ├── Updating_table_schema_and_settings.md
│   │   ├── latest_release_version
│   │   └── redirects
│   ├── english/
│   │   ├── Changelog.md
│   │   ├── Connecting_to_the_server/
│   │   │   ├── HTTP.md
│   │   │   └── MySQL_protocol.md
│   │   ├── Connecting_to_the_server.md
│   │   ├── Creating_a_cluster/
│   │   │   ├── Adding_a_new_node.md
│   │   │   ├── Creating_a_cluster.md
│   │   │   ├── Remote_nodes/
│   │   │   │   ├── Load_balancing.md
│   │   │   │   └── Mirroring.md
│   │   │   ├── Remote_nodes.md
│   │   │   └── Setting_up_replication/
│   │   │       ├── Adding_and_removing_a_table_from_a_replication_cluster.md
│   │   │       ├── Cluster_recovery.md
│   │   │       ├── Creating_a_replication_cluster.md
│   │   │       ├── Deleting_a_replication_cluster.md
│   │   │       ├── Joining_a_replication_cluster.md
│   │   │       ├── Managing_replication_nodes.md
│   │   │       ├── Replication_cluster_status.md
│   │   │       ├── Restarting_a_cluster.md
│   │   │       └── Setting_up_replication.md
│   │   ├── Creating_a_table/
│   │   │   ├── Creating_a_distributed_table/
│   │   │   │   ├── Creating_a_distributed_table.md
│   │   │   │   ├── Creating_a_local_distributed_table.md
│   │   │   │   └── Remote_tables.md
│   │   │   ├── Data_types.md
│   │   │   ├── Local_tables/
│   │   │   │   ├── Percolate_table.md
│   │   │   │   ├── Plain_and_real-time_table_settings.md
│   │   │   │   ├── Plain_table.md
│   │   │   │   ├── Real-time_table.md
│   │   │   │   └── Template_table.md
│   │   │   ├── Local_tables.md
│   │   │   └── NLP_and_tokenization/
│   │   │       ├── Advanced_HTML_tokenization.md
│   │   │       ├── Data_tokenization.md
│   │   │       ├── Exceptions.md
│   │   │       ├── Ignoring_stop-words.md
│   │   │       ├── Languages_with_continuous_scripts.md
│   │   │       ├── Low-level_tokenization.md
│   │   │       ├── Morphology.md
│   │   │       ├── Supported_languages.md
│   │   │       ├── Wildcard_searching_settings.md
│   │   │       └── Wordforms.md
│   │   ├── Creating_a_table.md
│   │   ├── Data_creation_and_modification/
│   │   │   ├── Adding_data_from_external_storages/
│   │   │   │   ├── Adding_data_to_tables/
│   │   │   │   │   ├── Attaching_one_table_to_another.md
│   │   │   │   │   ├── Importing_table.md
│   │   │   │   │   ├── Killlist_in_plain_tables.md
│   │   │   │   │   └── Merging_tables.md
│   │   │   │   ├── Fetching_from_CSV,TSV.md
│   │   │   │   ├── Fetching_from_XML_streams.md
│   │   │   │   ├── Fetching_from_databases/
│   │   │   │   │   ├── Database_connection.md
│   │   │   │   │   ├── Execution_of_fetch_queries.md
│   │   │   │   │   ├── Introduction.md
│   │   │   │   │   ├── Processing_fetched_data.md
│   │   │   │   │   └── Ranged_queries.md
│   │   │   │   ├── Main_delta.md
│   │   │   │   ├── Plain_tables_creation.md
│   │   │   │   └── Rotating_a_table.md
│   │   │   ├── Adding_data_from_external_storages.md
│   │   │   ├── Adding_documents_to_a_table/
│   │   │   │   ├── Adding_documents_to_a_real-time_table.md
│   │   │   │   └── Adding_rules_to_a_percolate_table.md
│   │   │   ├── Data_creation_and_modification.md
│   │   │   ├── Deleting_documents.md
│   │   │   ├── Transactions.md
│   │   │   └── Updating_documents/
│   │   │       ├── REPLACE.md
│   │   │       ├── REPLACE_vs_UPDATE.md
│   │   │       └── UPDATE.md
│   │   ├── Deleting_a_table.md
│   │   ├── Emptying_a_table.md
│   │   ├── Extensions/
│   │   │   ├── FEDERATED.md
│   │   │   ├── SphinxSE.md
│   │   │   └── UDFs_and_Plugins/
│   │   │       ├── Listing_plugins.md
│   │   │       ├── Plugins/
│   │   │       │   ├── Creating_a_plugin.md
│   │   │       │   ├── Deleting_a_plugin.md
│   │   │       │   ├── Enabling_and_disabling_buddy_plugins.md
│   │   │       │   ├── Ranker_plugins.md
│   │   │       │   ├── Reloading_plugins.md
│   │   │       │   └── Token_filter_plugins.md
│   │   │       ├── UDF/
│   │   │       │   ├── Creating_a_function.md
│   │   │       │   └── Deleting_a_function.md
│   │   │       ├── UDF.md
│   │   │       └── UDFs_and_Plugins.md
│   │   ├── Functions/
│   │   │   ├── Arrays_and_conditions_functions.md
│   │   │   ├── Date_and_time_functions.md
│   │   │   ├── Geo_spatial_functions.md
│   │   │   ├── Mathematical_functions.md
│   │   │   ├── Other_functions.md
│   │   │   ├── Searching_and_ranking_functions.md
│   │   │   ├── String_functions.md
│   │   │   └── Type_casting_functions.md
│   │   ├── Functions.md
│   │   ├── Installation/
│   │   │   ├── Compiling_from_sources.md
│   │   │   ├── Debian_and_Ubuntu.md
│   │   │   ├── Docker.md
│   │   │   ├── Installation.md
│   │   │   ├── MacOS.md
│   │   │   ├── Manticore_Buddy.md
│   │   │   ├── Migration_from_Sphinx.md
│   │   │   ├── RHEL_and_Centos.md
│   │   │   └── Windows.md
│   │   ├── Integration/
│   │   │   ├── Apache_Superset.md
│   │   │   ├── DBeaver.md
│   │   │   ├── Filebeat.md
│   │   │   ├── Fluentbit.md
│   │   │   ├── Grafana.md
│   │   │   ├── Kafka.md
│   │   │   ├── Kibana.md
│   │   │   ├── Logstash.md
│   │   │   └── Vectordev.md
│   │   ├── Introduction.md
│   │   ├── Listing_tables.md
│   │   ├── Logging/
│   │   │   ├── Binary_logging.md
│   │   │   ├── Docker_logging.md
│   │   │   ├── Query_logging.md
│   │   │   ├── Rotating_query_and_server_logs.md
│   │   │   └── Server_logging.md
│   │   ├── Miscellaneous_tools.md
│   │   ├── Node_info_and_management/
│   │   │   ├── KILL.md
│   │   │   ├── Node_status.md
│   │   │   ├── Profiling/
│   │   │   │   ├── Query_plan.md
│   │   │   │   └── Query_profile.md
│   │   │   ├── SHOW_META.md
│   │   │   ├── SHOW_QUERIES.md
│   │   │   ├── SHOW_THREADS.md
│   │   │   ├── SHOW_VARIABLES.md
│   │   │   ├── SHOW_VERSION.md
│   │   │   ├── SHOW_WARNINGS.md
│   │   │   └── Table_settings_and_status/
│   │   │       ├── SHOW_TABLE_INDEXES.md
│   │   │       ├── SHOW_TABLE_SETTINGS.md
│   │   │       └── SHOW_TABLE_STATUS.md
│   │   ├── Openapi.md
│   │   ├── Quick_start_guide.md
│   │   ├── README.md
│   │   ├── Read_this_first.md
│   │   ├── References.md
│   │   ├── Reporting_bugs.md
│   │   ├── Searching/
│   │   │   ├── Autocomplete.md
│   │   │   ├── Collations.md
│   │   │   ├── Cost_based_optimizer.md
│   │   │   ├── Distributed_searching.md
│   │   │   ├── Expressions.md
│   │   │   ├── Faceted_search.md
│   │   │   ├── Filters.md
│   │   │   ├── Full_text_matching/
│   │   │   │   ├── Basic_usage.md
│   │   │   │   ├── Boolean_optimization.md
│   │   │   │   ├── Escaping.md
│   │   │   │   ├── Operators.md
│   │   │   │   └── Profiling.md
│   │   │   ├── Geo_search.md
│   │   │   ├── Grouping.md
│   │   │   ├── Highlighting.md
│   │   │   ├── Intro.md
│   │   │   ├── Joining.md
│   │   │   ├── KNN.md
│   │   │   ├── Multi-queries.md
│   │   │   ├── Options.md
│   │   │   ├── Pagination.md
│   │   │   ├── Percolate_query.md
│   │   │   ├── Query_cache.md
│   │   │   ├── Search_results.md
│   │   │   ├── Sorting_and_ranking.md
│   │   │   ├── Spell_correction.md
│   │   │   └── Sub-selects.md
│   │   ├── Securing_and_compacting_a_table/
│   │   │   ├── Backup_and_restore.md
│   │   │   ├── Compacting_a_table.md
│   │   │   ├── Flushing_RAM_chunk_to_a_new_disk_chunk.md
│   │   │   ├── Flushing_RAM_chunk_to_disk.md
│   │   │   ├── Flushing_attributes.md
│   │   │   ├── Flushing_hostnames.md
│   │   │   ├── Freezing_and_locking_a_table.md
│   │   │   ├── Isolation_during_flushing_and_merging.md
│   │   │   └── RT_table_structure.md
│   │   ├── Security/
│   │   │   ├── Read_only.md
│   │   │   └── SSL.md
│   │   ├── Server_settings/
│   │   │   ├── Comments.md
│   │   │   ├── Common.md
│   │   │   ├── Inheritance_of_index_and_source_declarations.md
│   │   │   ├── Scripted_configuration.md
│   │   │   ├── Searchd.md
│   │   │   ├── Setting_variables_online.md
│   │   │   └── Special_suffixes.md
│   │   ├── Starting_the_server/
│   │   │   ├── Docker.md
│   │   │   ├── Linux.md
│   │   │   ├── MacOS.md
│   │   │   ├── Manually.md
│   │   │   └── Windows.md
│   │   ├── Starting_the_server.md
│   │   ├── Telemetry.md
│   │   ├── Updating_table_schema_and_settings.md
│   │   ├── latest_release_version
│   │   └── redirects
│   ├── latest_release_version
│   └── russian/
│       ├── Changelog.md
│       ├── Connecting_to_the_server/
│       │   ├── HTTP.md
│       │   └── MySQL_protocol.md
│       ├── Connecting_to_the_server.md
│       ├── Creating_a_cluster/
│       │   ├── Adding_a_new_node.md
│       │   ├── Creating_a_cluster.md
│       │   ├── Remote_nodes/
│       │   │   ├── Load_balancing.md
│       │   │   └── Mirroring.md
│       │   ├── Remote_nodes.md
│       │   └── Setting_up_replication/
│       │       ├── Adding_and_removing_a_table_from_a_replication_cluster.md
│       │       ├── Cluster_recovery.md
│       │       ├── Creating_a_replication_cluster.md
│       │       ├── Deleting_a_replication_cluster.md
│       │       ├── Joining_a_replication_cluster.md
│       │       ├── Managing_replication_nodes.md
│       │       ├── Replication_cluster_status.md
│       │       ├── Restarting_a_cluster.md
│       │       └── Setting_up_replication.md
│       ├── Creating_a_table/
│       │   ├── Creating_a_distributed_table/
│       │   │   ├── Creating_a_distributed_table.md
│       │   │   ├── Creating_a_local_distributed_table.md
│       │   │   └── Remote_tables.md
│       │   ├── Data_types.md
│       │   ├── Local_tables/
│       │   │   ├── Percolate_table.md
│       │   │   ├── Plain_and_real-time_table_settings.md
│       │   │   ├── Plain_table.md
│       │   │   ├── Real-time_table.md
│       │   │   └── Template_table.md
│       │   ├── Local_tables.md
│       │   └── NLP_and_tokenization/
│       │       ├── Advanced_HTML_tokenization.md
│       │       ├── Data_tokenization.md
│       │       ├── Exceptions.md
│       │       ├── Ignoring_stop-words.md
│       │       ├── Languages_with_continuous_scripts.md
│       │       ├── Low-level_tokenization.md
│       │       ├── Morphology.md
│       │       ├── Supported_languages.md
│       │       ├── Wildcard_searching_settings.md
│       │       └── Wordforms.md
│       ├── Creating_a_table.md
│       ├── Data_creation_and_modification/
│       │   ├── Adding_data_from_external_storages/
│       │   │   ├── Adding_data_to_tables/
│       │   │   │   ├── Attaching_one_table_to_another.md
│       │   │   │   ├── Importing_table.md
│       │   │   │   ├── Killlist_in_plain_tables.md
│       │   │   │   └── Merging_tables.md
│       │   │   ├── Fetching_from_CSV,TSV.md
│       │   │   ├── Fetching_from_XML_streams.md
│       │   │   ├── Fetching_from_databases/
│       │   │   │   ├── Database_connection.md
│       │   │   │   ├── Execution_of_fetch_queries.md
│       │   │   │   ├── Introduction.md
│       │   │   │   ├── Processing_fetched_data.md
│       │   │   │   └── Ranged_queries.md
│       │   │   ├── Main_delta.md
│       │   │   ├── Plain_tables_creation.md
│       │   │   └── Rotating_a_table.md
│       │   ├── Adding_data_from_external_storages.md
│       │   ├── Adding_documents_to_a_table/
│       │   │   ├── Adding_documents_to_a_real-time_table.md
│       │   │   └── Adding_rules_to_a_percolate_table.md
│       │   ├── Data_creation_and_modification.md
│       │   ├── Deleting_documents.md
│       │   ├── Transactions.md
│       │   └── Updating_documents/
│       │       ├── REPLACE.md
│       │       ├── REPLACE_vs_UPDATE.md
│       │       └── UPDATE.md
│       ├── Deleting_a_table.md
│       ├── Emptying_a_table.md
│       ├── Extensions/
│       │   ├── FEDERATED.md
│       │   ├── SphinxSE.md
│       │   └── UDFs_and_Plugins/
│       │       ├── Listing_plugins.md
│       │       ├── Plugins/
│       │       │   ├── Creating_a_plugin.md
│       │       │   ├── Deleting_a_plugin.md
│       │       │   ├── Enabling_and_disabling_buddy_plugins.md
│       │       │   ├── Ranker_plugins.md
│       │       │   ├── Reloading_plugins.md
│       │       │   └── Token_filter_plugins.md
│       │       ├── UDF/
│       │       │   ├── Creating_a_function.md
│       │       │   └── Deleting_a_function.md
│       │       ├── UDF.md
│       │       └── UDFs_and_Plugins.md
│       ├── Functions/
│       │   ├── Arrays_and_conditions_functions.md
│       │   ├── Date_and_time_functions.md
│       │   ├── Geo_spatial_functions.md
│       │   ├── Mathematical_functions.md
│       │   ├── Other_functions.md
│       │   ├── Searching_and_ranking_functions.md
│       │   ├── String_functions.md
│       │   └── Type_casting_functions.md
│       ├── Functions.md
│       ├── Installation/
│       │   ├── Compiling_from_sources.md
│       │   ├── Debian_and_Ubuntu.md
│       │   ├── Docker.md
│       │   ├── Installation.md
│       │   ├── MacOS.md
│       │   ├── Manticore_Buddy.md
│       │   ├── Migration_from_Sphinx.md
│       │   ├── RHEL_and_Centos.md
│       │   └── Windows.md
│       ├── Integration/
│       │   ├── Apache_Superset.md
│       │   ├── DBeaver.md
│       │   ├── Filebeat.md
│       │   ├── Fluentbit.md
│       │   ├── Grafana.md
│       │   ├── Kafka.md
│       │   ├── Kibana.md
│       │   ├── Logstash.md
│       │   └── Vectordev.md
│       ├── Introduction.md
│       ├── Listing_tables.md
│       ├── Logging/
│       │   ├── Binary_logging.md
│       │   ├── Docker_logging.md
│       │   ├── Query_logging.md
│       │   ├── Rotating_query_and_server_logs.md
│       │   └── Server_logging.md
│       ├── Miscellaneous_tools.md
│       ├── Node_info_and_management/
│       │   ├── KILL.md
│       │   ├── Node_status.md
│       │   ├── Profiling/
│       │   │   ├── Query_plan.md
│       │   │   └── Query_profile.md
│       │   ├── SHOW_META.md
│       │   ├── SHOW_QUERIES.md
│       │   ├── SHOW_THREADS.md
│       │   ├── SHOW_VARIABLES.md
│       │   ├── SHOW_VERSION.md
│       │   ├── SHOW_WARNINGS.md
│       │   └── Table_settings_and_status/
│       │       ├── SHOW_TABLE_INDEXES.md
│       │       ├── SHOW_TABLE_SETTINGS.md
│       │       └── SHOW_TABLE_STATUS.md
│       ├── Openapi.md
│       ├── Quick_start_guide.md
│       ├── README.md
│       ├── Read_this_first.md
│       ├── References.md
│       ├── Reporting_bugs.md
│       ├── Searching/
│       │   ├── Autocomplete.md
│       │   ├── Collations.md
│       │   ├── Cost_based_optimizer.md
│       │   ├── Distributed_searching.md
│       │   ├── Expressions.md
│       │   ├── Faceted_search.md
│       │   ├── Filters.md
│       │   ├── Full_text_matching/
│       │   │   ├── Basic_usage.md
│       │   │   ├── Boolean_optimization.md
│       │   │   ├── Escaping.md
│       │   │   ├── Operators.md
│       │   │   └── Profiling.md
│       │   ├── Geo_search.md
│       │   ├── Grouping.md
│       │   ├── Highlighting.md
│       │   ├── Intro.md
│       │   ├── Joining.md
│       │   ├── KNN.md
│       │   ├── Multi-queries.md
│       │   ├── Options.md
│       │   ├── Pagination.md
│       │   ├── Percolate_query.md
│       │   ├── Query_cache.md
│       │   ├── Search_results.md
│       │   ├── Sorting_and_ranking.md
│       │   ├── Spell_correction.md
│       │   └── Sub-selects.md
│       ├── Securing_and_compacting_a_table/
│       │   ├── Backup_and_restore.md
│       │   ├── Compacting_a_table.md
│       │   ├── Flushing_RAM_chunk_to_a_new_disk_chunk.md
│       │   ├── Flushing_RAM_chunk_to_disk.md
│       │   ├── Flushing_attributes.md
│       │   ├── Flushing_hostnames.md
│       │   ├── Freezing_and_locking_a_table.md
│       │   ├── Isolation_during_flushing_and_merging.md
│       │   └── RT_table_structure.md
│       ├── Security/
│       │   ├── Read_only.md
│       │   └── SSL.md
│       ├── Server_settings/
│       │   ├── Comments.md
│       │   ├── Common.md
│       │   ├── Inheritance_of_index_and_source_declarations.md
│       │   ├── Scripted_configuration.md
│       │   ├── Searchd.md
│       │   ├── Setting_variables_online.md
│       │   └── Special_suffixes.md
│       ├── Starting_the_server/
│       │   ├── Docker.md
│       │   ├── Linux.md
│       │   ├── MacOS.md
│       │   ├── Manually.md
│       │   └── Windows.md
│       ├── Starting_the_server.md
│       ├── Telemetry.md
│       ├── Updating_table_schema_and_settings.md
│       ├── latest_release_version
│       └── redirects
├── memcheck.sh
├── memdocker.sh
├── misc/
│   ├── .gitignore
│   ├── build-local-test-kit.sh
│   ├── compare_manuals.sh
│   ├── ctest/
│   │   ├── gltest.cmake
│   │   ├── justbuild.cmake
│   │   ├── memcheck.cmake
│   │   ├── memcheck.md
│   │   ├── ubertests/
│   │   │   ├── Dockerfile
│   │   │   ├── aot.sh
│   │   │   ├── entry_point.sh
│   │   │   └── ubertests_docker_image/
│   │   │       ├── Dockerfile
│   │   │       ├── entry_point.sh
│   │   │       ├── resource.json
│   │   │       └── sphinx
│   │   └── valgrind/
│   │       ├── Dockerfile
│   │       ├── entry_point.sh
│   │       └── sphinx
│   ├── dockerfiles/
│   │   ├── README.md
│   │   ├── mysql/
│   │   │   ├── Dockerfile
│   │   │   └── docker-entrypoint.sh
│   │   ├── scripts/
│   │   │   ├── smoke.sh
│   │   │   ├── smoke_libclient.sh
│   │   │   └── smoke_tests.sh
│   │   └── test/
│   │       └── Dockerfile
│   ├── http-log-to-test
│   ├── junit/
│   │   └── ctest2junit.xsl
│   ├── manticore.natvis
│   ├── manticore_lldb.py
│   ├── manual.sh
│   ├── raminfo.py
│   ├── resolve.py
│   ├── search_json_pretty.php
│   ├── stopwords/
│   │   ├── af
│   │   ├── ar
│   │   ├── bg
│   │   ├── bn
│   │   ├── ca
│   │   ├── ckb
│   │   ├── cz
│   │   ├── da
│   │   ├── de
│   │   ├── el
│   │   ├── en
│   │   ├── eo
│   │   ├── es
│   │   ├── et
│   │   ├── eu
│   │   ├── fa
│   │   ├── fi
│   │   ├── fr
│   │   ├── ga
│   │   ├── gl
│   │   ├── he
│   │   ├── hi
│   │   ├── hr
│   │   ├── hu
│   │   ├── hy
│   │   ├── id
│   │   ├── it
│   │   ├── ja
│   │   ├── ko
│   │   ├── la
│   │   ├── languages_list.txt
│   │   ├── lt
│   │   ├── lv
│   │   ├── mr
│   │   ├── nl
│   │   ├── no
│   │   ├── pl
│   │   ├── pt
│   │   ├── ro
│   │   ├── ru
│   │   ├── sk
│   │   ├── sl
│   │   ├── so
│   │   ├── st
│   │   ├── sv
│   │   ├── sw
│   │   ├── th
│   │   ├── tr
│   │   ├── yo
│   │   ├── zh
│   │   └── zu
│   ├── suggest/
│   │   ├── README
│   │   ├── suggest.conf
│   │   └── suggest.php
│   ├── tzdata/
│   │   └── Asia/
│   │       └── Novosibirsk
│   ├── winbundle/
│   │   ├── CURLConfig.cmake
│   │   ├── EXPATConfig.cmake
│   │   ├── IconvConfig.cmake
│   │   ├── MysqlConfig.cmake
│   │   ├── OpenSSLConfig.cmake
│   │   ├── PostgreSQLConfig.cmake
│   │   ├── README.md
│   │   └── ZSTDConfig.cmake
│   └── wordbreak.pl
├── mysqlse/
│   ├── CMakeLists.txt
│   ├── INSTALL
│   ├── Makefile.am
│   ├── gen_data.php
│   ├── ha_sphinx.cc
│   ├── ha_sphinx.h
│   ├── make-patch.sh
│   ├── plug.in
│   ├── snippets_udf.cc
│   ├── sphinx.5.0.22.diff
│   ├── sphinx.5.0.27.diff
│   ├── sphinx.5.0.37.diff
│   └── sphinx.5.0.91.diff
├── smoke.sh
├── smokeci.sh
├── sphinxrev.cmake
├── sphinxrevcheck.cmake
├── src/
│   ├── .clang-format
│   ├── .cursor/
│   │   └── rules/
│   │       └── stas-1.mdc
│   ├── .gitattributes
│   ├── CMakeLists.txt
│   ├── accumulator.cpp
│   ├── accumulator.h
│   ├── aggregate.cpp
│   ├── aggregate.h
│   ├── aggrexpr.cpp
│   ├── aggrexpr.h
│   ├── attr_embedding.cpp
│   ├── attr_embedding.h
│   ├── attribute.cpp
│   ├── attribute.h
│   ├── attrindex_builder.cpp
│   ├── attrindex_builder.h
│   ├── attrindex_merge.cpp
│   ├── attrindex_merge.h
│   ├── binlog.cpp
│   ├── binlog.h
│   ├── binlog_defs.h
│   ├── charsets/
│   │   ├── chinese.txt
│   │   ├── cjk.txt
│   │   ├── cont.txt
│   │   ├── english.txt
│   │   ├── globalaliases.h.in
│   │   ├── japanese.txt
│   │   ├── korean.txt
│   │   ├── non_cjk.txt
│   │   ├── non_cont.txt
│   │   ├── russian.txt
│   │   └── thai.txt
│   ├── chunksearchctx.cpp
│   ├── chunksearchctx.h
│   ├── cjkpreprocessor.cpp
│   ├── cjkpreprocessor.h
│   ├── client_session.h
│   ├── client_task_info.cpp
│   ├── client_task_info.h
│   ├── collation.cpp
│   ├── collation.h
│   ├── columnarexpr.cpp
│   ├── columnarexpr.h
│   ├── columnarfilter.cpp
│   ├── columnarfilter.h
│   ├── columnargrouper.cpp
│   ├── columnargrouper.h
│   ├── columnarlib.cpp
│   ├── columnarlib.h
│   ├── columnarmisc.cpp
│   ├── columnarmisc.h
│   ├── columnarrt.cpp
│   ├── columnarrt.h
│   ├── columnarsort.cpp
│   ├── columnarsort.h
│   ├── compressed_http.cpp
│   ├── compressed_http.h
│   ├── compressed_mysql_layer.cpp
│   ├── compressed_mysql_layer.h
│   ├── compressed_zlib_mysql.cpp
│   ├── compressed_zlib_mysql.h
│   ├── compressed_zstd_mysql.cpp
│   ├── compressed_zstd_mysql.h
│   ├── config_reloader.cpp
│   ├── config_reloader.h
│   ├── conversion.cpp
│   ├── conversion.h
│   ├── coro_stack.cpp
│   ├── coro_stack.h
│   ├── coro_waker.h
│   ├── coroutine.cpp
│   ├── coroutine.h
│   ├── costestimate.cpp
│   ├── costestimate.h
│   ├── daemon/
│   │   ├── CMakeLists.txt
│   │   ├── api_commands.h
│   │   ├── api_search.cpp
│   │   ├── api_search.h
│   │   ├── crash_logger.cpp
│   │   ├── crash_logger.h
│   │   ├── daemon_log.cpp
│   │   ├── failures_log.cpp
│   │   ├── failures_log.h
│   │   ├── http_log.cpp
│   │   ├── logger.h
│   │   ├── match_iterator.cpp
│   │   ├── match_iterator.h
│   │   ├── minimize_aggr_result.cpp
│   │   ├── minimize_aggr_result.h
│   │   ├── query_log.cpp
│   │   ├── search_handler.cpp
│   │   ├── search_handler.h
│   │   ├── system_tables.cpp
│   │   ├── winservice.cpp
│   │   └── winservice.h
│   ├── datareader.cpp
│   ├── datareader.h
│   ├── datetime.cpp
│   ├── datetime.h
│   ├── ddl.l
│   ├── ddl.y
│   ├── debug_cmds.cpp
│   ├── debug_cmds.h
│   ├── detail/
│   │   ├── coroutine_impl.h
│   │   ├── expmeter.h
│   │   ├── indexlink.cpp
│   │   └── indexlink.h
│   ├── dict/
│   │   ├── CMakeLists.txt
│   │   ├── aggregate_hit.h
│   │   ├── bin.cpp
│   │   ├── bin.h
│   │   ├── crc_engine.h
│   │   ├── crc_engine_impl.h
│   │   ├── dict_base.cpp
│   │   ├── dict_base.h
│   │   ├── dict_crc.cpp
│   │   ├── dict_crc.h
│   │   ├── dict_crc_impl.h
│   │   ├── dict_entry.h
│   │   ├── dict_exact.cpp
│   │   ├── dict_keywords.cpp
│   │   ├── dict_proxy.h
│   │   ├── dict_star.cpp
│   │   ├── infix/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── infix_builder.cpp
│   │   │   └── infix_builder.h
│   │   ├── stem/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── sphinxmetaphone.cpp
│   │   │   ├── sphinxsoundex.cpp
│   │   │   ├── sphinxstem.h
│   │   │   ├── sphinxstemar.cpp
│   │   │   ├── sphinxstemcz.cpp
│   │   │   ├── sphinxstemen.cpp
│   │   │   ├── sphinxstemru.cpp
│   │   │   └── sphinxstemru.inl
│   │   ├── template_dict_traits.cpp
│   │   ├── template_dict_traits.h
│   │   ├── word_forms.cpp
│   │   └── word_forms.h
│   ├── digest_sha1.cpp
│   ├── digest_sha1.h
│   ├── distinct.cpp
│   ├── distinct.h
│   ├── docidlookup.cpp
│   ├── docidlookup.h
│   ├── docs_collector.cpp
│   ├── docs_collector.h
│   ├── docstore.cpp
│   ├── docstore.h
│   ├── dynamic_idx.cpp
│   ├── dynamic_idx.h
│   ├── embeddingutils.cpp
│   ├── embeddingutils.h
│   ├── event.h
│   ├── exprdatetime.cpp
│   ├── exprdatetime.h
│   ├── exprdocstore.cpp
│   ├── exprdocstore.h
│   ├── exprgeodist.cpp
│   ├── exprgeodist.h
│   ├── exprremap.cpp
│   ├── exprremap.h
│   ├── exprtraits.cpp
│   ├── exprtraits.h
│   ├── farmhash/
│   │   └── farmhash.h
│   ├── fileio.cpp
│   ├── fileio.h
│   ├── fileutils.cpp
│   ├── fileutils.h
│   ├── frontendschema.cpp
│   ├── frontendschema.h
│   ├── fuzzer/
│   │   ├── CMakeLists.txt
│   │   ├── dict.txt
│   │   └── fuzzer.cpp
│   ├── gbenches/
│   │   ├── CMakeLists.txt
│   │   ├── appendf.cpp
│   │   ├── cJSON_test.c
│   │   ├── expressions.cpp
│   │   ├── functions.cpp
│   │   ├── geodist.cpp
│   │   ├── json.cpp
│   │   ├── locators.cpp
│   │   ├── misc.cpp
│   │   ├── popcount.cpp
│   │   ├── stripper.cpp
│   │   ├── text.cpp
│   │   └── tokenizer.cpp
│   ├── geodist.cpp
│   ├── geodist.h
│   ├── global_idf.cpp
│   ├── global_idf.h
│   ├── grouper.cpp
│   ├── grouper.h
│   ├── gtests/
│   │   ├── CMakeLists.txt
│   │   ├── gtests_filter.cpp
│   │   ├── gtests_functions.cpp
│   │   ├── gtests_globalstate.cpp
│   │   ├── gtests_hugetokenizer.cpp
│   │   ├── gtests_json.cpp
│   │   ├── gtests_pqstuff.cpp
│   │   ├── gtests_rtstuff.cpp
│   │   ├── gtests_searchd.cpp
│   │   ├── gtests_searchdaemon.cpp
│   │   ├── gtests_strfmt.cpp
│   │   ├── gtests_stringbuilder.cpp
│   │   ├── gtests_text.cpp
│   │   ├── gtests_threadstuff.cpp
│   │   ├── gtests_tokenizer.cpp
│   │   ├── gtests_wsrep.cpp
│   │   ├── libsphinxtest.txt
│   │   └── libsphinxtest2.txt
│   ├── hazard_pointer.cpp
│   ├── hazard_pointer.h
│   ├── histogram.cpp
│   ├── histogram.h
│   ├── http/
│   │   ├── http_parser.c
│   │   ├── http_parser.h
│   │   └── log_management.h
│   ├── hyperloglog.cpp
│   ├── hyperloglog.h
│   ├── icu.cpp
│   ├── icu.h
│   ├── index_converter.cpp
│   ├── index_rotator.cpp
│   ├── index_rotator.h
│   ├── indexcheck.cpp
│   ├── indexcheck.h
│   ├── indexer.cpp
│   ├── indexfilebase.cpp
│   ├── indexfilebase.h
│   ├── indexfiles.cpp
│   ├── indexfiles.h
│   ├── indexformat.cpp
│   ├── indexformat.h
│   ├── indexing_sources/
│   │   ├── CMakeLists.txt
│   │   ├── schema_configurator.h
│   │   ├── source_document.cpp
│   │   ├── source_document.h
│   │   ├── source_mysql.cpp
│   │   ├── source_mysql.h
│   │   ├── source_odbc.cpp
│   │   ├── source_odbc.h
│   │   ├── source_pgsql.cpp
│   │   ├── source_pgsql.h
│   │   ├── source_sql.cpp
│   │   ├── source_sql.h
│   │   ├── source_stats.h
│   │   ├── source_svpipe.cpp
│   │   ├── source_svpipe.h
│   │   ├── source_xmlpipe2.cpp
│   │   └── source_xmlpipe2.h
│   ├── indexsettings.cpp
│   ├── indexsettings.h
│   ├── indextool.cpp
│   ├── jieba.cpp
│   ├── jieba.h
│   ├── joinsorter.cpp
│   ├── joinsorter.h
│   ├── json/
│   │   ├── cJSON.c
│   │   └── cJSON.h
│   ├── jsonqueryfilter.cpp
│   ├── jsonqueryfilter.h
│   ├── jsonsi.cpp
│   ├── jsonsi.h
│   ├── killlist.cpp
│   ├── killlist.h
│   ├── knnlib.cpp
│   ├── knnlib.h
│   ├── knnmisc.cpp
│   ├── knnmisc.h
│   ├── libutils.cpp
│   ├── libutils.h
│   ├── literal.h.in
│   ├── loop_profiler.h
│   ├── lz4/
│   │   ├── lz4.c
│   │   ├── lz4.h
│   │   ├── lz4hc.c
│   │   └── lz4hc.h
│   ├── match.h
│   ├── match_impl.h
│   ├── memio.cpp
│   ├── memio.h
│   ├── memio_impl.h
│   ├── mini_timer.cpp
│   ├── mini_timer.h
│   ├── net_action_accept.cpp
│   ├── net_action_accept.h
│   ├── netfetch.cpp
│   ├── netfetch.h
│   ├── netpoll.cpp
│   ├── netpoll.h
│   ├── netreceive_api.cpp
│   ├── netreceive_api.h
│   ├── netreceive_http.cpp
│   ├── netreceive_http.h
│   ├── netreceive_ql.cpp
│   ├── netreceive_ql.h
│   ├── networking_daemon.cpp
│   ├── networking_daemon.h
│   ├── perfetto/
│   │   ├── CMakeLists.txt
│   │   └── README.txt
│   ├── pollable_event.cpp
│   ├── pollable_event.h
│   ├── pseudosharding.cpp
│   ├── pseudosharding.h
│   ├── query_status.cpp
│   ├── query_status.h
│   ├── querycontext.cpp
│   ├── querycontext.h
│   ├── queryfilter.cpp
│   ├── queryfilter.h
│   ├── queryprofile.cpp
│   ├── queryprofile.h
│   ├── querystats.cpp
│   ├── querystats.h
│   ├── queuecreator.cpp
│   ├── queuecreator.h
│   ├── replication/
│   │   ├── CMakeLists.txt
│   │   ├── api_command_cluster.cpp
│   │   ├── api_command_cluster.h
│   │   ├── cluster_binlog.cpp
│   │   ├── cluster_binlog.h
│   │   ├── cluster_commands.h
│   │   ├── cluster_delete.cpp
│   │   ├── cluster_delete.h
│   │   ├── cluster_file_reserve.cpp
│   │   ├── cluster_file_reserve.h
│   │   ├── cluster_file_send.cpp
│   │   ├── cluster_file_send.h
│   │   ├── cluster_get_nodes.cpp
│   │   ├── cluster_get_nodes.h
│   │   ├── cluster_index_add_local.cpp
│   │   ├── cluster_index_add_local.h
│   │   ├── cluster_recv_state_cleanup.cpp
│   │   ├── cluster_recv_state_cleanup.h
│   │   ├── cluster_sst_progress.cpp
│   │   ├── cluster_sst_progress.h
│   │   ├── cluster_synced.cpp
│   │   ├── cluster_synced.h
│   │   ├── cluster_update_nodes.cpp
│   │   ├── cluster_update_nodes.h
│   │   ├── commit_monitor.cpp
│   │   ├── commit_monitor.h
│   │   ├── common.h
│   │   ├── configuration.cpp
│   │   ├── configuration.h
│   │   ├── grastate.cpp
│   │   ├── grastate.h
│   │   ├── nodes.cpp
│   │   ├── nodes.h
│   │   ├── portrange.cpp
│   │   ├── portrange.h
│   │   ├── receiver_ctx.cpp
│   │   ├── receiver_ctx.h
│   │   ├── recv_state.cpp
│   │   ├── recv_state.h
│   │   ├── replicate_index.cpp
│   │   ├── replicate_index.h
│   │   ├── send_files.cpp
│   │   ├── send_files.h
│   │   ├── serialize.cpp
│   │   ├── serialize.h
│   │   ├── wsrep_cxx.cpp
│   │   ├── wsrep_cxx.h
│   │   ├── wsrep_cxx_int.h
│   │   ├── wsrep_documentation/
│   │   │   └── wsrep_api_h.txt
│   │   ├── wsrep_v25.cpp
│   │   └── wsrep_v31.cpp
│   ├── reserved.py
│   ├── schema/
│   │   ├── CMakeLists.txt
│   │   ├── columninfo.cpp
│   │   ├── columninfo.h
│   │   ├── helper.cpp
│   │   ├── helper.h
│   │   ├── ischema.h
│   │   ├── locator.h
│   │   ├── locator_impl.h
│   │   ├── rset.cpp
│   │   ├── rset.h
│   │   ├── schema.cpp
│   │   └── schema.h
│   ├── schematransform.cpp
│   ├── schematransform.h
│   ├── searchd.cpp
│   ├── searchdaemon.cpp
│   ├── searchdaemon.h
│   ├── searchdbuddy.cpp
│   ├── searchdbuddy.h
│   ├── searchdconfig.cpp
│   ├── searchdconfig.h
│   ├── searchdddl.cpp
│   ├── searchdddl.h
│   ├── searchdexpr.cpp
│   ├── searchdexpr.h
│   ├── searchdfields.cpp
│   ├── searchdha.cpp
│   ├── searchdha.h
│   ├── searchdhttp.cpp
│   ├── searchdhttp.h
│   ├── searchdhttpcompat.cpp
│   ├── searchdreplication.cpp
│   ├── searchdreplication.h
│   ├── searchdsql.cpp
│   ├── searchdsql.h
│   ├── searchdssl.cpp
│   ├── searchdssl.h
│   ├── searchdssl_stub.cpp
│   ├── searchdtask.cpp
│   ├── searchdtask.h
│   ├── searchnode.cpp
│   ├── searchnode.h
│   ├── secondaryindex.cpp
│   ├── secondaryindex.h
│   ├── secondarylib.cpp
│   ├── secondarylib.h
│   ├── skip_cache.cpp
│   ├── skip_cache.h
│   ├── snippetfunctor.cpp
│   ├── snippetfunctor.h
│   ├── snippetindex.cpp
│   ├── snippetindex.h
│   ├── snippetpassage.cpp
│   ├── snippetpassage.h
│   ├── snippetstream.cpp
│   ├── snippetstream.h
│   ├── sortcomp.h
│   ├── sortergroup.cpp
│   ├── sortergroup.h
│   ├── sorterprecalc.cpp
│   ├── sorterprecalc.h
│   ├── sorterscroll.cpp
│   ├── sorterscroll.h
│   ├── sortertraits.cpp
│   ├── sortertraits.h
│   ├── sortsetup.cpp
│   ├── sortsetup.h
│   ├── spelldump.cpp
│   ├── sphinx.cpp
│   ├── sphinx.h
│   ├── sphinx_alter.cpp
│   ├── sphinx_alter.h
│   ├── sphinxaot.cpp
│   ├── sphinxdefs.h
│   ├── sphinxexcerpt.cpp
│   ├── sphinxexcerpt.h
│   ├── sphinxexpr.cpp
│   ├── sphinxexpr.h
│   ├── sphinxexpr.l
│   ├── sphinxexpr.y
│   ├── sphinxfilter.cpp
│   ├── sphinxfilter.h
│   ├── sphinxint.h
│   ├── sphinxjson.cpp
│   ├── sphinxjson.h
│   ├── sphinxjson.l
│   ├── sphinxjson.y
│   ├── sphinxjsonquery.cpp
│   ├── sphinxjsonquery.h
│   ├── sphinxplugin.cpp
│   ├── sphinxplugin.h
│   ├── sphinxpq.cpp
│   ├── sphinxpq.h
│   ├── sphinxqcache.cpp
│   ├── sphinxqcache.h
│   ├── sphinxql.l
│   ├── sphinxql.y
│   ├── sphinxql_debug.cpp
│   ├── sphinxql_debug.h
│   ├── sphinxql_debug.l
│   ├── sphinxql_debug.y
│   ├── sphinxql_extra.cpp
│   ├── sphinxql_extra.h
│   ├── sphinxql_extra.l
│   ├── sphinxql_extra.y
│   ├── sphinxql_second.cpp
│   ├── sphinxql_second.h
│   ├── sphinxql_second.l
│   ├── sphinxql_second.y
│   ├── sphinxquery/
│   │   ├── CMakeLists.txt
│   │   ├── common_subtree.cpp
│   │   ├── parse_helper.cpp
│   │   ├── parse_helper.h
│   │   ├── sphinxquery.cpp
│   │   ├── sphinxquery.h
│   │   ├── sphinxquery.y
│   │   ├── transform_andnotnotnot.cpp
│   │   ├── transform_commonandnotfactor.cpp
│   │   ├── transform_commoncompoundnot.cpp
│   │   ├── transform_commonkeywords.cpp
│   │   ├── transform_commonnot.cpp
│   │   ├── transform_commonornot.cpp
│   │   ├── transform_commonsubterm.cpp
│   │   ├── transform_excessandnot.cpp
│   │   ├── transform_hungoperand.cpp
│   │   ├── transform_phrase.cpp
│   │   ├── transformation.cpp
│   │   ├── transformation.h
│   │   ├── xqdebug.h
│   │   ├── xqnode.cpp
│   │   ├── xqparser.cpp
│   │   └── xqparser.h
│   ├── sphinxrt.cpp
│   ├── sphinxrt.h
│   ├── sphinxsearch.cpp
│   ├── sphinxsearch.h
│   ├── sphinxselect.y
│   ├── sphinxsort.cpp
│   ├── sphinxsort.h
│   ├── sphinxstd.h
│   ├── sphinxudf.c
│   ├── sphinxudf.h
│   ├── sphinxutils.cpp
│   ├── sphinxutils.h
│   ├── sphinxversion.cpp
│   ├── sphinxversion.h.in
│   ├── sqlchecks/
│   │   ├── CMakeLists.txt
│   │   ├── checks.h
│   │   ├── scan_parameters.cpp
│   │   ├── scanparams.l
│   │   ├── validate_vector.cpp
│   │   └── validatevec.l
│   ├── stackmock.cpp
│   ├── stackmock.h
│   ├── std/
│   │   ├── CMakeLists.txt
│   │   ├── accessor.h
│   │   ├── accessor_impl.h
│   │   ├── at_scope_exit.h
│   │   ├── attrstub.h
│   │   ├── autoevent.cpp
│   │   ├── autoevent.h
│   │   ├── base64.cpp
│   │   ├── base64.h
│   │   ├── binarysearch.h
│   │   ├── binarysearch_impl.h
│   │   ├── bitcount.h
│   │   ├── bitcount_impl.h
│   │   ├── bitvec.h
│   │   ├── bitvec_impl.h
│   │   ├── blobs.h
│   │   ├── blobs_impl.h
│   │   ├── buffer.h
│   │   ├── buffer_impl.h
│   │   ├── checks.cpp
│   │   ├── checks.h
│   │   ├── circular_buffer.h
│   │   ├── circular_buffer_impl.h
│   │   ├── comma.h
│   │   ├── comma_impl.h
│   │   ├── comp.h
│   │   ├── comp_impl.h
│   │   ├── crc32.cpp
│   │   ├── crc32.h
│   │   ├── crc32_impl.h
│   │   ├── datamove.h
│   │   ├── datamove_impl.h
│   │   ├── deleter.h
│   │   ├── deleter_impl.h
│   │   ├── env.cpp
│   │   ├── env.h
│   │   ├── escaped_builder.h
│   │   ├── escaped_builder_impl.h
│   │   ├── fastlog.cpp
│   │   ├── fastlog.h
│   │   ├── fastlog_impl.h
│   │   ├── fatal.cpp
│   │   ├── fatal.h
│   │   ├── fixedvector.h
│   │   ├── fixedvector_impl.h
│   │   ├── fnv64.cpp
│   │   ├── fnv64.h
│   │   ├── format.h
│   │   ├── generics.h
│   │   ├── hash.h
│   │   ├── helpers.h
│   │   ├── helpers_impl.h
│   │   ├── ints.h
│   │   ├── iterations.h
│   │   ├── iterations_impl.h
│   │   ├── largebuffer.h
│   │   ├── largebuffer_impl.h
│   │   ├── log2.h
│   │   ├── log2_impl.h
│   │   ├── lrucache.h
│   │   ├── lrucache_impl.h
│   │   ├── mem.cpp
│   │   ├── mem.h
│   │   ├── mm.cpp
│   │   ├── mm.h
│   │   ├── mutex.cpp
│   │   ├── mutex.h
│   │   ├── num_conv.h
│   │   ├── num_conv_impl.h
│   │   ├── openhash.h
│   │   ├── openhash_impl.h
│   │   ├── orderedhash.h
│   │   ├── orderedhash_impl.h
│   │   ├── queue.h
│   │   ├── queue_impl.h
│   │   ├── rand.cpp
│   │   ├── rand.h
│   │   ├── refcounted_mt.h
│   │   ├── refcounted_mt_impl.h
│   │   ├── refptr.h
│   │   ├── relimit.h
│   │   ├── relimit_impl.h
│   │   ├── rwlock.cpp
│   │   ├── rwlock.h
│   │   ├── rwlock_impl.h
│   │   ├── scoped_comma.h
│   │   ├── scoped_comma_impl.h
│   │   ├── scopedlock.h
│   │   ├── scopedlock_impl.h
│   │   ├── sharedptr.h
│   │   ├── sharedptr_impl.h
│   │   ├── smalloc.cpp
│   │   ├── smalloc.h
│   │   ├── smalloc_impl.h
│   │   ├── sort.h
│   │   ├── sort_impl.h
│   │   ├── sphwarn.cpp
│   │   ├── sphwarn.h
│   │   ├── spinlock.h
│   │   ├── storage.h
│   │   ├── strerrorm.h
│   │   ├── string.cpp
│   │   ├── string.h
│   │   ├── string_impl.h
│   │   ├── stringbuilder.cpp
│   │   ├── stringbuilder.h
│   │   ├── stringbuilder_impl.h
│   │   ├── stringhash.cpp
│   │   ├── stringhash.h
│   │   ├── sys.cpp
│   │   ├── sys.h
│   │   ├── tdigest.cpp
│   │   ├── tdigest.h
│   │   ├── thread_annotations.h
│   │   ├── threadrole.h
│   │   ├── timers.cpp
│   │   ├── timers.h
│   │   ├── type_traits.h
│   │   ├── uniq.h
│   │   ├── uniq_impl.h
│   │   ├── unique_lock.h
│   │   ├── variant.h
│   │   ├── variant_impl.h
│   │   ├── vector.h
│   │   ├── vector_impl.h
│   │   ├── vectraits.h
│   │   ├── vectraits_impl.h
│   │   ├── widest.h
│   │   ├── zip.h
│   │   └── zip_impl.h
│   ├── stripper/
│   │   ├── CMakeLists.txt
│   │   ├── html_stripper.cpp
│   │   ├── html_stripper.h
│   │   └── html_stripper_tag.h
│   ├── task_dispatcher.cpp
│   ├── task_dispatcher.h
│   ├── task_info.cpp
│   ├── task_info.h
│   ├── taskflushattrs.cpp
│   ├── taskflushattrs.h
│   ├── taskflushbinlog.cpp
│   ├── taskflushbinlog.h
│   ├── taskflushmutable.cpp
│   ├── taskflushmutable.h
│   ├── taskglobalidf.cpp
│   ├── taskglobalidf.h
│   ├── taskmalloctrim.cpp
│   ├── taskmalloctrim.h
│   ├── taskping.cpp
│   ├── taskping.h
│   ├── taskpreread.cpp
│   ├── taskpreread.h
│   ├── tasksavestate.cpp
│   ├── tasksavestate.h
│   ├── testrt.conf.in
│   ├── testrt.cpp
│   ├── tests.cpp
│   ├── threads_detached.cpp
│   ├── threadutils.cpp
│   ├── threadutils.h
│   ├── threadutils_impl.h
│   ├── timeout_queue.cpp
│   ├── timeout_queue.h
│   ├── tokenizer/
│   │   ├── CMakeLists.txt
│   │   ├── charset_definition_parser.cpp
│   │   ├── charset_definition_parser.h
│   │   ├── exceptions_trie.cpp
│   │   ├── exceptions_trie.h
│   │   ├── lowercaser.cpp
│   │   ├── lowercaser.h
│   │   ├── lowercaser_impl.h
│   │   ├── multiform_container.h
│   │   ├── remap_range.h
│   │   ├── tok_internals.h
│   │   ├── token_filter.h
│   │   ├── tokenizer.cpp
│   │   ├── tokenizer.h
│   │   ├── tokenizer_bigram.cpp
│   │   ├── tokenizer_multiform.cpp
│   │   ├── tokenizer_plugin.cpp
│   │   ├── tokenizer_utf8.cpp
│   │   ├── tokenizerbase.cpp
│   │   ├── tokenizerbase2.cpp
│   │   ├── tokenizerbase2_impl.h
│   │   └── tokenizerbase_impl.h
│   ├── tracer.cpp
│   ├── tracer.h
│   ├── udfexample.c
│   └── wordbreaker.cpp
├── stack.txt
├── test/
│   ├── .gitattributes
│   ├── CMakeLists.txt
│   ├── bench/
│   │   ├── FILTER-chart1.xml
│   │   ├── FILTER-chart2.xml
│   │   ├── FILTER-chart3.xml
│   │   ├── FILTER-chart4.xml
│   │   ├── filter.xml
│   │   ├── filter3.xml
│   │   ├── fullscan.php
│   │   ├── fullscan.xml
│   │   ├── killlist_filter.xml
│   │   ├── ljq1k.txt
│   │   ├── match-modes.xml
│   │   ├── rtmerge.xml
│   │   ├── sphinx.html
│   │   └── subtree_cache.xml
│   ├── bench-results/
│   │   └── stub.txt
│   ├── bench.php
│   ├── clean.cmd
│   ├── clean.sh
│   ├── clean_old.sh
│   ├── clt-tests/
│   │   ├── base/
│   │   │   ├── basic-initialization-manticore-kafka.recb
│   │   │   ├── dind/
│   │   │   │   ├── Dockerfile
│   │   │   │   └── init.recb
│   │   │   ├── kafka-reset-consumer-offsets.recb
│   │   │   ├── replication/
│   │   │   │   ├── create-cluster.recb
│   │   │   │   ├── join-cluster-on-all-nodes.recb
│   │   │   │   ├── start-searchd-precach.recb
│   │   │   │   └── stop-searchd.recb
│   │   │   ├── searchd-with-flexible-ports.conf
│   │   │   ├── start-kafka-kraft.recb
│   │   │   ├── start-searchd-with-buddy.recb
│   │   │   ├── start-searchd-with-cpustats.recb
│   │   │   └── start-searchd.recb
│   │   ├── buddy/
│   │   │   ├── test-buddy-protocol-validation.rec
│   │   │   ├── test-fuzzy-search-non-min-infix-len.rec
│   │   │   ├── test-log-level-buddy-sync.rec
│   │   │   ├── test-manticore-version-in-telemetry.rec
│   │   │   ├── test-show-version.rec
│   │   │   └── test-unserialize-error-absence-kafka-operations.rec
│   │   ├── buddy-plugins/
│   │   │   ├── test-enable-disable-buddy-plugin.rec
│   │   │   ├── test-facet-with-option-fuzzy.rec
│   │   │   ├── test-fuzzy-autocomplete-http.rec
│   │   │   ├── test-fuzzy-search-dist-table.rec
│   │   │   ├── test-fuzzy-search.rec
│   │   │   ├── test-fuzzy-trailing-semicolon.rec
│   │   │   ├── test-inconsistent-comunication-with-buddy.rec
│   │   │   ├── test-prometheus-exporter.rec
│   │   │   └── test-skipping-plugin-loading.rec
│   │   ├── bugs/
│   │   │   ├── 1335-test-issue.rec
│   │   │   ├── 3037-secondary-indexes-bug.rec
│   │   │   ├── 3247-rt-save-disk-chunk-race.rec
│   │   │   ├── 3428-test-having-total-found.rec
│   │   │   ├── 3481-http-update-distributed-table-wrong-cluster-crash.rec
│   │   │   ├── 3489-fuzzy-option-alias-bug.rec
│   │   │   ├── 3602-knn-dist-attribute-error.rec
│   │   │   ├── 3832-fuzzy-cli-json-multiquery.rec
│   │   │   ├── 3844-max-ft-field-crash.rec
│   │   │   ├── 3847-conflict-handling-verification.rec
│   │   │   ├── 4009-qcache-secondaryindex-bug.rec
│   │   │   ├── 4176-attach-rt-externals.rec
│   │   │   ├── 4176-rename-rt-externals.rec
│   │   │   ├── 567-fuzzy-search-skips-numeric-words.rec
│   │   │   ├── 569-fuzzy-single-letter-word-merge.rec
│   │   │   ├── 599-fuzzy-join-facet-no-such-table.rec
│   │   │   └── fuzzy-preserve-distance-exact-words.rec
│   │   ├── core/
│   │   │   ├── boolean-simplify.rec
│   │   │   ├── call-autocomplete-force-bigrams.rec
│   │   │   ├── call-suggest-force-bigrams.rec
│   │   │   ├── query-test-rt-table.rec
│   │   │   ├── test-alter-rebuild-knn.rec
│   │   │   ├── test-alter-rename-http.rec
│   │   │   ├── test-alter-rename.rec
│   │   │   ├── test-alter-table-distributed.rec
│   │   │   ├── test-alter-table.rec
│   │   │   ├── test-auto-schema.rec
│   │   │   ├── test-create-table-like-existing-table-with-data.rec
│   │   │   ├── test-expansion-phrase-limit.rec
│   │   │   ├── test-external-files-handling-ramchunk.rec
│   │   │   ├── test-external-files-handling.rec
│   │   │   ├── test-freeze-unfreeze-update.rec
│   │   │   ├── test-import-table.rec
│   │   │   ├── test-truncate-distributed-table.rec
│   │   │   ├── test-unfreeze-defrosts.rec
│   │   │   └── test-warning-wordlist-size-mismatch.rec
│   │   ├── data-manipulation/
│   │   │   ├── test-alter-rename-nightly.rec
│   │   │   ├── test-lock-tables-mysqldump-compat.rec
│   │   │   ├── test-lock-unlock-tables.rec
│   │   │   └── test-replace-into.rec
│   │   ├── expected-errors/
│   │   │   ├── buddy-plugin-backup.rec
│   │   │   ├── buddy-plugin-empty-string.rec
│   │   │   ├── buddy-plugin-select.rec
│   │   │   ├── buddy-plugin-show.rec
│   │   │   ├── start-searchd.recb
│   │   │   ├── test-character-transformation-when-sending-to-buddy.rec
│   │   │   ├── test-declaration-of-duplicate-attributes.rec
│   │   │   ├── test-declaration-of-duplicate-fields.rec
│   │   │   ├── test-errors-insert-for-distributed-missing-table.rec
│   │   │   ├── test-external-files-handling-negative.rec
│   │   │   ├── test-fuzzy-search-negative.rec
│   │   │   ├── test-fuzzy-sql-endpoint-negative.rec
│   │   │   ├── test-inconsistency-in-error-messages.rec
│   │   │   ├── test-lock-tables-errors.rec
│   │   │   └── test-system-variables-error-handling.rec
│   │   ├── fulltext-search/
│   │   │   └── test-name-of-fields-in-show-meta.rec
│   │   ├── http-interface/
│   │   │   ├── cli-endpoint.rec
│   │   │   ├── cli-json-endpoint.rec
│   │   │   ├── error-handling.rec
│   │   │   ├── multi-query.rec
│   │   │   ├── show-version-http.rec
│   │   │   ├── show-version-trailing-semicolon.rec
│   │   │   ├── sql-endpoint.rec
│   │   │   ├── sql-mode-raw-endpoint.rec
│   │   │   ├── test-concurrent-requests-to-buddy.rec
│   │   │   ├── test-content-type-header-daemon-only.rec
│   │   │   ├── test-content-type-header-with-buddy.rec
│   │   │   ├── test-distributed-inserts.rec
│   │   │   ├── test-fuzzy-search-sql-endpoint.rec
│   │   │   ├── test-inserts.rec
│   │   │   └── test-manticore-handling-id.rec
│   │   ├── indexer/
│   │   │   ├── indexer-latest-mysql-postgres/
│   │   │   │   ├── indexer-latest-mysql-postgres.rec
│   │   │   │   ├── min_mysql.conf
│   │   │   │   └── min_postgres.sql
│   │   │   ├── test-max-iops.rec
│   │   │   └── test-max-iosize.rec
│   │   ├── indexing-error/
│   │   │   ├── csv_crash.conf
│   │   │   ├── min_mysql.conf
│   │   │   ├── min_postgres.sql
│   │   │   ├── test-id-attribute-error-during-indexing.rec
│   │   │   ├── tsv_crash.conf
│   │   │   └── xml.conf
│   │   ├── installation/
│   │   │   ├── check-backup.recb
│   │   │   ├── check-searchd-process.recb
│   │   │   ├── check-version/
│   │   │   │   ├── comparison-version.recb
│   │   │   │   ├── export-current-version.recb
│   │   │   │   └── export-new-version.recb
│   │   │   ├── deb-dev-install.rec
│   │   │   ├── deb-dev-update.rec
│   │   │   ├── deb-release-install.rec
│   │   │   ├── ex-sw-wf.recb
│   │   │   ├── exceptions-stopwords-wordforms-validation-release-to-dev.rec
│   │   │   ├── manticore-and-packages-installation.recb
│   │   │   ├── rhel-dev-install.rec
│   │   │   ├── rhel-dev-update.rec
│   │   │   ├── rhel-release-install.rec
│   │   │   ├── rhel7-release-install.rec
│   │   │   ├── start-searchd-dev.recb
│   │   │   ├── start-searchd-release.recb
│   │   │   └── stop-searchd-dev.recb
│   │   ├── integrations/
│   │   │   ├── dbeaver/
│   │   │   │   └── test-integrations-dbeaver.rec
│   │   │   ├── filebeat/
│   │   │   │   ├── test-integrations-check-filebeat-versions.rec
│   │   │   │   ├── test-integrations-filebeat.rec
│   │   │   │   └── test-integrations-support-filebeat-versions.rec
│   │   │   ├── fluentbit/
│   │   │   │   └── test-integrations-fluentbit.rec
│   │   │   ├── grafana/
│   │   │   │   ├── test-integrations-check-grafana-versions.rec
│   │   │   │   ├── test-integrations-grafana.rec
│   │   │   │   └── test-integrations-test-grafana-versions.rec
│   │   │   ├── kafka/
│   │   │   │   ├── dump.json
│   │   │   │   ├── import.sh
│   │   │   │   ├── script_versions_kafka.sh
│   │   │   │   ├── test-integration-kafka-ms.rec
│   │   │   │   ├── test-integration-kafka-partition-based-ingestion.rec
│   │   │   │   ├── test-integration-kafka-version.rec
│   │   │   │   └── test-unserialize-error-absence-kafka-operations.rec
│   │   │   ├── logstash/
│   │   │   │   ├── test-integrations-check-logstash-versions.rec
│   │   │   │   ├── test-integrations-logstash.rec
│   │   │   │   └── test-integrations-test-logstash-versions.rec
│   │   │   └── vector/
│   │   │       └── test-integrations-vector.rec
│   │   ├── join/
│   │   │   ├── test-avg-select-join.rec
│   │   │   └── test-join-query-logging-completeness.rec
│   │   ├── kibana/
│   │   │   ├── test-kibana-log-to-test-script.rec
│   │   │   └── test-parameter-for-installing-the-kibana-version.rec
│   │   ├── mcl/
│   │   │   ├── auto-embeddings-backup-restore.rec
│   │   │   ├── auto-embeddings-concurrent.rec
│   │   │   ├── auto-embeddings-dml-test.rec
│   │   │   ├── auto-embeddings-duplicate-id.rec
│   │   │   ├── auto-embeddings-edge-cases.rec
│   │   │   ├── auto-embeddings-endpoints.rec
│   │   │   ├── auto-embeddings-error-handling.rec
│   │   │   ├── auto-embeddings-from-vector-check.rec
│   │   │   ├── auto-embeddings-hnsw-configs.rec
│   │   │   ├── auto-embeddings-jina-remote.rec
│   │   │   ├── auto-embeddings-json-api.rec
│   │   │   ├── auto-embeddings-knn-select-scenarios.rec
│   │   │   ├── auto-embeddings-openai-remote.rec
│   │   │   ├── auto-embeddings-qwen.rec
│   │   │   ├── auto-embeddings-syntax-check.rec
│   │   │   ├── auto-embeddings-voyage-remote.rec
│   │   │   └── base.recb
│   │   ├── migration-es-ms/
│   │   │   └── test-migration-es-ms.rec
│   │   ├── mysqldump/
│   │   │   ├── common/
│   │   │   │   ├── mcl-all-json.recb
│   │   │   │   ├── mcl-all-multi.recb
│   │   │   │   ├── mcl-all-multi64.recb
│   │   │   │   ├── mcl-id-json.recb
│   │   │   │   ├── mcl-id-multi.recb
│   │   │   │   ├── mcl-id-multi64.recb
│   │   │   │   ├── mcl-only-json.recb
│   │   │   │   ├── mcl-only-multi.recb
│   │   │   │   ├── mcl-only-multi64.recb
│   │   │   │   ├── no-mcl-json.recb
│   │   │   │   ├── no-mcl-multi.recb
│   │   │   │   ├── no-mcl-multi64.recb
│   │   │   │   ├── pq-table-mysqldump.recb
│   │   │   │   └── random-1m-dump-restore.recb
│   │   │   ├── dumps/
│   │   │   │   ├── mcl-all/
│   │   │   │   │   ├── json-batch-1.sql
│   │   │   │   │   ├── json-batch-2.sql
│   │   │   │   │   ├── json-batch-3.sql
│   │   │   │   │   ├── json.sql
│   │   │   │   │   ├── multi-batch-1.sql
│   │   │   │   │   ├── multi-batch-2.sql
│   │   │   │   │   ├── multi-batch-3.sql
│   │   │   │   │   ├── multi.sql
│   │   │   │   │   ├── multi64-batch-1.sql
│   │   │   │   │   ├── multi64-batch-2.sql
│   │   │   │   │   ├── multi64-batch-3.sql
│   │   │   │   │   └── multi64.sql
│   │   │   │   ├── mcl-id/
│   │   │   │   │   ├── json-batch-1.sql
│   │   │   │   │   ├── json-batch-2.sql
│   │   │   │   │   ├── json-batch-3.sql
│   │   │   │   │   ├── json.sql
│   │   │   │   │   ├── multi-batch-1.sql
│   │   │   │   │   ├── multi-batch-2.sql
│   │   │   │   │   ├── multi-batch-3.sql
│   │   │   │   │   ├── multi.sql
│   │   │   │   │   ├── multi64-batch-1.sql
│   │   │   │   │   ├── multi64-batch-2.sql
│   │   │   │   │   ├── multi64-batch-3.sql
│   │   │   │   │   └── multi64.sql
│   │   │   │   ├── mcl-only/
│   │   │   │   │   ├── json-batch-1.sql
│   │   │   │   │   ├── json-batch-2.sql
│   │   │   │   │   ├── json-batch-3.sql
│   │   │   │   │   ├── json.sql
│   │   │   │   │   ├── multi-batch-1.sql
│   │   │   │   │   ├── multi-batch-2.sql
│   │   │   │   │   ├── multi-batch-3.sql
│   │   │   │   │   ├── multi.sql
│   │   │   │   │   ├── multi64-batch-1.sql
│   │   │   │   │   ├── multi64-batch-2.sql
│   │   │   │   │   ├── multi64-batch-3.sql
│   │   │   │   │   └── multi64.sql
│   │   │   │   └── no-mcl/
│   │   │   │       ├── json-batch-1.sql
│   │   │   │       ├── json-batch-2.sql
│   │   │   │       ├── json-batch-3.sql
│   │   │   │       ├── json.sql
│   │   │   │       ├── multi-batch-1.sql
│   │   │   │       ├── multi-batch-2.sql
│   │   │   │       ├── multi-batch-3.sql
│   │   │   │       ├── multi.sql
│   │   │   │       ├── multi64-batch-1.sql
│   │   │   │       ├── multi64-batch-2.sql
│   │   │   │       ├── multi64-batch-3.sql
│   │   │   │       └── multi64.sql
│   │   │   ├── maria/
│   │   │   │   ├── init.recb
│   │   │   │   ├── mcl-all-json.rec
│   │   │   │   ├── mcl-all-multi.rec
│   │   │   │   ├── mcl-all-multi64.rec
│   │   │   │   ├── mcl-id-json.rec
│   │   │   │   ├── mcl-id-multi.rec
│   │   │   │   ├── mcl-id-multi64.rec
│   │   │   │   ├── mcl-only-json.rec
│   │   │   │   ├── mcl-only-multi.rec
│   │   │   │   ├── mcl-only-multi64.rec
│   │   │   │   ├── no-mcl-json.rec
│   │   │   │   ├── no-mcl-multi.rec
│   │   │   │   ├── no-mcl-multi64.rec
│   │   │   │   ├── pq-table-mysqldump.rec
│   │   │   │   └── random-1m-dump-restore.rec
│   │   │   ├── mysql/
│   │   │   │   ├── mcl-all-json.rec
│   │   │   │   ├── mcl-all-multi.rec
│   │   │   │   ├── mcl-all-multi64.rec
│   │   │   │   ├── mcl-id-json.rec
│   │   │   │   ├── mcl-id-multi.rec
│   │   │   │   ├── mcl-id-multi64.rec
│   │   │   │   ├── mcl-only-json.rec
│   │   │   │   ├── mcl-only-multi.rec
│   │   │   │   ├── mcl-only-multi64.rec
│   │   │   │   ├── no-mcl-json.rec
│   │   │   │   ├── no-mcl-multi.rec
│   │   │   │   ├── no-mcl-multi64.rec
│   │   │   │   ├── pq-table-mysqldump.rec
│   │   │   │   └── random-1m-dump-restore.rec
│   │   │   └── versions/
│   │   │       ├── mariadb/
│   │   │       │   ├── script_versions_mariadb.sh
│   │   │       │   └── test-supported-mysqldump-mariadb-versions.rec
│   │   │       └── mysql/
│   │   │           ├── script_versions_mysql.sh
│   │   │           └── test-supported-mysqldump-mysql-versions.rec
│   │   ├── performance/
│   │   │   ├── concurrent-load-search-stats-validation.rec
│   │   │   ├── test-json-disk_chunks.rec
│   │   │   ├── test-optimisation-and-update.rec
│   │   │   └── test-show-table-tbl-name-status.rec
│   │   ├── performance-nightly/
│   │   │   ├── test-comparison-overhead-json-sql.rec
│   │   │   └── test-performance-for-queries-with-multiple-disk-chunks.rec
│   │   ├── replication/
│   │   │   ├── fatal-invalid-port.rec
│   │   │   ├── test-auto-embeddings-replication.rec
│   │   │   ├── test-cluster-creation-without-replication.rec
│   │   │   ├── test-generation-of-document-auto-id-in-replication.rec
│   │   │   ├── test-ist-recovery-after-node-crash.rec
│   │   │   ├── test-lock-tables-replicated.rec
│   │   │   ├── test-replication-with-mysqldump.rec
│   │   │   ├── test-replication.rec
│   │   │   └── test-sst-progress.rec
│   │   ├── scripts/
│   │   │   ├── fnames.txt
│   │   │   ├── generate-1mln-records.sh
│   │   │   ├── generate-records-json.sh
│   │   │   ├── generate-records.sh
│   │   │   ├── issue-1335-dump.php
│   │   │   ├── load_names_attr.php
│   │   │   ├── names.txt
│   │   │   └── surnames.txt
│   │   ├── sharding/
│   │   │   ├── cluster/
│   │   │   │   ├── attach-table-while-joining-cluster.rec
│   │   │   │   ├── join-cluster-while-attaching-table.rec
│   │   │   │   ├── join-cluster-while-creating-another.rec
│   │   │   │   ├── join-cluster-while-joining-another.rec
│   │   │   │   ├── join-multiple-clusters-on-same-node.rec
│   │   │   │   ├── multiple-join-single-alter-cluster.rec
│   │   │   │   └── test-drop-sharded-clustering-table.rec
│   │   │   ├── drop/
│   │   │   │   └── test-drop-sharded-table.rec
│   │   │   ├── functional/
│   │   │   │   ├── functional-sharding-and-cluster-negative.rec
│   │   │   │   ├── functional-sharding-positive.rec
│   │   │   │   └── test-dist-table-shards-5000.rec
│   │   │   ├── replication/
│   │   │   │   ├── create-table-1-node-10-shards.rec
│   │   │   │   ├── create-table-2-nodes-4-shards.rec
│   │   │   │   ├── create-table-3-nodes-6-shards.rec
│   │   │   │   ├── create-table-5-nodes-60-shards.rec
│   │   │   │   ├── test-data-manipulation.rec
│   │   │   │   ├── test-distributed-inserts-with-replication.rec
│   │   │   │   └── test-multi-node-sharding-and-replication.rec
│   │   │   └── syntax/
│   │   │       ├── sharding-syntax-negative.rec
│   │   │       └── sharding-syntax-positive.rec
│   │   ├── tables-interaction/
│   │   │   └── test-tables-interaction.rec
│   │   ├── test-configuration/
│   │   │   ├── show-settings.rec
│   │   │   ├── show-threads.rec
│   │   │   ├── test-buddy-max-connections-configuration.rec
│   │   │   ├── test-buddy-requests-not-logged.rec
│   │   │   ├── test-default-config.rec
│   │   │   ├── test-update-with-query-log-min-msec.rec
│   │   │   ├── test-writing-binlog-during-parallel-queries.rec
│   │   │   └── timezone.rec
│   │   └── vector-knn/
│   │       ├── test-knn-id.rec
│   │       ├── test-knn-search-by-doc-id.rec
│   │       ├── test-knn-validation.rec
│   │       └── tets-insert-knn-errors.rec
│   ├── go_prepared_stmt/
│   │   ├── README.md
│   │   ├── go.mod
│   │   ├── go.sum
│   │   └── main.go
│   ├── helpers.inc
│   ├── helpers_rt.inc
│   ├── html_120.txt
│   ├── indextool/
│   │   ├── CMakeLists.txt
│   │   ├── indextool.conf
│   │   └── test.cmake
│   ├── mre.rec
│   ├── mysql_prepared_stmt.md
│   ├── mysql_prepared_stmt.php
│   ├── node_prepared_stmt/
│   │   ├── README.md
│   │   ├── index.js
│   │   └── package.json
│   ├── ql/
│   │   ├── README
│   │   ├── data/
│   │   │   ├── rt.kill
│   │   │   ├── rt.meta
│   │   │   └── rt.ram
│   │   ├── qltest.cs
│   │   ├── qltest.java
│   │   ├── qltest.php
│   │   ├── qltest.py
│   │   ├── qltest.rb
│   │   ├── sphinx.conf
│   │   ├── t.cmd
│   │   └── t2.cmd
│   ├── settings.inc
│   ├── sqlx_prepared_stmt/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── main.rs
│   ├── ssl_keys/
│   │   ├── server-cert.pem
│   │   └── server-key.pem
│   ├── stopwords.txt
│   ├── stopwords_121.txt
│   ├── synonyms.txt
│   ├── test-templates.xml
│   ├── test_001/
│   │   └── test.xml
│   ├── test_002/
│   │   └── test.xml
│   ├── test_003/
│   │   └── test.xml
│   ├── test_004/
│   │   └── test.xml
│   ├── test_005/
│   │   └── test.xml
│   ├── test_006/
│   │   └── test.xml
│   ├── test_007/
│   │   └── test.xml
│   ├── test_008/
│   │   └── test.xml
│   ├── test_009/
│   │   └── test.xml
│   ├── test_010/
│   │   └── test.xml
│   ├── test_011/
│   │   └── test.xml
│   ├── test_012/
│   │   └── test.xml
│   ├── test_013/
│   │   └── test.xml
│   ├── test_014/
│   │   └── test.xml
│   ├── test_015/
│   │   ├── stops.txt
│   │   └── test.xml
│   ├── test_016/
│   │   └── test.xml
│   ├── test_017/
│   │   └── test.xml
│   ├── test_018/
│   │   └── test.xml
│   ├── test_019/
│   │   └── test.xml
│   ├── test_020/
│   │   └── test.xml
│   ├── test_021/
│   │   └── test.xml
│   ├── test_022/
│   │   ├── test.xml
│   │   ├── wf_multi.txt
│   │   ├── wf_multi2.txt
│   │   ├── wf_multi3.txt
│   │   └── wf_num.txt
│   ├── test_023/
│   │   └── test.xml
│   ├── test_024/
│   │   └── test.xml
│   ├── test_025/
│   │   ├── s25.txt
│   │   └── test.xml
│   ├── test_026/
│   │   └── test.xml
│   ├── test_027/
│   │   └── test.xml
│   ├── test_028/
│   │   ├── model.aff
│   │   ├── model.dict
│   │   ├── model.spell
│   │   └── test.inc
│   ├── test_029/
│   │   └── test.xml
│   ├── test_030/
│   │   └── test.xml
│   ├── test_031/
│   │   └── test.xml
│   ├── test_032/
│   │   └── test.xml
│   ├── test_033/
│   │   └── test.xml
│   ├── test_034/
│   │   └── test.xml
│   ├── test_035/
│   │   └── test.xml
│   ├── test_036/
│   │   └── test.xml
│   ├── test_037/
│   │   └── test.xml
│   ├── test_038/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_039/
│   │   └── test.xml
│   ├── test_040/
│   │   └── test.xml
│   ├── test_041/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_042/
│   │   └── test.xml
│   ├── test_043/
│   │   └── test.xml
│   ├── test_044/
│   │   └── test.xml
│   ├── test_045/
│   │   └── test.xml
│   ├── test_046/
│   │   └── test.xml
│   ├── test_047/
│   │   ├── data1.csv
│   │   ├── data1.xml
│   │   └── test.xml
│   ├── test_048/
│   │   └── test.xml
│   ├── test_049/
│   │   └── test.xml
│   ├── test_050/
│   │   └── test.xml
│   ├── test_051/
│   │   └── test.xml
│   ├── test_052/
│   │   └── test.xml
│   ├── test_053/
│   │   └── test.xml
│   ├── test_054/
│   │   └── test.xml
│   ├── test_055/
│   │   └── test.xml
│   ├── test_056/
│   │   └── test.xml
│   ├── test_057/
│   │   └── test.xml
│   ├── test_058/
│   │   └── test.xml
│   ├── test_059/
│   │   └── test.xml
│   ├── test_060/
│   │   └── test.xml
│   ├── test_061/
│   │   └── test.xml
│   ├── test_062/
│   │   └── test.xml
│   ├── test_063/
│   │   ├── stop_blend.txt
│   │   └── test.xml
│   ├── test_064/
│   │   └── test.xml
│   ├── test_065/
│   │   └── test.xml
│   ├── test_066/
│   │   └── test.xml
│   ├── test_067/
│   │   └── test.xml
│   ├── test_068/
│   │   ├── data1.csv
│   │   ├── data1.tsv
│   │   ├── data1.xml
│   │   ├── data2.csv
│   │   ├── data2.xml
│   │   ├── data3.xml
│   │   ├── data51.xml
│   │   ├── data_embedded.xml
│   │   ├── data_embedded1.xml
│   │   ├── data_embedded2.xml
│   │   ├── data_large.xml
│   │   ├── data_spec.csv
│   │   ├── data_spec.tsv
│   │   ├── test.xml
│   │   └── test_kl.xml
│   ├── test_069/
│   │   └── test.xml
│   ├── test_070/
│   │   └── test.xml
│   ├── test_071/
│   │   └── test.xml
│   ├── test_072/
│   │   └── test.xml
│   ├── test_073/
│   │   └── test.xml
│   ├── test_074/
│   │   └── test.xml
│   ├── test_075/
│   │   └── test.xml
│   ├── test_076/
│   │   └── test.xml
│   ├── test_077/
│   │   └── test.xml
│   ├── test_078/
│   │   └── test.xml
│   ├── test_079/
│   │   └── test.xml
│   ├── test_080/
│   │   └── test.xml
│   ├── test_081/
│   │   ├── test.xml
│   │   ├── words1.txt
│   │   ├── words2.txt
│   │   └── words3.txt
│   ├── test_082/
│   │   ├── test.xml
│   │   ├── words_delta.txt
│   │   └── words_main.txt
│   ├── test_083/
│   │   └── test.xml
│   ├── test_084/
│   │   └── test.xml
│   ├── test_085/
│   │   └── test.xml
│   ├── test_086/
│   │   └── test.xml
│   ├── test_087/
│   │   └── test.xml
│   ├── test_088/
│   │   └── test.xml
│   ├── test_089/
│   │   └── test.xml
│   ├── test_090/
│   │   └── test.xml
│   ├── test_091/
│   │   └── test.xml
│   ├── test_092/
│   │   └── test.xml
│   ├── test_093/
│   │   └── test.xml
│   ├── test_094/
│   │   └── test.xml
│   ├── test_095/
│   │   └── test.xml
│   ├── test_096/
│   │   └── test.xml
│   ├── test_097/
│   │   └── test.xml
│   ├── test_098/
│   │   ├── test.xml
│   │   ├── wf3.txt
│   │   └── wordforms.txt
│   ├── test_099/
│   │   └── test.xml
│   ├── test_100/
│   │   └── test.xml
│   ├── test_101/
│   │   └── test.xml
│   ├── test_102/
│   │   └── test.xml
│   ├── test_103/
│   │   └── test.xml
│   ├── test_104/
│   │   └── test.xml
│   ├── test_105/
│   │   └── test.xml
│   ├── test_106/
│   │   └── test.xml
│   ├── test_107/
│   │   └── test.xml
│   ├── test_108/
│   │   ├── data.xml
│   │   ├── data2.xml
│   │   ├── data3.xml
│   │   └── test.xml
│   ├── test_109/
│   │   └── test.xml
│   ├── test_110/
│   │   └── test.xml
│   ├── test_111/
│   │   └── test.xml
│   ├── test_112/
│   │   └── test.xml
│   ├── test_113/
│   │   └── test.xml
│   ├── test_114/
│   │   └── test.xml
│   ├── test_115/
│   │   ├── test.xml
│   │   └── wf_multi.txt
│   ├── test_116/
│   │   └── test.xml
│   ├── test_117/
│   │   └── test.xml
│   ├── test_118/
│   │   └── test.xml
│   ├── test_119/
│   │   └── test.xml
│   ├── test_120/
│   │   └── test.xml
│   ├── test_121/
│   │   └── test.xml
│   ├── test_122/
│   │   └── test.xml
│   ├── test_123/
│   │   └── test.xml
│   ├── test_124/
│   │   ├── field_124_match.txt
│   │   └── test.xml
│   ├── test_125/
│   │   └── test.xml
│   ├── test_126/
│   │   └── test.xml
│   ├── test_127/
│   │   └── test.xml
│   ├── test_128/
│   │   └── test.xml
│   ├── test_129/
│   │   └── test.xml
│   ├── test_130/
│   │   ├── 512k.xml
│   │   ├── empty.txt
│   │   ├── load_file.txt
│   │   └── test.xml
│   ├── test_131/
│   │   └── test.xml
│   ├── test_132/
│   │   └── test.xml
│   ├── test_133/
│   │   └── test.xml
│   ├── test_134/
│   │   └── test.xml
│   ├── test_135/
│   │   └── test.xml
│   ├── test_136/
│   │   ├── exceptions.txt
│   │   └── test.xml
│   ├── test_137/
│   │   └── test.xml
│   ├── test_138/
│   │   └── test.xml
│   ├── test_139/
│   │   └── test.xml
│   ├── test_140/
│   │   └── test.xml
│   ├── test_141/
│   │   └── test.xml
│   ├── test_142/
│   │   └── test.xml
│   ├── test_143/
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   └── wordforms_multi_dest.txt
│   ├── test_144/
│   │   └── test.xml
│   ├── test_145/
│   │   ├── stop0.txt
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_146/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_147/
│   │   └── test.xml
│   ├── test_148/
│   │   ├── doc1.txt
│   │   ├── doc2.txt
│   │   ├── doc3.txt
│   │   └── test.xml
│   ├── test_149/
│   │   └── test.xml
│   ├── test_150/
│   │   └── test.xml
│   ├── test_151/
│   │   └── test.xml
│   ├── test_152/
│   │   └── test.xml
│   ├── test_153/
│   │   └── test.xml
│   ├── test_154/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_155/
│   │   └── test.xml
│   ├── test_156/
│   │   └── test.xml
│   ├── test_157/
│   │   └── test.xml
│   ├── test_158/
│   │   ├── test.xml
│   │   └── wf158.txt
│   ├── test_159/
│   │   └── test.xml
│   ├── test_160/
│   │   ├── multiwordorms.txt
│   │   └── test.xml
│   ├── test_161/
│   │   ├── data1.xml
│   │   └── test.xml
│   ├── test_162/
│   │   └── test.xml
│   ├── test_163/
│   │   └── test.xml
│   ├── test_164/
│   │   └── test.xml
│   ├── test_165/
│   │   ├── synonyms.txt
│   │   ├── synonyms2.txt
│   │   ├── synonyms3.txt
│   │   ├── synonyms4.txt
│   │   └── test.xml
│   ├── test_166/
│   │   └── test.xml
│   ├── test_167/
│   │   └── test.xml
│   ├── test_168/
│   │   ├── test.xml
│   │   ├── text1.txt
│   │   └── text2.txt
│   ├── test_169/
│   │   └── test.xml
│   ├── test_170/
│   │   └── test.xml
│   ├── test_171/
│   │   ├── data_mm.tsv
│   │   └── test.xml
│   ├── test_172/
│   │   └── test.xml
│   ├── test_173/
│   │   └── test.xml
│   ├── test_174/
│   │   ├── readme.txt
│   │   └── test.xml
│   ├── test_175/
│   │   ├── hits1.xml
│   │   └── test.xml
│   ├── test_176/
│   │   └── test.xml
│   ├── test_177/
│   │   └── test.xml
│   ├── test_178/
│   │   └── test.xml
│   ├── test_179/
│   │   └── test.xml
│   ├── test_180/
│   │   └── test.xml
│   ├── test_181/
│   │   └── test.xml
│   ├── test_182/
│   │   └── test.xml
│   ├── test_183/
│   │   ├── data_embedded.xml
│   │   └── test.xml
│   ├── test_184/
│   │   ├── data_ext.xml
│   │   ├── data_fields.xml
│   │   ├── data_int.xml
│   │   └── test.xml
│   ├── test_185/
│   │   └── test.xml
│   ├── test_186/
│   │   └── test.xml
│   ├── test_187/
│   │   └── test.xml
│   ├── test_188/
│   │   └── test.xml
│   ├── test_189/
│   │   └── test.xml
│   ├── test_190/
│   │   ├── refdata/
│   │   │   ├── agent1/
│   │   │   │   ├── allfiles/
│   │   │   │   │   ├── text1.txt
│   │   │   │   │   ├── text2.txt
│   │   │   │   │   ├── text3.txt
│   │   │   │   │   ├── text4.txt
│   │   │   │   │   ├── text5.txt
│   │   │   │   │   └── text6.txt
│   │   │   │   └── scatteredfiles/
│   │   │   │       ├── text3.txt
│   │   │   │       └── text4.txt
│   │   │   ├── agent2/
│   │   │   │   ├── allfiles/
│   │   │   │   │   ├── text1.txt
│   │   │   │   │   ├── text2.txt
│   │   │   │   │   ├── text3.txt
│   │   │   │   │   ├── text4.txt
│   │   │   │   │   ├── text5.txt
│   │   │   │   │   └── text6.txt
│   │   │   │   └── scatteredfiles/
│   │   │   │       ├── text5.txt
│   │   │   │       └── text6.txt
│   │   │   └── master/
│   │   │       ├── allfiles/
│   │   │       │   ├── text1.txt
│   │   │       │   ├── text2.txt
│   │   │       │   ├── text3.txt
│   │   │       │   ├── text4.txt
│   │   │       │   ├── text5.txt
│   │   │       │   └── text6.txt
│   │   │       └── scatteredfiles/
│   │   │           ├── text1.txt
│   │   │           └── text2.txt
│   │   └── test.xml
│   ├── test_191/
│   │   └── test.xml
│   ├── test_192/
│   │   ├── test.xml
│   │   ├── wordforms-12.txt
│   │   ├── wordforms-wb.txt
│   │   └── wordforms.txt
│   ├── test_193/
│   │   ├── stopwords.txt
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_194/
│   │   ├── file1.txt
│   │   ├── file2.txt
│   │   ├── file3.txt
│   │   └── test.xml
│   ├── test_195/
│   │   └── test.xml
│   ├── test_196/
│   │   ├── ex21.txt
│   │   ├── test.xml
│   │   ├── wf1.txt
│   │   ├── wf2.txt
│   │   ├── wf21.txt
│   │   ├── wf_pre.txt
│   │   ├── wordforms.txt
│   │   ├── words1.txt
│   │   └── words2.txt
│   ├── test_197/
│   │   └── test.xml
│   ├── test_198/
│   │   └── test.xml
│   ├── test_199/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_200/
│   │   └── test.xml
│   ├── test_201/
│   │   └── test.xml
│   ├── test_202/
│   │   └── test.xml
│   ├── test_203/
│   │   └── test.xml
│   ├── test_204/
│   │   └── test.xml
│   ├── test_205/
│   │   └── test.xml
│   ├── test_206/
│   │   └── test.xml
│   ├── test_207/
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   ├── wordforms2.txt
│   │   └── wordforms3.txt
│   ├── test_208/
│   │   └── test.xml
│   ├── test_209/
│   │   └── test.xml
│   ├── test_210/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_211/
│   │   └── test.xml
│   ├── test_212/
│   │   └── test.xml
│   ├── test_213/
│   │   └── test.xml
│   ├── test_214/
│   │   └── test.xml
│   ├── test_215/
│   │   └── test.xml
│   ├── test_216/
│   │   └── test.xml
│   ├── test_217/
│   │   └── test.xml
│   ├── test_218/
│   │   ├── data.xml
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_219/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_220/
│   │   └── test.xml
│   ├── test_221/
│   │   └── test.xml
│   ├── test_222/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_223/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_224/
│   │   └── test.xml
│   ├── test_225/
│   │   └── test.xml
│   ├── test_226/
│   │   └── test.xml
│   ├── test_227/
│   │   └── test.xml
│   ├── test_228/
│   │   └── test.xml
│   ├── test_229/
│   │   └── test.xml
│   ├── test_230/
│   │   └── test.xml
│   ├── test_231/
│   │   └── test.xml
│   ├── test_232/
│   │   └── test.xml
│   ├── test_233/
│   │   ├── data/
│   │   │   ├── reload.spa
│   │   │   ├── reload.spb
│   │   │   ├── reload.spd
│   │   │   ├── reload.spe
│   │   │   ├── reload.sph
│   │   │   ├── reload.spi
│   │   │   ├── reload.spm
│   │   │   ├── reload.spp
│   │   │   ├── reload.spt
│   │   │   ├── test.spa
│   │   │   ├── test.spb
│   │   │   ├── test.spd
│   │   │   ├── test.spe
│   │   │   ├── test.sph
│   │   │   ├── test.spi
│   │   │   ├── test.spm
│   │   │   ├── test.spp
│   │   │   └── test.spt
│   │   ├── reload_path/
│   │   │   └── .gitignore
│   │   └── test.xml
│   ├── test_234/
│   │   └── test.xml
│   ├── test_235/
│   │   └── test.xml
│   ├── test_236/
│   │   ├── data1.csv
│   │   ├── data1.tsv
│   │   ├── data1.xml
│   │   ├── data2.xml
│   │   ├── data3.xml
│   │   ├── data4.xml
│   │   └── test.xml
│   ├── test_237/
│   │   └── test.xml
│   ├── test_238/
│   │   └── test.xml
│   ├── test_239/
│   │   └── test.xml
│   ├── test_240/
│   │   └── test.xml
│   ├── test_241/
│   │   └── test.xml
│   ├── test_242/
│   │   └── test.xml
│   ├── test_243/
│   │   └── test.xml
│   ├── test_244/
│   │   └── test.xml
│   ├── test_245/
│   │   ├── data.xml
│   │   ├── data_rev.xml
│   │   └── test.xml
│   ├── test_246/
│   │   └── test.xml
│   ├── test_247/
│   │   └── test.xml
│   ├── test_248/
│   │   └── test.xml
│   ├── test_249/
│   │   └── test.xml
│   ├── test_250/
│   │   ├── data/
│   │   │   ├── plain2.spa
│   │   │   ├── plain2.spd
│   │   │   ├── plain2.spe
│   │   │   ├── plain2.sph
│   │   │   ├── plain2.spi
│   │   │   ├── plain2.spm
│   │   │   ├── plain2.spp
│   │   │   └── plain2.spt
│   │   └── test.xml
│   ├── test_251/
│   │   └── test.xml
│   ├── test_252/
│   │   └── test.xml
│   ├── test_253/
│   │   └── test.xml
│   ├── test_254/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_255/
│   │   ├── test.xml
│   │   └── wf1.txt
│   ├── test_256/
│   │   └── test.xml
│   ├── test_257/
│   │   ├── data1.csv
│   │   ├── data1.tsv
│   │   ├── data1.xml
│   │   ├── data2.csv
│   │   ├── data3.csv
│   │   └── test.xml
│   ├── test_258/
│   │   └── test.xml
│   ├── test_259/
│   │   └── test.xml
│   ├── test_260/
│   │   └── test.xml
│   ├── test_261/
│   │   └── test.xml
│   ├── test_262/
│   │   └── test.xml
│   ├── test_263/
│   │   ├── test.csv
│   │   └── test.xml
│   ├── test_264/
│   │   └── test.xml
│   ├── test_265/
│   │   └── test.xml
│   ├── test_266/
│   │   └── test.xml
│   ├── test_267/
│   │   └── test.xml
│   ├── test_268/
│   │   └── test.xml
│   ├── test_269/
│   │   └── test.xml
│   ├── test_270/
│   │   ├── data1.tsv
│   │   └── test.xml
│   ├── test_271/
│   │   └── test.xml
│   ├── test_272/
│   │   └── test.xml
│   ├── test_273/
│   │   └── test.xml
│   ├── test_274/
│   │   └── test.xml
│   ├── test_275/
│   │   └── test.xml
│   ├── test_276/
│   │   └── test.xml
│   ├── test_277/
│   │   └── test.xml
│   ├── test_278/
│   │   └── test.xml
│   ├── test_279/
│   │   └── test.xml
│   ├── test_280/
│   │   └── test.xml
│   ├── test_281/
│   │   └── test.xml
│   ├── test_282/
│   │   └── test.xml
│   ├── test_283/
│   │   └── test.xml
│   ├── test_284/
│   │   └── test.xml
│   ├── test_285/
│   │   └── test.xml
│   ├── test_286/
│   │   └── test.xml
│   ├── test_287/
│   │   └── test.xml
│   ├── test_288/
│   │   └── test.xml
│   ├── test_289/
│   │   └── test.xml
│   ├── test_290/
│   │   └── test.xml
│   ├── test_291/
│   │   └── test.xml
│   ├── test_292/
│   │   └── test.xml
│   ├── test_293/
│   │   └── test.xml
│   ├── test_294/
│   │   └── test.xml
│   ├── test_295/
│   │   └── test.xml
│   ├── test_296/
│   │   └── test.xml
│   ├── test_297/
│   │   └── test.xml
│   ├── test_298/
│   │   └── test.xml
│   ├── test_299/
│   │   └── test.xml
│   ├── test_300/
│   │   ├── bug.py
│   │   └── test.xml
│   ├── test_301/
│   │   └── test.xml
│   ├── test_302/
│   │   └── test.xml
│   ├── test_303/
│   │   └── test.xml
│   ├── test_304/
│   │   └── test.xml
│   ├── test_305/
│   │   └── test.xml
│   ├── test_306/
│   │   └── test.xml
│   ├── test_307/
│   │   └── test.xml
│   ├── test_308/
│   │   └── test.xml
│   ├── test_309/
│   │   ├── jieba_user_dict.txt
│   │   └── test.xml
│   ├── test_310/
│   │   ├── data.xml
│   │   ├── jieba_user_dict.txt
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_311/
│   │   ├── data.xml
│   │   └── test.xml
│   ├── test_312/
│   │   └── test.xml
│   ├── test_313/
│   │   └── test.xml
│   ├── test_314/
│   │   └── test.xml
│   ├── test_315/
│   │   └── test.xml
│   ├── test_316/
│   │   └── test.xml
│   ├── test_317/
│   │   └── test.xml
│   ├── test_318/
│   │   └── test.xml
│   ├── test_319/
│   │   └── test.xml
│   ├── test_320/
│   │   └── test.xml
│   ├── test_321/
│   │   └── test.xml
│   ├── test_322/
│   │   └── test.xml
│   ├── test_323/
│   │   └── test.xml
│   ├── test_324/
│   │   └── test.xml
│   ├── test_325/
│   │   └── test.xml
│   ├── test_326/
│   │   └── test.xml
│   ├── test_327/
│   │   └── test.xml
│   ├── test_328/
│   │   └── test.xml
│   ├── test_329/
│   │   └── test.xml
│   ├── test_330/
│   │   └── test.xml
│   ├── test_331/
│   │   └── test.xml
│   ├── test_332/
│   │   └── test.xml
│   ├── test_333/
│   │   └── test.xml
│   ├── test_334/
│   │   ├── exc.txt
│   │   └── test.xml
│   ├── test_335/
│   │   └── test.xml
│   ├── test_336/
│   │   └── test.xml
│   ├── test_337/
│   │   └── test.xml
│   ├── test_338/
│   │   └── test.xml
│   ├── test_339/
│   │   └── test.xml
│   ├── test_340/
│   │   └── test.xml
│   ├── test_341/
│   │   └── test.xml
│   ├── test_342/
│   │   └── test.xml
│   ├── test_343/
│   │   └── test.xml
│   ├── test_344/
│   │   └── test.xml
│   ├── test_345/
│   │   └── test.xml
│   ├── test_346/
│   │   └── test.xml
│   ├── test_347/
│   │   └── test.xml
│   ├── test_348/
│   │   └── test.xml
│   ├── test_349/
│   │   └── test.xml
│   ├── test_350/
│   │   └── test.xml
│   ├── test_351/
│   │   └── test.xml
│   ├── test_352/
│   │   └── test.xml
│   ├── test_353/
│   │   └── test.xml
│   ├── test_354/
│   │   └── test.xml
│   ├── test_355/
│   │   └── test.xml
│   ├── test_356/
│   │   └── test.xml
│   ├── test_357/
│   │   └── test.xml
│   ├── test_358/
│   │   └── test.xml
│   ├── test_359/
│   │   └── test.xml
│   ├── test_360/
│   │   ├── stops.txt
│   │   └── test.xml
│   ├── test_361/
│   │   └── test.xml
│   ├── test_362/
│   │   └── test.xml
│   ├── test_363/
│   │   └── test.xml
│   ├── test_364/
│   │   └── test.xml
│   ├── test_365/
│   │   └── test.xml
│   ├── test_366/
│   │   └── test.xml
│   ├── test_367/
│   │   └── test.xml
│   ├── test_368/
│   │   └── test.xml
│   ├── test_369/
│   │   └── test.xml
│   ├── test_370/
│   │   └── test.xml
│   ├── test_371/
│   │   └── test.xml
│   ├── test_372/
│   │   └── test.xml
│   ├── test_373/
│   │   └── test.xml
│   ├── test_374/
│   │   └── test.xml
│   ├── test_375/
│   │   └── test.xml
│   ├── test_376/
│   │   └── test.xml
│   ├── test_377/
│   │   └── test.xml
│   ├── test_378/
│   │   └── test.xml
│   ├── test_379/
│   │   └── test.xml
│   ├── test_380/
│   │   └── test.xml
│   ├── test_381/
│   │   └── test.xml
│   ├── test_382/
│   │   └── test.xml
│   ├── test_383/
│   │   └── test.xml
│   ├── test_384/
│   │   └── test.xml
│   ├── test_385/
│   │   └── test.xml
│   ├── test_386/
│   │   └── test.xml
│   ├── test_387/
│   │   └── test.xml
│   ├── test_388/
│   │   └── test.xml
│   ├── test_389/
│   │   └── test.xml
│   ├── test_390/
│   │   └── test.xml
│   ├── test_391/
│   │   └── test.xml
│   ├── test_392/
│   │   └── test.xml
│   ├── test_393/
│   │   └── test.xml
│   ├── test_394/
│   │   └── test.xml
│   ├── test_395/
│   │   └── test.xml
│   ├── test_396/
│   │   └── test.xml
│   ├── test_397/
│   │   ├── stops.txt
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_398/
│   │   └── test.xml
│   ├── test_399/
│   │   └── test.xml
│   ├── test_400/
│   │   └── test.xml
│   ├── test_401/
│   │   ├── data.xml
│   │   └── test.xml
│   ├── test_402/
│   │   └── test.xml
│   ├── test_403/
│   │   ├── exc1.txt
│   │   ├── exceptions.txt
│   │   ├── stops.txt
│   │   ├── stops1.txt
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   └── wordforms2.txt
│   ├── test_404/
│   │   └── test.xml
│   ├── test_405/
│   │   ├── exc.txt
│   │   ├── stop.txt
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   └── wordforms1.txt
│   ├── test_406/
│   │   ├── data/
│   │   │   ├── index.0.spa
│   │   │   ├── index.0.spd
│   │   │   ├── index.0.spds
│   │   │   ├── index.0.spe
│   │   │   ├── index.0.sph
│   │   │   ├── index.0.sphi
│   │   │   ├── index.0.spi
│   │   │   ├── index.0.spm
│   │   │   ├── index.0.spp
│   │   │   ├── index.0.spt
│   │   │   ├── index.meta
│   │   │   ├── index.ram
│   │   │   ├── pq.meta
│   │   │   ├── rel320/
│   │   │   │   ├── idx320.meta
│   │   │   │   └── idx320.ram
│   │   │   └── rt67/
│   │   │       ├── hitless_words_chunk0_0.txt
│   │   │       ├── rt67.0.spa
│   │   │       ├── rt67.0.spd
│   │   │       ├── rt67.0.spds
│   │   │       ├── rt67.0.spe
│   │   │       ├── rt67.0.sph
│   │   │       ├── rt67.0.sphi
│   │   │       ├── rt67.0.spi
│   │   │       ├── rt67.0.spidx
│   │   │       ├── rt67.0.spm
│   │   │       ├── rt67.0.spp
│   │   │       ├── rt67.0.spt
│   │   │       ├── rt67.meta
│   │   │       └── rt67.settings
│   │   └── test.xml
│   ├── test_407/
│   │   └── test.xml
│   ├── test_408/
│   │   ├── test.xml
│   │   ├── word_a.txt
│   │   ├── words1.txt
│   │   ├── words2.txt
│   │   └── words3.txt
│   ├── test_409/
│   │   ├── ex1.txt
│   │   ├── hw1.txt
│   │   ├── hw3.txt
│   │   ├── stop1.txt
│   │   ├── stop2.txt
│   │   ├── test.xml
│   │   ├── wf1.txt
│   │   └── wf3.txt
│   ├── test_410/
│   │   └── test.xml
│   ├── test_411/
│   │   └── test.xml
│   ├── test_412/
│   │   └── test.xml
│   ├── test_413/
│   │   └── test.xml
│   ├── test_414/
│   │   └── test.xml
│   ├── test_415/
│   │   └── test.xml
│   ├── test_416/
│   │   └── test.xml
│   ├── test_417/
│   │   └── test.xml
│   ├── test_418/
│   │   ├── data1.xml
│   │   └── test.xml
│   ├── test_419/
│   │   └── test.xml
│   ├── test_420/
│   │   └── test.xml
│   ├── test_421/
│   │   └── test.xml
│   ├── test_422/
│   │   └── test.xml
│   ├── test_430/
│   │   └── test.xml
│   ├── test_431/
│   │   └── test.xml
│   ├── test_432/
│   │   ├── data1.csv
│   │   ├── data1.xml
│   │   └── test.xml
│   ├── test_433/
│   │   └── test.xml
│   ├── test_434/
│   │   └── test.xml
│   ├── test_435/
│   │   └── test.xml
│   ├── test_436/
│   │   └── test.xml
│   ├── test_437/
│   │   └── test.xml
│   ├── test_438/
│   │   └── test.xml
│   ├── test_439/
│   │   └── test.xml
│   ├── test_440/
│   │   └── test.xml
│   ├── test_441/
│   │   └── test.xml
│   ├── test_442/
│   │   └── test.xml
│   ├── test_443/
│   │   └── test.xml
│   ├── test_444/
│   │   └── test.xml
│   ├── test_445/
│   │   └── test.xml
│   ├── test_446/
│   │   └── test.xml
│   ├── test_447/
│   │   └── test.xml
│   ├── test_448/
│   │   └── test.xml
│   ├── test_449/
│   │   └── test.xml
│   ├── test_450/
│   │   └── test.xml
│   ├── test_451/
│   │   └── test.xml
│   ├── test_452/
│   │   └── test.xml
│   ├── test_453/
│   │   └── test.xml
│   ├── test_454/
│   │   └── test.xml
│   ├── test_455/
│   │   └── test.xml
│   ├── test_456/
│   │   └── test.xml
│   ├── test_457/
│   │   └── test.xml
│   ├── test_458/
│   │   └── test.xml
│   ├── test_459/
│   │   └── test.xml
│   ├── test_460/
│   │   └── test.xml
│   ├── test_461/
│   │   └── test.xml
│   ├── test_462/
│   │   └── test.xml
│   ├── test_463/
│   │   └── test.xml
│   ├── test_464/
│   │   ├── exceptions.txt
│   │   ├── stops.txt
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_465/
│   │   └── test.xml
│   ├── test_466/
│   │   └── test.xml
│   ├── test_467/
│   │   └── test.xml
│   ├── test_468/
│   │   └── test.xml
│   ├── test_469/
│   │   └── test.xml
│   ├── test_470/
│   │   └── test.xml
│   ├── test_471/
│   │   ├── global.idf
│   │   ├── global_idf_src.txt
│   │   └── test.xml
│   ├── test_472/
│   │   ├── global.idf
│   │   ├── global2.idf
│   │   ├── global_idf2_src.txt
│   │   ├── global_idf_src.txt
│   │   └── test.xml
│   ├── test_473/
│   │   └── test.xml
│   ├── test_474/
│   │   └── test.xml
│   ├── test_475/
│   │   └── test.xml
│   ├── test_476/
│   │   └── test.xml
│   ├── test_477/
│   │   └── test.xml
│   ├── test_478/
│   │   └── test.xml
│   ├── test_479/
│   │   └── test.xml
│   ├── test_480/
│   │   ├── dummy.txt
│   │   ├── dummy_empty.txt
│   │   ├── exc1.txt
│   │   ├── hitless1.txt
│   │   ├── stops.txt
│   │   ├── stops_line.txt
│   │   ├── stops_mixed.txt
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   └── wordforms2.txt
│   ├── test_481/
│   │   └── test.xml
│   ├── test_482/
│   │   └── test.xml
│   ├── test_483/
│   │   ├── data1.csv
│   │   ├── data2.csv
│   │   └── test.xml
│   ├── test_484/
│   │   └── test.xml
│   ├── test_485/
│   │   └── test.xml
│   ├── test_486/
│   │   └── test.xml
│   ├── test_487/
│   │   └── test.xml
│   ├── test_488/
│   │   └── test.xml
│   ├── test_columnar.conf
│   ├── test_icu.conf
│   ├── test_jieba.conf
│   ├── test_odbc.conf
│   ├── test_re.conf
│   ├── ubertest.php
│   ├── ubertest.php.in
│   ├── valgrind.supp
│   └── wordforms.txt
├── translator.config.yaml
├── translator.models.yaml
├── translator.role.tpl
└── valgrind

================================================
FILE CONTENTS
================================================

================================================
FILE: .clt/checkers/contains
================================================
#!/usr/bin/env bash

# Check if two arguments are provided
if [ $# -ne 2 ]; then
	echo "Usage: $0 <patterns_file> <target_file>"
	exit 1
fi

REC_FILE=$1
REP_FILE=$2

# Check if files exist
if [ ! -f "$REC_FILE" ]; then
	echo "Error: Patterns file '$REC_FILE' does not exist"
	exit 1
fi

if [ ! -f "$REP_FILE" ]; then
	echo "Error: Target file '$REP_FILE' does not exist"
	exit 1
fi

# Read the target file content once
REP_CONTENT=$(cat "$REP_FILE")

# Flag to track if all patterns are found
all_found=true

# Process each line in the patterns file
while IFS= read -r line; do
	# Skip empty lines
	if [ -z "$line" ]; then
		continue
	fi

	# Split the line into multiple patterns (separated by spaces)
	read -ra patterns <<< "$line"

	# For each line in the patterns file, check all patterns in that line
	line_match=true
	for pattern in "${patterns[@]}"; do
		if ! echo "$REP_CONTENT" | grep -q "$pattern"; then
			echo "Pattern not found: '$pattern'"
			line_match=false
			all_found=false
		fi
	done

	if [ "$line_match" = false ]; then
		echo "Not all patterns from line '$line' were found"
	fi
done < "$REC_FILE"

# Exit with appropriate status
if [ "$all_found" = true ]; then
	echo "All patterns found successfully"
	exit 0
else
	echo "Some patterns were not found"
	exit 1
fi



================================================
FILE: .clt/checkers/ignore
================================================
#!/usr/bin/env bash

# Check if two arguments are provided
if [ $# -ne 2 ]; then
	echo "Usage: $0 <patterns_file> <target_file>"
	exit 1
fi

exit 0



================================================
FILE: .clt/checkers/something
================================================
#!/usr/bin/env bash

# Check if two arguments are provided
if [ $# -ne 2 ]; then
	echo "Usage: $0 <patterns_file> <target_file>"
	exit 1
fi

REC_FILE=$1
REP_FILE=$2

# Check if files exist
if [ ! -f "$REC_FILE" ]; then
	echo "Error: Patterns file '$REC_FILE' does not exist"
	exit 1
fi

if [ ! -f "$REP_FILE" ]; then
	echo "Error: Target file '$REP_FILE' does not exist"
	exit 1
fi

# Read the target file content once
REP_CONTENT=$(cat "$REP_FILE" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e 's/[[:space:]]\+/ /g')
if [ -n "$REP_CONTENT" ]; then
	echo 'Output is not empty'
	exit 0
else
	echo 'Output is empty'
	exit 1
fi



================================================
FILE: .clt/patterns
================================================
LLDATETIME [A-Za-z]{3}\s+[0-9]{1,2}\s[0-9]{2}:[0-9]{2}
LLFILESIZE \s*[0-9]+(K|B|G)?
COMMITDATE [a-z0-9]{7,9}@[0-9]{6,8}
VERSION v?([0-9]+\.[0-9]+\.[0-9]+|x\.x\.x)([\-\+\s][0-9a-zA-Z\-\.@]+)?(\sdev)?
TABLE_LINE \+[-]+\+([-]+\+)+
TABLE_ROW \|\s*(.*?)\s*(\|\s*(.*?)\s*)?(\|\s*(.*?)\s*)?(\|\s*(.*?)\s*)?(\|\s*(.*?)\s*)?(\|\s*(.*?)\s*)?(\|\s*(.*?)\s*)?(\|\s*(.*?)\s*)?(\|\s*(.*?)\s*)?(\|\s*(.*?)\s*)?\|


================================================
FILE: .cursorignore
================================================
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)

build*
.translation-cache*
manual/chinese
manual/russian
translator
cache

================================================
FILE: .editorconfig
================================================
root = true

[*]
indent_style = tab
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.yml]
indent_style = space
indent_size = 2
trim_trailing_whitespace = false

[*.yaml]
indent_style = space
indent_size = 2
trim_trailing_whitespace = false


================================================
FILE: .github/FUNDING.yml
================================================
custom: ["https://www.paypal.me/manticoresearch"]


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: 🐞 Bug Report
description: Submit a bug report for Manticore Search
labels: bug
body:
  - type: markdown
    attributes:
      value: |
        Thank you for submitting a bug report. We appreciate your effort to provide detailed information. Please answer the following questions to help us identify and fix the bug. Thank you!
  - type: textarea
    id: proposal
    attributes:
      label: "Bug Description:"
      description: >
        Describe the bug in detail. Include a [Minimal Reproducible Example](https://en.wikipedia.org/wiki/Minimal_reproducible_example) (MRE) if possible. Place any code blocks within triple backticks:
      value: |
        ```bash
        # Example code block; replace with your code if applicable
        ```
    validations:
      required: true
  - type: input
    id: version
    attributes:
      label: "Manticore Search Version:"
      description: >
        Provide the version of Manticore Search you are using. Execute `searchd -v` in the command line to find this information.
    validations:
      required: true
  - type: input
    id: os
    attributes:
      label: "Operating System Version:"
      description: >
        Specify the version of your operating system.
    validations:
      required: true
  - type: dropdown
    id: dev
    attributes:
      label: "Have you tried the latest development version?"
      multiple: false
      options:
        - "Yes"
        - "No"
  - type: markdown
    attributes:
      value: "## Thank you for completing the form! For an expedited solution, consider our [professional services](https://manticoresearch.com/services/)."
  - type: textarea
    id: checklist
    attributes:
      label: "Internal Checklist:"
      description: >
        **For Manticore Team Use Only** — Please do not edit this section. This checklist will be completed by the Manticore team as they manage the issue.
      value: |
        <sup>To be completed by the assignee. Check off tasks that have been completed or are not applicable.</sup>
        <details>

        - [ ] Implementation completed
        - [ ] Tests developed
        - [ ] Documentation updated
        - [ ] Documentation reviewed

        </details>
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
contact_links:
  - name: "Manticore Search quick start guide"
    about: "Get help with setting up and using Manticore Search."
    url: "https://manual.manticoresearch.com/Quick_start_guide"
  - name: "Manticore Search roadmap"
    about: "View the development roadmap and upcoming features of Manticore Search."
    url: "https://roadmap.mnt.cr/"
  - name: "Manticore Team's professional services"
    about: "Looking for a faster solution to your issues with Manticore? Manticore Team can help."
    url: "https://manticoresearch.com/services"


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yml
================================================
name: 🌟 Feature Request
description: Submit a proposal for a new Manticore Search feature or enhancement
body:
  - type: textarea
    id: proposal
    attributes:
      label: "Proposal:"
      description: >
        Please describe your proposal in detail.
        Include why you believe this feature should be added to Manticore Search and what use cases it supports.
        If applicable, add any examples or code snippets inside triple backticks to clarify your proposal.
    validations:
      required: true
  - type: markdown
    attributes:
      value: "## Thank you for completing the form! If you are interested in sponsoring the development of this feature, consider our [professional services](https://manticoresearch.com/services/)."
  - type: textarea
    id: checklist
    attributes:
      label: "Checklist:"
      description: >
        **For Manticore Team Use Only** — Please do not edit this section. This checklist will be completed by the Manticore team as they manage the issue.
      value: |
        <sup>To be completed by the assignee. Check off tasks that have been completed or are not applicable.</sup>
        <details>

        - [ ] Implementation completed
        - [ ] Tests developed
        - [ ] Documentation updated
        - [ ] Documentation reviewed
        - [x] OpenAPI YAML updated and issue created to rebuild clients

        </details>
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/support_request.yml
================================================
name: ❓ Support Request
description: Need help with Manticore Search? Submit your questions here!
body:
  - type: checkboxes
    id: dev
    attributes:
      label: "Confirmation Checklist:"
      description: >
        Before submitting your request, we ask that you confirm the following items to ensure that you receive the most effective support:
      options:
        - label: "You have searched for an answer in [the manual](https://manual.manticoresearch.com/)."
        - label: "You have considered using [the forum](https://forum.manticoresearch.com/) for general discussions, which can be more suitable for non-urgent or broad queries."
        - label: "You are aware of our community support channels on [Slack](https://slack.manticoresearch.com/), [Telegram EN](https://t.me/manticoresearch_en), and [Telegram RU](https://t.me/manticore_chat), where you can interact with other users and our developers."
        - label: "You know about Manticore Team's [professional services](https://manticoresearch.com/services). Engaging with our experts through a support subscription can significantly accelerate resolution times and provide tailored solutions to your specific needs."
    validations:
      required: true
  - type: textarea
    id: question
    attributes:
      label: "Your question:"
      description: >
        Please provide detailed information about your question to ensure prompt and accurate help!
    validations:
      required: true
  - type: markdown
    attributes:
      value: "## Thank you for completing the form! If you need immediate, dedicated support or a long-term support subscription, consider using our [professional services](https://manticoresearch.com/services)."


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Before submitting a pull request, please ensure you've read the Contributing guide located at CONTRIBUTING.md in the root directory.
-->

**Type of Change (select one):**
- Bug fix 
- New feature
- Documentation update

**Description of the Change:**

**Related Issue (provide the link):**


================================================
FILE: .github/stale.yml
================================================
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 3
# Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled)
onlyLabels:
  - "waiting for reply"
  - "waiting"
# Issues with these labels will never be considered stale
#exemptLabels:
#  - binlog
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
  This issue has been automatically marked as stale because it has not had
  recent activity. It will be closed if no further activity occurs. Thank you
  for your contributions. Feel free to re-open the issue in case it becomes actual.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
limitPerRun: 1
# Limit to only `issues` or `pulls`
#only: issues


================================================
FILE: .github/workflows/build_template.yml
================================================
name: Build Template

on:
  workflow_call:
    inputs:
      arch:
        required: false
        type: string
        default: x86_64
      DISTR:
        required: false
        type: string
        default: jammy
      CTEST_CMAKE_GENERATOR:
        required: false
        type: string
        default: Ninja
      CTEST_CONFIGURATION_TYPE:
        required: false
        type: string
        default: RelWithDebInfo
      WITH_COVERAGE:
        required: false
        type: number
        default: 0
      UNITY_BUILD:
        required: false
        type: number
        default: 1
      version:
        required: false
        type: string
        default: ""
      build_tag:
        required: false
        type: string
        default: ""
      cmake_command:
        required: false
        type: string
        default: "ctest -VV -S misc/ctest/gltest.cmake --no-compress-output"
      cache_key:
        required: false
        type: string
        default: build_linux_x86_64
      boost_url_key:
        required: false
        type: string
        default: boost_nov22
      sysroot_url_key:
        required: false
        type: string
        default: roots_nov22
      artifact_list:
        required: false
        type: string
        default: "build/xml build/CMakeFiles/CMake*.log build/api/libsphinxclient/testcli build/src/indexer build/src/indextool build/src/searchd build/src/tests build/src/gtests/gmanticoretest build/config/*.c build/config/*.h build/**/*.cxx build/**/*.gcno"
      artifact_name:
        required: false
        type: string
      HOMEBREW_PREFIX:
        required: false
        type: string
        default:
      PACK_GALERA:
        required: false
        type: number
        default: 0
      COLUMNAR_LOCATOR:
        required: false
        type: string
        default: ""
  
jobs:
  build:
    runs-on: ubuntu-22.04
    defaults:
      run:
        shell: bash
    timeout-minutes: 30
    container:
      image: manticoresearch/external_toolchain:vcpkg331_20260310
      env:
        CACHEB: "../cache"
        DIAGNOSTIC: 1
        PACK_ICUDATA: 0
        NO_TESTS: 1
        DISTR: ${{ inputs.DISTR }}
        boost: ${{ inputs.boost_url_key }}
        sysroot: ${{ inputs.sysroot_url_key }}
        arch: ${{ inputs.arch }}
        CTEST_CMAKE_GENERATOR: ${{ inputs.CTEST_CMAKE_GENERATOR }}
        CTEST_CONFIGURATION_TYPE: ${{ inputs.CTEST_CONFIGURATION_TYPE }}
        WITH_COVERAGE: ${{ inputs.WITH_COVERAGE }}
        UNITY_BUILD: ${{ inputs.UNITY_BUILD }}
        SYSROOT_URL: https://repo.manticoresearch.com/repository/sysroots
        HOMEBREW_PREFIX: ${{ inputs.HOMEBREW_PREFIX }}
        PACK_GALERA: ${{ inputs.PACK_GALERA }}
        COLUMNAR_LOCATOR: ${{ inputs.COLUMNAR_LOCATOR }}
        BUILD_TAG: ${{ inputs.build_tag }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          set-safe-directory: true

      - name: Patch version
        if: inputs.version != ''
        run: |
          sed -i "s/0\.0\.0/${{ inputs.version }}/g" src/sphinxversion.h.in
          cat src/sphinxversion.h.in

      - name: Initialization
        run: | # without adding the safe.directory cmake fails to do git log -1 --date=short --format=%cd
          bash /sysroot/root/entry_point.sh
          git config --global --add safe.directory /__w/manticoresearch/manticoresearch
          git config --global core.abbrev 9

      - name: Set output artifact name
        id: artifact_name
        run: |
          USER_INPUT=${{ inputs.artifact_name }}
          echo "value=${USER_INPUT:-"build_${{ inputs.DISTR }}_${{ inputs.CTEST_CONFIGURATION_TYPE }}_${{ inputs.arch }}"}" >> "$GITHUB_OUTPUT"

      - name: Check out cache before building
        uses: actions/cache@v4
        with:
          path: cache
          enableCrossOsArchive: true
          key: ${{ inputs.cache_key }}

      - name: 🚀 Build
        run: |
          ${{ inputs.cmake_command }}

      - name: Upload build artifacts
        if: success()
        uses: manticoresoftware/upload_artifact_with_retries@v4
        with:
          name: ${{ steps.artifact_name.outputs.value }}
          path: ${{ inputs.artifact_list }}


================================================
FILE: .github/workflows/check_docs.yml
================================================
name: 📖 Check docs
run-name: 📖 Check docs ${{ github.sha }}

on:
  workflow_call:
  workflow_run:
    workflows: 
      - 📖 Trigger doc check
    types:
      - completed

jobs:
  translate_docs:
    runs-on: ubuntu-24.04
    outputs:
      repo: ${{ steps.repo-check.outputs.repo }}
      ref: ${{ steps.repo-check.outputs.ref }}
    permissions:
      contents: write
      pull-requests: read
    defaults:
      run:
        shell: bash
    steps:
      - name: Download an artifact with PR repo name
        if: github.event_name == 'workflow_run'
        uses: actions/download-artifact@v4
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          run-id: ${{ github.event.workflow_run.id }}
          name: pr_repo
          path: .
      - name: Check origin repository
        id: repo-check
        run: |
          if [ "${{ github.event_name }}" == "workflow_run" ]; then
            PR_REPO=$(cat ./pr_repo.txt)
            repo=$(head -n 1 <<< "$PR_REPO")
            ref=$(tail -n 1 <<< "$PR_REPO")
          else
            repo="${{ github.repository }}"
            ref="${{ github.head_ref }}"
          fi
          echo "repo=$repo" >> $GITHUB_OUTPUT
          echo "ref=$ref" >> $GITHUB_OUTPUT
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          repository: ${{ steps.repo-check.outputs.repo }}
          token: ${{ secrets.GITHUB_TOKEN }}
          submodules: true
          ref: ${{ steps.repo-check.outputs.ref }}

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
          tools: composer
          extensions: curl

      - name: Run auto-translate
        env:
          OPENROUTER_TRANSLATOR_API_KEY: ${{ secrets.OPENROUTER_TRANSLATOR_API_KEY }}
        run: |
          set -e
          # Install PHP dependencies for translator
          cd translator
          composer install --no-dev --no-interaction --prefer-dist
          cd ..

          # Configure git for commits
          git config --global user.name "github-actions[bot]"
          git config --global user.email "github-actions[bot]@users.noreply.github.com"

          # Run auto-translate
          ./translator/bin/auto-translate

          # Check if there are any changes to commit (including untracked files)
          if [ -n "$(git status --porcelain)" ]; then
            echo "Auto-translate made changes, committing them..."
            git add -A
            git commit -m "docs: Auto-translate documentation changes by ${{ github.actor }}"
            git push
            echo "Changes committed and pushed successfully"
          else
            echo "No changes made by auto-translate"
          fi

  docs_check:
    needs: translate_docs
    runs-on: ubuntu-22.04
    permissions:
      contents: write
      pull-requests: read
    defaults:
      run:
        shell: bash
    container:
      image: manticoresearch/docs_autodeploy_multi:latest
      env:
        CACHEB: "../cache"
        DOCKER_HOST: tcp://docker:2375/
        DOCKER_DRIVER: overlay2
        COMMIT_DIR: manual
        DOCS_ERRORS_DIR: build/docs/
        GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}

    steps:
      - name: Check origin repository
        id: repo-check
        run: |
          if [ "${{ github.event_name }}" == "workflow_run" ]; then
            repo="${{ needs.translate_docs.outputs.repo }}"
            ref="${{ needs.translate_docs.outputs.ref }}"
          elif [ "${{ github.event_name }}" == "pull_request" ]; then
            repo="${{ github.event.pull_request.head.repo.full_name }}"
            ref="${{ github.head_ref }}"
          else
            repo="${{ github.repository }}"
            ref="${{ github.head_ref || github.ref_name }}"
          fi
          echo "repo=$repo" >> $GITHUB_OUTPUT
          echo "ref=$ref" >> $GITHUB_OUTPUT

      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          repository: ${{ steps.repo-check.outputs.repo }}
          token: ${{ secrets.GITHUB_TOKEN }}
          submodules: true
          ref: ${{ steps.repo-check.outputs.ref }}

      - name: Fetch master and get changed files
        id: changed-files
        run: |
          git config --global --add safe.directory /__w/manticoresearch/manticoresearch
          # Update local master only if we're not currently on it
          if [ "${{ github.ref_name }}" != "master" -a "${{ github.event_name }}" != "pull_request" ]; then
            git fetch origin master:master
          fi
          git diff-tree --no-commit-id --name-only -r HEAD^1 HEAD | xargs
          echo "changed_files=$(git diff-tree --no-commit-id --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_OUTPUT

      - name: Get changed doc filepathes
        id: doc-filepathes
        run: |
          filepathes=""
          for file in ${{ steps.changed-files.outputs.changed_files }}; do
            case "$file" in 
              "$COMMIT_DIR/"*) 
                 filepathes="$file $filepathes"
              ;;
             esac  
          done
          echo "$filepathes"
          echo "filepathes=$filepathes" >> $GITHUB_OUTPUT
      - name: Check docs
        id: check
        run: |
          docs_errors=$(php "/Deploy/check_docs_validity.php"  "${{ steps.doc-filepathes.outputs.filepathes }}" "$COMMIT_DIR/" "$DOCS_ERRORS_DIR" | xargs)
          echo $docs_errors
          echo "errors=$docs_errors" >> $GITHUB_OUTPUT
      - name: Check docs translations
        run: |
          set -e
          ./misc/compare_manuals.sh
      - name: Upload artifact
        uses: manticoresoftware/upload_artifact_with_retries@v4
        with:
          name: Docs error artifact
          path: $DOCS_ERRORS_DIR
      - name: Display result
        run: |
          if [ "${{ steps.check.outputs.errors }}" != "" ]; then
            exit 1
          fi
          echo "Doc check passed successfully "

          


================================================
FILE: .github/workflows/checklist_validator.yml
================================================
name: 📝 Checklist Validator
run-name: 📝 Checklist Validator for issue ${{ github.event.issue.number }}

on:
  issues:
    types:
      - closed

jobs:
  checklist-validation:
    name: ✅ Checklist Completion Check
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/manticoresearch/actions/checklist-validator@master
    

================================================
FILE: .github/workflows/clt_nightly.yml
================================================
name: Nightly tests
run-name: 🌙 Nightly tests ${{ github.sha }}

on:
  schedule:
    - cron: '00 20 * * *'
  pull_request:
    branches: [ master ]
    paths:
      - '.github/workflows/clt_nightly.yml'
      - 'test/clt-tests/installation/**'
      - 'test/clt-tests/data-manipulation/test-replace-into.rec'
      - 'test/clt-tests/data-manipulation/test-alter-rename-nightly.rec'
      - 'test/clt-tests/indexing-error/**'
      - 'test/clt-tests/indexer/indexer-latest-mysql-postgres/**'
      - 'test/clt-tests/performance-nightly/**'
      - 'test/clt-tests/sharding/drop/**'
      - 'test/clt-tests/tables-interaction/test-tables-interaction.rec'

# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
concurrency:
  group: clt_nightly_${{ github.ref }}
  cancel-in-progress: true

jobs:
  commit_info:
    name: Commit info 
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - run: |
          echo "# Nightly tests of latest release" >> $GITHUB_STEP_SUMMARY
          echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY

  clt-amd64:
    name: CLT-Amd64
    runs-on: ubuntu-22.04
    strategy:
      fail-fast: false 
      matrix:
        include:
          - name: Alma 8 release installation
            image: almalinux:8
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: Alma 9 release installation
            image: almalinux:9
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: Alma 10 release installation
            image: almalinux:10
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: OL 9 release installation
            image: "oraclelinux:9"
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: Amazon release installation
            image: amazonlinux:latest
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: Bionic release installation
            image: ubuntu:bionic
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Focal release installation
            image: ubuntu:focal
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Jammy release installation
            image: ubuntu:jammy
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Bullseye release installation
            image: debian:bullseye
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Bookworm release installation
            image: debian:bookworm
            test_prefix: test/clt-tests/installation/deb-release-         
          - name: Trixie release installation
            image: debian:trixie
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Noble release installation
            image: ubuntu:noble
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Alma 8 upgrade to dev
            image: almalinux:8
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: Alma 9 upgrade to dev
            image: almalinux:9
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: Alma 10 upgrade to dev
            image: almalinux:10
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: OL 9 upgrade to dev
            image: "oraclelinux:9"
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: Amazon upgrade to dev
            image: amazonlinux:latest
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: Bionic upgrade to dev
            image: ubuntu:bionic
            test_prefix: test/clt-tests/installation/deb-dev-u
          - name: Focal upgrade to dev
            image: ubuntu:focal
            test_prefix: test/clt-tests/installation/deb-dev-u
          - name: Jammy upgrade to dev
            image: ubuntu:jammy
            test_prefix: test/clt-tests/installation/deb-dev-u
          - name: Bullseye upgrade to dev
            image: debian:bullseye
            test_prefix: test/clt-tests/installation/deb-dev-u
          - name: Bookworm upgrade to dev
            image: debian:bookworm
            test_prefix: test/clt-tests/installation/deb-dev-update
          - name: Trixie upgrade to dev
            image: debian:trixie
            test_prefix: test/clt-tests/installation/deb-dev-update
          - name: Noble upgrade to dev
            image: ubuntu:noble
            test_prefix: test/clt-tests/installation/deb-dev-update
          - name: REPLACE INTO
            image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
            test_prefix: test/clt-tests/data-manipulation/test-replace-into
          - name: Indexing errors
            image: manticoresearch/dind:v1
            test_prefix: test/clt-tests/indexing-error/test-id-attribute-error-during-indexing
          - name: Indexer latest MYSQL POSTGRES
            image: manticoresearch/dind:v1
            test_prefix: test/clt-tests/indexer/indexer-latest-mysql-postgres/indexer-latest-mysql-postgres
          - name: Test alter rename nightly
            image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
            test_prefix: test/clt-tests/data-manipulation/test-alter-rename-nightly
          - name: Tables interaction
            image: manticoresearch/dind:v1
            test_prefix: test/clt-tests/tables-interaction/test-tables-interaction
          - name: Drop sharded table
            image: manticoresearch/dind:v1
            test_prefix: test/clt-tests/sharding/drop/test-drop-sharded-table

# Disabled as it works unstable.
#          - name: Tests performance JSON vs SQL
#            image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
#            test_prefix: test/clt-tests/performance-tests/test-comparison-
          - name: Test performance for queries with multiple disk chunks
            image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
            test_prefix: test/clt-tests/performance-nightly/test-performance-for-queries-with-multiple-disk-chunks
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: ${{ matrix.test_prefix }}
          image: ${{ matrix.image }}
          comment_mode: failures
          run_args: --privileged 
          ui_host: "https://clt.manticoresearch.com"
          
  clt-arm64:
    name: CLT-Arm64
    runs-on: ubuntu-24.04-arm
    strategy:
      fail-fast: false 
      matrix:
        include:
          - name: Alma 8 release installation
            image: almalinux:8
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: Alma 9 release installation
            image: almalinux:9
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: Alma 10 release installation
            image: almalinux:10
            test_prefix: test/clt-tests/installation/rhel-release-  
          - name: OL 9 release installation
            image: "oraclelinux:9"
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: Amazon release installation
            image: amazonlinux:latest
            test_prefix: test/clt-tests/installation/rhel-release-
          - name: Bionic release installation
            image: ubuntu:bionic
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Focal release installation
            image: ubuntu:focal
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Jammy release installation
            image: ubuntu:jammy
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Bullseye release installation
            image: debian:bullseye
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Bookworm release installation
            image: debian:bookworm
            test_prefix: test/clt-tests/installation/deb-release-         
          - name: Trixie release installation
            image: debian:trixie
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Noble release installation
            image: ubuntu:noble
            test_prefix: test/clt-tests/installation/deb-release-
          - name: Alma 8 upgrade to dev
            image: almalinux:8
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: Alma 9 upgrade to dev
            image: almalinux:9
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: Alma 10 upgrade to dev
            image: almalinux:10
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: OL 9 upgrade to dev
            image: "oraclelinux:9"
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: Amazon upgrade to dev
            image: amazonlinux:latest
            test_prefix: test/clt-tests/installation/rhel-dev-u
          - name: Bionic upgrade to dev
            image: ubuntu:bionic
            test_prefix: test/clt-tests/installation/deb-dev-u
          - name: Focal upgrade to dev
            image: ubuntu:focal
            test_prefix: test/clt-tests/installation/deb-dev-u
          - name: Jammy upgrade to dev
            image: ubuntu:jammy
            test_prefix: test/clt-tests/installation/deb-dev-u
          - name: Bullseye upgrade to dev
            image: debian:bullseye
            test_prefix: test/clt-tests/installation/deb-dev-u
          - name: Bookworm upgrade to dev
            image: debian:bookworm
            test_prefix: test/clt-tests/installation/deb-dev-update
          - name: Trixie upgrade to dev
            image: debian:trixie
            test_prefix: test/clt-tests/installation/deb-dev-update
          - name: Noble upgrade to dev
            image: ubuntu:noble
            test_prefix: test/clt-tests/installation/deb-dev-update
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: ${{ matrix.test_prefix }}
          image: ${{ matrix.image }}
          comment_mode: failures
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

================================================
FILE: .github/workflows/clt_tests.yml
================================================
name: CLT tests 
on:
  workflow_call:
    inputs:
      docker_image:
        required: true
        type: string
        description: "Docker image to use for tests"
      artifact_name:
        required: false
        type: string
        description: "Name of the docker image artifact"
      repository:
        required: false
        type: string
        description: "Repository to checkout"
      ref:
        required: false
        type: string
        description: "Ref to checkout"
      continue_on_error:
        required: false
        type: boolean
        description: "Continue on error"
        default: false
    secrets:
      OPENAI_API_KEY:
        required: true
        description: "OpenAI API key for CLT tests"
      VOYAGE_API_KEY:
        required: true
        description: "Voyage API key for CLT tests"
      JINA_API_KEY:
        required: true
        description: "Jina API key for CLT tests"

jobs:
  discover:
    name: Discover CLT tests
    runs-on: ubuntu-22.04
    outputs:
      matrix: ${{ steps.build.outputs.matrix }}
    steps:
      - uses: actions/checkout@v4
        with:
          repository: ${{ inputs.repository }}
          ref: ${{ inputs.ref }}
      - id: build
        name: Build matrix
        shell: bash
        run: |
          set -euo pipefail
          python3 - <<'PY'
          import json
          import os
          import pathlib

          roots = [
              "test/clt-tests/buddy",
              "test/clt-tests/buddy-plugins",
              "test/clt-tests/bugs",
              "test/clt-tests/core",
              "test/clt-tests/data-manipulation",
              "test/clt-tests/expected-errors",
              "test/clt-tests/fulltext-search",
              "test/clt-tests/mcl",
              "test/clt-tests/http-interface",
              "test/clt-tests/indexer",
              "test/clt-tests/join",
              "test/clt-tests/kibana",
              "test/clt-tests/mysqldump/mysql",
              "test/clt-tests/mysqldump/maria",
              "test/clt-tests/performance",
              "test/clt-tests/replication",
              "test/clt-tests/sharding/cluster",
              "test/clt-tests/sharding/functional",
              "test/clt-tests/sharding/replication",
              "test/clt-tests/sharding/syntax",
              "test/clt-tests/test-configuration",
              "test/clt-tests/vector-knn",
          ]

          tests = []
          for root in roots:
              root_path = pathlib.Path(root)
              if not root_path.exists():
                  continue
              for path in sorted(root_path.glob("*.rec")):
                  # clt appends "*.rec" to the prefix; strip the suffix to avoid ".rec*.rec"
                  tests.append(str(path.with_suffix("")))

          total_jobs = 20
          if not tests:
              matrix = {"chunk": []}
          else:
              size = (len(tests) + total_jobs - 1) // total_jobs
              chunks = []
              for i in range(0, len(tests), size):
                  group = tests[i : i + size]
                  chunks.append(
                      {
                          "id": len(chunks),
                          "tests": group,
                          "test_prefix": "\n".join(group),
                      }
                  )
              matrix = {"chunk": chunks}

          print(f"Found {len(tests)} .rec tests across {len(matrix['chunk'])} jobs")
          output_path = os.environ["GITHUB_OUTPUT"]
          with open(output_path, "a", encoding="utf-8") as fh:
              fh.write(f"matrix={json.dumps(matrix)}\n")
          PY

  clt:
    name: CLT
    needs: [discover]
    runs-on: ubuntu-22.04
    timeout-minutes: 30
    continue-on-error: ${{ inputs.continue_on_error }}
    env:
      OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
      VOYAGE_API_KEY: ${{ secrets.VOYAGE_API_KEY }}
      JINA_API_KEY: ${{ secrets.JINA_API_KEY }}
    strategy:
      fail-fast: false
      matrix: ${{ fromJson(needs.discover.outputs.matrix) }}
              
    steps:
      - uses: manticoresoftware/clt@0.7.8
        with:
          artifact: ${{ inputs.artifact_name }}
          image: ${{ inputs.docker_image }}
          repository: ${{ inputs.repository }}
          ref: ${{ inputs.ref }}
          test_prefix: ${{ matrix.chunk.test_prefix }}
          comment_mode: failures
          run_args: "-e OPENAI_API_KEY -e VOYAGE_API_KEY -e JINA_API_KEY"
          ui_host: "https://clt.manticoresearch.com"


================================================
FILE: .github/workflows/coverage.yml
================================================
name: 📊 Code coverage test
run-name: 📊 Code coverage test ${{ github.sha }}

on:
 #workflow_run:
 #  workflows: [ 🔬 Test ]
 #  types: [ completed ]
  workflow_dispatch:

# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
concurrency:
  group: coverage_${{ github.ref }}
  cancel-in-progress: true

jobs:
  commit_info:
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    name: Commit info
    runs-on: ubuntu-22.04
    steps:
      - run: |
          echo "# Coverage tests of commit ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
          echo "* Commit URL: [${{ github.sha }}](/${{ github.repository }}/commit/${{ github.sha }})" >> $GITHUB_STEP_SUMMARY
          echo "* Initiated by: [@${{ github.actor }}](https://github.com/${{ github.actor }})" >> $GITHUB_STEP_SUMMARY
          echo "* Ref: ${{ github.ref_type }} \"${{ github.ref_name }}\"" >> $GITHUB_STEP_SUMMARY
          echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY

  simple_build:
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    uses: ./.github/workflows/build_template.yml
    with:
      CTEST_CMAKE_GENERATOR: "Unix Makefiles" # as Ninja fails with coverage
      CTEST_CONFIGURATION_TYPE: "Debug"
      WITH_COVERAGE: 1

  simple_test_coverage:
    needs: simple_build
    uses: ./.github/workflows/test_template.yml
    with:
      WITH_COVERAGE: 1
      artifact_name: test_debug_coverage
      build_artifact_name: build_jammy_Debug_x86_64
      timeout: 20


================================================
FILE: .github/workflows/deploy_docs.yml
================================================
name: 📖 Deploy docs
run-name: 📖 Deploy docs ${{ github.sha }}

on:
  push:
    paths:
      - 'manual/**'
    branches:
      - master
      - maintenance-release
      - manticore-*

env:
  DOCS_AUTOCOMMIT_TITLE: Docs_examples_update

jobs:
  check:
    uses: ./.github/workflows/check_docs.yml
    secrets: inherit
  commit_info:
    name: Commit info
    runs-on: ubuntu-22.04
    steps:
      - run: |
          echo "# Docs deployment for commit ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
          echo "* Commit URL: [${{ github.sha }}](/${{ github.repository }}/commit/${{ github.sha }})" >> $GITHUB_STEP_SUMMARY
          echo "* Initiated by: [@${{ github.actor }}](https://github.com/${{ github.actor }})" >> $GITHUB_STEP_SUMMARY
          echo "* Ref: ${{ github.ref_type }} \"${{ github.ref_name }}\"" >> $GITHUB_STEP_SUMMARY
          echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY

  docs_autocommit_check:
    name: Check for doc deployment autocommits
    needs: [check]
    runs-on: ubuntu-22.04
    outputs:
      res: ${{ steps.check.outputs.res }}
    steps:
      - id: check
        if: ${{ github.event.head_commit.message != env.DOCS_AUTOCOMMIT_TITLE }}
        run: echo "res=ok" >> $GITHUB_OUTPUT
  docs_deploy:
    name: Manticore Manual doc deployment
    runs-on: ubuntu-22.04
    needs: docs_autocommit_check
    if: needs.docs_autocommit_check.outputs.res == 'ok'
    defaults:
      run:
        shell: bash
    #    timeout-minutes: 30
    container:
      image: manticoresearch/docs_autodeploy_multi:latest
      env:
        CACHEB: "../cache"
        DOCKER_HOST: tcp://docker:2375/
        DOCKER_DRIVER: overlay2
        RELEASE_FILENAME: latest_release_version
        COMMIT_DIR: manual
        DEPLOY_SOURCE: github
        DEPLOY_TARGET: k8s
        DOCS_ERRORS_DIR: build/docs/
        DOCS_AUTOCOMMIT_TITLE: ${{ env.DOCS_AUTOCOMMIT_TITLE }}
        DOCS_EXAMPLES_FILEPATH: 'build/test/examples.txt'
        GH_ACCESS_TOKEN: ${{ secrets.GH_ACCESS_TOKEN }}

        CI_PROJECT_TITLE: dev
        CI_PROJECT_PATH: manticoresoftware/manticoresearch
        CI_PROJECT_DIR: /__w/manticoresearch/manticoresearch
        CI_COMMIT_SHA: ${{ github.sha }}
        CI_COMMIT_BRANCH: ${{ github.ref_name }}
        CI_COMMIT_TITLE: ${{ github.event.head_commit.message }}
    steps:
      - name: Install fresh git
        run: |
          echo 'APT::Key::Assert-Pubkey-Algo ">=rsa1024";' > /etc/apt/apt.conf.d/99weakkey-warning
          apt-get update --allow-releaseinfo-change
          add-apt-repository -y ppa:git-core/ppa
          apt-get update
          apt-get install -y git
    
      - name: Checkout
        uses: actions/checkout@v3.5.3
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          set-safe-directory: true
          fetch-depth: 0

      - name: Initialization
        # without adding the safe.directory the script fails to do git show ...
        run: git config --global --add safe.directory /__w/manticoresearch/manticoresearch

      - name: Deploy
        run: |
          sh /Deploy/autoupdate.sh $DEPLOY_TARGET $COMMIT_DIR $DOCS_ERRORS_DIR

      - name: Upload artifact
        if: always()
        uses: manticoresoftware/upload_artifact_with_retries@v4
        with:
          name: Docs deploy error artifact
          path: $DOCS_ERRORS_DIR


================================================
FILE: .github/workflows/nightly_dumps.yml
================================================
name: Nightly testing of supported versions of mysqldump and elasticdump
run-name: 🌙 Nightly tests of mysqldump and elasticdump ${{ github.sha }}
on:
  schedule:
    - cron: '00 20 * * *'
  pull_request:
    branches: [ master ]
    paths:
      - 'test/clt-tests/migration-es-ms/**'       # trigger when changes are made in migration test files
      - 'test/clt-tests/mysqldump/versions/**'     # trigger when changes are made in mysqldump test files
      - '.github/workflows/nightly_dumps.yml'      # trigger when changes are made in the workflow config

# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
concurrency:
  group: nightly_dumps_${{ github.ref }}
  cancel-in-progress: true

jobs:
  commit_info:
    name: Commit info
    runs-on: ubuntu-22.04
    steps:
      - run: |
          echo "# Nightly tests of latest release" >> $GITHUB_STEP_SUMMARY
          echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY

  clt_test_mysqldump_mariadb_versions:
    name: Testing supported MariaDB mysqldump versions
    runs-on: ubuntu-22.04
    timeout-minutes: 30
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - uses: manticoresoftware/clt@0.7.8
        with:
          image: manticoresearch/dind:v1
          test_prefix: test/clt-tests/mysqldump/versions/mariadb/
          run_args: --privileged -v $(pwd)/manual:/manual
          ui_host: "https://clt.manticoresearch.com"

  clt_test_mysqldump_mysql_versions:
    name: Testing supported MySQL mysqldump versions
    runs-on: ubuntu-22.04
    timeout-minutes: 30
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - uses: manticoresoftware/clt@0.7.8
        with:
          image: manticoresearch/dind:v1
          test_prefix: test/clt-tests/mysqldump/versions/mysql/
          run_args: --privileged -v $(pwd)/manual:/manual
          ui_host: "https://clt.manticoresearch.com"

  clt_test_migration_es_ms:
    name: Testing data migration from elastic to manticore
    runs-on: ubuntu-22.04
    timeout-minutes: 60  
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - uses: manticoresoftware/clt@0.7.8
        with:
          image: manticoresearch/dind:v1
          test_prefix: test/clt-tests/migration-es-ms/
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

      - name: Upload .rep File
        if: always()  
        uses: actions/upload-artifact@v4
        with:
          name: test-migration-es-ms-rep
          path: test/clt-tests/migration-es-ms/test-migration-es-ms.rep

================================================
FILE: .github/workflows/nightly_fuzzer.yml
================================================
name: Nightly Fuzz Testing
run-name: 🌙 Nightly Fuzz Testing ${{ github.sha }}

on:
  # 📅 Run this workflow every day at 23:00 UTC
  schedule:
    - cron: '00 23 * * *'
  # 🚀 Also run when this file is updated in any branch
  push:
    branches:
      - '**'
    paths:
      - '.github/workflows/nightly_fuzzer.yml'    

# 🔁 Cancel older runs if a new one starts on the same branch
concurrency:
  group: nightly_fuzzing_${{ github.ref }}
  cancel-in-progress: true

jobs:

  recover_build_from_cache:
    name: ♻️ Recover build from cache
    runs-on: ubuntu-22.04
    outputs:
        cache-hit: ${{ steps.check-cache.outputs.cache-hit }}
    steps:
        - name: 📥 Checkout repo
          uses: actions/checkout@v3        
        - name: 💾 Attempt to restore build cache
          id: check-cache
          uses: actions/cache@v4
          with:
            path: build
            key: build-linux-fuzz-${{ github.sha }}
#            key: build-linux-fuzz
        - name: 📦 Upload restored build (if cache was found)
          if: steps.check-cache.outputs.cache-hit == 'true'
          uses: actions/upload-artifact@v4
          with:
              name: fuzz-build
              path: build

  build_linux_fuzz:
    name: 🛠️ Build with fuzzer (Linux)
    needs: recover_build_from_cache
    if: needs.recover_build_from_cache.outputs.cache-hit != 'true'
    uses: ./.github/workflows/build_template.yml
    with:
      CTEST_CONFIGURATION_TYPE: "Debug"
      artifact_name: fuzz-build
      artifact_list: "build"
      cache_key: build-linux-fuzz-cache-dir
      cmake_command: |
        mkdir build && cd build
        export CC=`which clang`
        export CXX=`which clang++`
        cmake -DQFUZZER=ON ..
        cmake --build . --target qfuzzer

  cache_build_artifact:
    name: 🧊 Save build to cache (if new)
    needs: build_linux_fuzz
    if: needs.build_linux_fuzz.result == 'success'
    runs-on: ubuntu-22.04
    steps:
        - name: 📥 Download built artifact
          uses: actions/download-artifact@v4
          with:
              name: fuzz-build
              path: build
        - name: 💾 Save build to cache
          uses: actions/cache/save@v4
          with:
              path: build
              key: build-linux-fuzz-${{ github.sha }}
#              key: build-linux-fuzz

  test_linux_fuzz:
    name: 🧪 Run fuzz tests
    needs:
      - recover_build_from_cache
      - build_linux_fuzz
    if: always() && (needs.recover_build_from_cache.outputs.cache-hit == 'true' || needs.build_linux_fuzz.result == 'success')
    runs-on: ubuntu-22.04
    defaults:
      run:
        shell: bash
    container:
      image: ubuntu:jammy
    steps:
      - name: 📥 Checkout repository
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          set-safe-directory: true
      - name: 📦 Download built artifact with retry logic
        uses: manticoresoftware/download_artifact_with_retries@v3
        continue-on-error: true
        with:
          name: fuzz-build
          path: .
      - name: Restore cache
        uses: actions/cache@v4
        with:
          path: build/src/fuzzer/corpus
          key: fuzz-corpus-cache-to-delete
          restore-keys: |
            fuzz-corpus-
      - name: 🐛 Run fuzzer
        id: run
        continue-on-error: true
        run: |
            apt -y update && apt -y install llvm
            set +e  # allow script to continue even if a command fails

            cd build/src/fuzzer
            mkdir -p corpus
            echo "## 🐛 Fuzzer Results" >> $GITHUB_STEP_SUMMARY

            # Run qfuzzer and capture its exit code
            export ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-14
            ./qfuzzer -verbosity=0 -max_total_time=12000 -jobs=5 -workers=5-dict=../../../src/fuzzer/dict.txt corpus 2>&1 | tee fuzzer_output.txt
            qfuzzer_exit_code=${PIPESTATUS[0]}

            echo '```' >> $GITHUB_STEP_SUMMARY
            cat fuzzer_output.txt >> $GITHUB_STEP_SUMMARY
            echo '```' >> $GITHUB_STEP_SUMMARY

            echo "corpus_size=$(ls corpus | wc -l)" >> $GITHUB_OUTPUT

            # exit with qfuzzer's code (1 if it failed)
            exit $qfuzzer_exit_code
      - name: Save cache
        if: always()
        uses: actions/cache/save@v4
        with:
          path: build/src/fuzzer/corpus
          key: fuzz-corpus-${{ steps.run.outputs.corpus_size || 'unknown' }}
      - name: 📦 Upload fuzzer directory
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: fuzzer-dir
          path: |
            build/src/fuzzer
            !build/src/fuzzer/qfuzzer
            !build/src/fuzzer/corpus
            !build/src/fuzzer/CMake*
            !build/src/fuzzer/cmake*
            !build/src/fuzzer/CTest*
      - name: 📦 Upload updated fuzzer corpus
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: fuzzer-corpus
          path: build/src/fuzzer/corpus
      - name: ❌ Fail job if fuzzer failed
        if: steps.run.outcome == 'failure'
        run: |
          echo "Fuzzer failed. Marking the job as failed."
          exit 1

  upload_corpus_to_s3:
    name: 📦 Upload fuzzer corpus backup to Manticore S3
    needs: test_linux_fuzz
    if: always()
    runs-on: ubuntu-22.04
    steps:
      - name: 📥 Download fuzzer-corpus artifact
        uses: actions/download-artifact@v4
        with:
          name: fuzzer-corpus
          path: corpus
      - name: ☁️ Upload updated fuzzer corpus backup to Manticore S3
        run: |
          if [ -n "$(find corpus -maxdepth 1 -type f -print -quit)" ]; then
            tar -czf corpus.tar.gz corpus
            mkdir -p corpus-backup
            mv corpus.tar.gz corpus-backup
            cd corpus-backup
            docker run --rm -v "$(pwd)":/upload manticoresearch/upload fuzz-tests-corpus
          else
            echo "Directory corpus is empty. Skipping corpus upload."
          fi

  delete-cache:
    name: 🧹 Delete old cache
    needs: test_linux_fuzz
    if: always()
    runs-on: ubuntu-latest
    permissions:
        actions: write
    steps:
        - name: Delete cache with key "fuzz-corpus-cache-to-delete"
          run: |
            curl -s -X DELETE \
            -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
            -H "Accept: application/vnd.github+json" \
            https://api.github.com/repos/${{ github.repository }}/actions/caches?key=fuzz-corpus-cache-to-delete


================================================
FILE: .github/workflows/nightly_integration.yml
================================================
name: Nightly integration tests
run-name: 🌙 Nightly integration tests ${{ github.sha }}

on:
  schedule:
    - cron: '00 20 * * *'
  workflow_dispatch:
  pull_request:
    branches: [ master ]
    paths:
      - 'test/clt-tests/integrations/**'
      - '.github/workflows/nightly_integrations.yml'

concurrency:
  group: nightly_integrations_${{ github.ref }}
  cancel-in-progress: true

jobs:
  commit_info:
    name: Commit info
    runs-on: ubuntu-22.04
    steps:
      - run: |
          echo "# Nightly integration tests" >> $GITHUB_STEP_SUMMARY
          echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY

  # ==========================================
  # Version Check Jobs
  # ==========================================
  check_filebeat_versions:
    name: Check Filebeat versions
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/filebeat/test-integrations-check-filebeat-versions
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged -v $(pwd)/manual:/manual
          ui_host: "https://clt.manticoresearch.com"

  check_logstash_versions:
    name: Check Logstash versions
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged -v $(pwd)/manual:/manual
          ui_host: "https://clt.manticoresearch.com"

  check_grafana_versions:
    name: Check Grafana versions
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/grafana/test-integrations-check-grafana-versions
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged -v $(pwd)/manual:/manual
          ui_host: "https://clt.manticoresearch.com"

  # ==========================================
  # Integration Test Jobs
  # ==========================================
  test_dbeaver:
    name: Test DBeaver integration
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/dbeaver/test-integrations-dbeaver
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

  test_filebeat:
    name: Test Filebeat integration
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/filebeat/test-integrations-filebeat
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

  test_fluentbit:
    name: Test Fluentbit integration
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/fluentbit/test-integrations-fluentbit
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged

  test_grafana:
    name: Test Grafana integration
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/grafana/test-integrations-grafana
          image: manticoresearch/dind:v1
          comment_mode: failures
          run_args: --privileged -v $(pwd)/manual:/manual
          ui_host: "https://clt.manticoresearch.com"

  test_kafka:
    name: Test Kafka integration
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/kafka/test-integration-
          image: manticoresearch/dind:v1
          comment_mode: failures
          run_args: --privileged -v $(pwd)/manual:/manual
          ui_host: "https://clt.manticoresearch.com"

  test_logstash:
    name: Test Logstash integration
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/logstash/test-integrations-logstash
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

  test_vector:
    name: Test Vector integration
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/vector/test-integrations-vector
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

  # ==========================================
  # Version Testing Jobs
  # ==========================================
  test_filebeat_versions:
    name: Test Filebeat versions support
    runs-on: ubuntu-22.04
    timeout-minutes: 60
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/filebeat/test-integrations-support-filebeat-versions
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

  test_logstash_versions:
    name: Test Logstash versions support
    runs-on: ubuntu-22.04
    timeout-minutes: 180
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions
          image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest
          comment_mode: failures
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

  test_grafana_versions:
    name: Test Grafana versions support
    runs-on: ubuntu-22.04
    timeout-minutes: 180
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: manticoresoftware/clt@0.7.8
        with:
          test_prefix: test/clt-tests/integrations/grafana/test-integrations-test-grafana-versions
          image: manticoresearch/dind:v1
          comment_mode: failures
          run_args: --privileged
          ui_host: "https://clt.manticoresearch.com"

================================================
FILE: .github/workflows/nightly_memleaks.yml
================================================
name: Nightly valgrind checks
run-name: 🌙 Nightly valgrind checks ${{ github.sha }}

on:
  schedule:
    - cron: '00 20 * * *'
  push:
    branches:
      - '**'
    paths:
      - '.github/workflows/nightly_memleaks.yml'    
      
  
# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
concurrency:
  group: nightly_memleaks_${{ github.ref }}
  cancel-in-progress: true

jobs:
  memleaks:
    name: Memleak tests
    runs-on: ubuntu-22.04
    defaults:
      run:
        shell: bash
    timeout-minutes: 300
    container:
      image: manticoresearch/manticore_valgrind:jammy
      env:
        DIAGNOSTIC: 1
        VERBOSE: 1
        CTEST_CONFIGURATION_TYPE: "RelWithDebInfo"
        UNITY_BUILD: 1
        CACHEB: "../cache"
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          set-safe-directory: true
      - name: Check out cache before building
        uses: actions/cache/restore@v4
        with:
          path: cache
          key: build_linux_debug_x86_64
      - name: memcheck.sh
        run: |
          mysqld &
          bash memcheck.sh
      - name: Upload build artifacts
        if: always()
        continue-on-error: true
        uses: manticoresoftware/upload_artifact_with_retries@v4
        with:
          name: memleaks_${{ github.sha }}
          path: build/Testing
  


================================================
FILE: .github/workflows/pack_publish.yml
================================================
name: 📦 Pack and publish
run-name: 📦 Pack and publish ${{ github.sha }}

#on: workflow_call
on:
  workflow_run:
    workflows: [ 🔬 Test ]
    types: [ completed ]
    branches: [ master ]
  pull_request:
    branches: [ master ]
    types: [opened, synchronize, reopened, labeled, unlabeled]
    paths-ignore:
      - 'manual/**'
      - 'cmake/GetGALERA.cmake'
      - 'galera_packaging/**'
  push:
    branches:
      - manticore-*
    paths-ignore:
      - 'manual/**'
      - 'cmake/GetGALERA.cmake'
      - 'galera_packaging/**'
    tags:
      - 'release*'
      - 'pack_publish'

# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
concurrency:
  group: pack_${{ github.ref }}
  cancel-in-progress: true

jobs:
  check_branch:
    name: Check branch existence
    runs-on: ubuntu-22.04
    outputs:
      columnar_locator: ${{ steps.set_locator.outputs.columnar_locator }}
    steps:
      - name: Check if branch exists in manticoresoftware/manticoresearch
        id: check_branch
        if: github.ref_name != 'master'
        run: |
          # Extract the actual branch name for pull requests
          if [[ "${{ github.event_name }}" == "pull_request" ]]; then
            BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
          else
            BRANCH_NAME="${{ github.ref_name }}"
          fi
          
          HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://api.github.com/repos/manticoresoftware/columnar/branches/$BRANCH_NAME)
          if [ "$HTTP_STATUS" -eq "200" ]; then
            echo "branch_exists=true" >> $GITHUB_OUTPUT
            echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
          else
            echo "branch_exists=false" >> $GITHUB_OUTPUT
            echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
          fi
      - name: Set Columnar Locator
        id: set_locator
        run: |
          if [[ "${{ github.ref_name }}" != "master" && "${{ steps.check_branch.outputs.branch_exists }}" == "true" ]]; then
            echo "columnar_locator=GIT_REPOSITORY https://github.com/manticoresoftware/columnar.git GIT_TAG ${{ steps.check_branch.outputs.branch_name }}" >> $GITHUB_OUTPUT
          else
            echo "columnar_locator=" >> $GITHUB_OUTPUT
          fi
  pack:
    name: OK to pack?
    runs-on: ubuntu-22.04
    outputs:
      version: ${{ steps.semver-tagger.outputs.version }}
      version_full: ${{ steps.semver-tagger.outputs.version_full }}
      version_rpm: ${{ steps.semver-tagger.outputs.version_rpm }}
      version_deb: ${{ steps.semver-tagger.outputs.version_deb }}
      target: ${{ steps.semver-tagger.outputs.target }}
      should_continue: ${{ steps.check-should-continue.outputs.should_continue }}
    if: |
      (
        github.event_name == 'pull_request'
        &&
        (
          contains(
            github.event.pull_request.labels.*.name, 'pack'
          )
          ||
          contains(
            github.event.pull_request.labels.*.name, 'publish'
          )
        )
      )
      ||
      (
        github.event_name == 'workflow_run'
        &&
        github.event.workflow_run.conclusion == 'success'
        &&
        github.ref == 'refs/heads/master'
      )
      ||
      (
        github.event_name == 'push'
        &&
        (
          startsWith(
            github.ref, 'refs/heads/manticore-'
          )
          ||
          contains(
            github.ref, 'refs/tags/pack_publish'
          )
        )
      )
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Update version
        id: semver-tagger
        uses: manticoresoftware/semver-tagger-action@main  
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          conventional_commits_authors: alexey@manticoresearch.com
          ignore_patterns: '\.md$|^test/|^manual/|\.clt|\.github|\.patterns|\.yml|\.gitignore'
      - name: Check if we should continue packing
        id: check-should-continue
        run: |
          # Continue if version was updated, if we have the "pack" label on PR, or if target is "release"
          if [[ "${{ steps.semver-tagger.outputs.version_updated }}" == "true" ]]; then
            echo "Continuing because version was updated"
            echo "should_continue=true" >> $GITHUB_OUTPUT
          elif [[ "${{ steps.semver-tagger.outputs.target }}" == "release" ]]; then
            echo "Continuing because target is release"
            echo "should_continue=true" >> $GITHUB_OUTPUT
          elif [[ "${{ github.event_name }}" == "pull_request" && "${{ contains(github.event.pull_request.labels.*.name, 'pack') }}" == "true" ]]; then
            echo "Continuing because PR has 'pack' label"
            echo "should_continue=true" >> $GITHUB_OUTPUT
          elif [[ "${{ contains(github.ref, 'refs/tags/pack_publish') }}" == "true" ]]; then
            echo "Continuing because commit has 'pack_publish' tag"
            echo "should_continue=true" >> $GITHUB_OUTPUT
          else
            echo "Skipping packing because version wasn't updated, target is not release, and there's no 'pack' label or tag"
            echo "should_continue=false" >> $GITHUB_OUTPUT
          fi
      - run: |
          echo "# Packing and publishing all for commit ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
          echo "* Commit URL: [${{ github.sha }}](/${{ github.repository }}/commit/${{ github.sha }})" >> $GITHUB_STEP_SUMMARY
          echo "* Initiated by: [@${{ github.actor }}](https://github.com/${{ github.actor }})" >> $GITHUB_STEP_SUMMARY
          echo "* Ref: ${{ github.ref_type }} \"${{ github.ref_name }}\"" >> $GITHUB_STEP_SUMMARY
          echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY
          echo "* Version updated: ${{ steps.semver-tagger.outputs.version_updated }}" >> $GITHUB_STEP_SUMMARY
          echo "* Should continue packing: ${{ steps.check-should-continue.outputs.should_continue }}" >> $GITHUB_STEP_SUMMARY

#  debug_info:
#    name: Debug GitHub Event Info
#    runs-on: ubuntu-22.04
#    steps:
#      - name: Print GitHub Event Info
#        run: |
#          echo "GitHub Event Name: ${{ github.event_name }}"
#          echo "GitHub Ref: ${{ github.ref }}"
#          echo "GitHub Ref Type: ${{ github.ref_type }}"
#          echo "GitHub Ref Name: ${{ github.ref_name }}"
#          echo "GitHub Actor: ${{ github.actor }}"
#          echo "GitHub Repository: ${{ github.repository }}"
#          echo "GitHub SHA: ${{ github.sha }}"
#          echo "GitHub Run Number: ${{ github.run_number }}"
#          echo "GitHub Run Attempt: ${{ github.run_attempt }}"
#          echo "GitHub Workflow: ${{ github.workflow }}"
#          echo "GitHub Event JSON:"
#          echo '${{ toJSON(github.event) }}'

  # Job to check dependencies using check_deps_in_repos.sh
  # Runs on every PR, workflow_run, or push event matching the conditions
  check_deps:
    needs: pack
    if: needs.pack.outputs.should_continue == 'true'
    name: Check deps test
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      # We have to checkout to access .github/workflows/ in further steps
      - name: Run dependency check script
        run: |
          bash dist/check_deps_in_repos.sh --target ${{ needs.pack.outputs.target }}

  pack_debian_ubuntu:
    name: Debian/Ubuntu packages
    uses: ./.github/workflows/build_template.yml
    needs: [pack, check_branch, check_deps]
    if: needs.pack.outputs.should_continue == 'true'
    strategy:
      fail-fast: false
      matrix:
        DISTR: [bionic, focal, jammy, bullseye, bookworm]
        arch: [x86_64, aarch64]
    with:
      COLUMNAR_LOCATOR: ${{ needs.check_branch.outputs.columnar_locator }}
      DISTR: ${{ matrix.DISTR }}
      arch: ${{ matrix.arch }}
      cmake_command: |
        mkdir build
        cd build
        export BUNDLE_REPO_TYPE=${{ needs.pack.outputs.target == 'release' && 'release_candidate' || 'dev' }}
        cmake -DPACK=1 -DPACK_BUNDLE=1 ..
        cmake --build . --target package
      cache_key: pack_${{ matrix.DISTR }}_${{ matrix.arch }}
      artifact_list: "build/manticore*deb"
      version: ${{ needs.pack.outputs.version }}
      build_tag: ${{ needs.pack.outputs.target == 'dev' && 'dev' || '' }}

  pack_rhel:
    name: RHEL packages
    uses: ./.github/workflows/build_template.yml
    needs: [pack, check_branch, check_deps]
    if: needs.pack.outputs.should_continue == 'true'
    strategy:
      fail-fast: false
      matrix:
        DISTR: [rhel8, rhel9, rhel10]
        arch: [x86_64, aarch64]
    with:
      COLUMNAR_LOCATOR: ${{ needs.check_branch.outputs.columnar_locator }}
      DISTR: ${{ matrix.DISTR }}
      arch: ${{ matrix.arch }}
      boost_url_key: boost_rhel_feb17
      cmake_command: |
        ln -s $(pwd) /builds_manticoresearch_dev_usr_src_debug_manticore_component_src_0_0
        cd /builds_manticoresearch_dev_usr_src_debug_manticore_component_src_0_0
        mkdir build
        cd build
        export BUNDLE_REPO_TYPE=${{ needs.pack.outputs.target == 'release' && 'release_candidate' || 'dev' }}
        cmake -DPACK=1 -DPACK_BUNDLE=1 ..
        cmake --build . --target package
      cache_key: pack_${{ matrix.DISTR }}_${{ matrix.arch }}
      artifact_list: "build/manticore*rpm"
      version: ${{ needs.pack.outputs.version }}
      build_tag: ${{ needs.pack.outputs.target == 'dev' && 'dev' || '' }}

  pack_macos:
    name: MacOS packages
    uses: ./.github/workflows/build_template.yml
    needs: [pack, check_branch, check_deps]
    if: needs.pack.outputs.should_continue == 'true'
    strategy:
      fail-fast: false
      matrix:
        DISTR: [macos]
        arch: [x86_64, arm64]
    with:
      COLUMNAR_LOCATOR: ${{ needs.check_branch.outputs.columnar_locator }}
      DISTR: ${{ matrix.DISTR }}
      arch: ${{ matrix.arch }}
      HOMEBREW_PREFIX: /opt/homebrew
      cmake_command: |
        mkdir build
        cd build
        export BUNDLE_REPO_TYPE=${{ needs.pack.outputs.target == 'release' && 'release_candidate' || 'dev' }}
        cmake -DPACK=1 -DPACK_BUNDLE=1 ..
        cmake --build . --target package
      cache_key: pack_${{ matrix.DISTR }}_${{ matrix.arch }}
      artifact_list: "build/manticore*tar.gz"
      version: ${{ needs.pack.outputs.version }}
      build_tag: ${{ needs.pack.outputs.target == 'dev' && 'dev' || '' }}

  pack_windows:
    name: Windows x64 package
    uses: ./.github/workflows/build_template.yml
    needs: [pack, check_branch, check_deps]
    if: needs.pack.outputs.should_continue == 'true'
    with:
      COLUMNAR_LOCATOR: ${{ needs.check_branch.outputs.columnar_locator }}
      DISTR: windows
      arch: x64
      sysroot_url_key: roots_mysql83_jan17
      boost_url_key: boost_80
      cmake_command: |
        mkdir build
        cd build
        export BUNDLE_REPO_TYPE=${{ needs.pack.outputs.target == 'release' && 'release_candidate' || 'dev' }}
        cmake -DPACK=1 -DPACK_BUNDLE=1 ..
        cmake --build . --target package
      cache_key: pack_windows_x64
      artifact_list: "build/manticore*exe build/manticore*zip"
      version: ${{ needs.pack.outputs.version }}
      build_tag: ${{ needs.pack.outputs.target == 'dev' && 'dev' || '' }}

  build_nsis:
    name: Making Windows NSIS installer
    needs: [pack_windows, pack]
    if: needs.pack.outputs.should_continue == 'true'
    runs-on: ubuntu-22.04
    container:
      image: manticoresearch/build_nsis:1.0.0
    env:
      CI_COMMIT_SHA: ${{ github.sha }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Patch version
        run: |
          sed -i "s/0\.0\.0/${{ needs.pack.outputs.version }}/g" src/sphinxversion.h.in
      - name: Initialization
        # without adding the safe.directory the script fails to do git show ...
        run: git config --global --add safe.directory /__w/manticoresearch/manticoresearch
      - name: Make installer
        # TODO: remove the hardcoded paths /builds/ below
        run: |
          mkdir -p /builds/manticoresearch/dev/build/
          /bin/bash dist/build_dockers/nsis/nsis_src_parser.sh ${{ needs.pack.outputs.target }}
        shell: bash
      - run: mv /builds/manticoresearch/dev/build build
      - name: Upload artifact
        uses: manticoresoftware/upload_artifact_with_retries@main
        with:
          name: win_installer
          path: build/manticore-*.exe

  # virtual job to simplify the CI
  publish:
    name: OK to publish?
    runs-on: ubuntu-22.04
    # This job depends on all the package preparation jobs that have to pass before we can start publishing packages
    needs: [pack_debian_ubuntu, pack_rhel, pack_macos, build_nsis]
    if: |
      (github.repository == 'manticoresoftware/manticoresearch')
      && (
        (github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'publish')))
        || (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success')
        || (github.event_name == 'push' && startsWith(github.ref, 'refs/heads/manticore-'))
        || (github.event_name == 'push' && contains(github.ref, 'refs/tags/pack_publish'))
      )
    steps:
      - run: echo "Ready to publish"

  publish_debian_ubuntu:
    needs: [publish, pack]
    strategy:
      fail-fast: true
      matrix:
        DISTR: [bionic, focal, jammy, bullseye, bookworm]
        arch: [x86_64, aarch64]
    runs-on: ubuntu-22.04
    name: ${{ matrix.DISTR }} ${{ matrix.arch }} publishing
    steps:
      - uses: manticoresoftware/publish_to_repo@main
        with:
          ssh_key: ${{ secrets.REPO_SSH_KEY }}
          distr: ${{ matrix.DISTR }}
          arch: ${{ matrix.arch }}
          artifact: build_${{ matrix.DISTR }}_RelWithDebInfo_${{ matrix.arch }}
          type: deb
          delimiter: "-"
          target: ${{ needs.pack.outputs.target }}

  publish_rhel:
    needs: [publish, pack]
    strategy:
      fail-fast: true
      matrix:
        DISTR: [8, 9, 10]
        arch: [x86_64, aarch64]
    runs-on: ubuntu-22.04
    name: RHEL ${{ matrix.DISTR }} ${{ matrix.arch }} publishing
    steps:
      - uses: manticoresoftware/publish_to_repo@main
        with:
          ssh_key: ${{ secrets.REPO_SSH_KEY }}
          distr: ${{ matrix.DISTR }}
          arch: ${{ matrix.arch }}
          artifact: build_rhel${{ matrix.DISTR }}_RelWithDebInfo_${{ matrix.arch }}
          type: rpm
          delimiter: "_"
          target: ${{ needs.pack.outputs.target }}

  publish_macos:
    name: Publishing MacOS
    needs: [publish, pack]
    strategy:
      fail-fast: true
      matrix:
        arch: [x86_64, arm64]
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/publish_to_repo@main
        with:
          ssh_key: ${{ secrets.REPO_SSH_KEY }}
          distr: macos
          arch: ${{ matrix.arch }}
          artifact: build_macos_RelWithDebInfo_${{ matrix.arch }}
          type: arc
          delimiter: "-"
          target: ${{ needs.pack.outputs.target }}

  publish_windows:
    name: Publishing Windows packages to repo.manticoresearch.com
    needs: [publish, pack]
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/publish_to_repo@main
        with:
          ssh_key: ${{ secrets.REPO_SSH_KEY }}
          distr: windows
          arch: x64
          artifact: build_windows_RelWithDebInfo_x64
          type: arc
          delimiter: "-"
          target: ${{ needs.pack.outputs.target }}

  # Test Windows installer without Docker/Buddy on GitHub Actions
  test_windows_installer:
    name: Test Windows NSIS installer
    needs: [publish_windows, pack]
    runs-on: windows-latest
    steps:
    - name: Download Windows installer artifact
      uses: actions/download-artifact@v4
      with:
        name: win_installer
        path: ./installer
    
    - name: Extract and Install Manticore
      timeout-minutes: 5
      run: |
        echo "=== EXTRACTING INSTALLER ==="
        tar -xf ./installer/artifact.tar -C ./installer
        
        $installer = "./installer/build/manticore-*.exe"
        $installerFile = Get-ChildItem $installer | Select-Object -First 1
        
        if (-not $installerFile) {
          echo "ERROR: Installer not found!"
          Get-ChildItem ./installer -Recurse
          exit 1
        }
        
        echo "=== INSTALLING MANTICORE ==="
        echo "Installing from: $($installerFile.FullName)"
        
        $process = Start-Process -FilePath $installerFile.FullName -ArgumentList "/S /NOEXECUTOR" -Wait -PassThru -NoNewWindow
        echo "Installation process exited with code: $($process.ExitCode)"
        
        # Wait for installation to complete
        Start-Sleep -Seconds 10
      shell: pwsh
    
    - name: Test Manticore Service
      run: |
        echo "=== VERIFYING INSTALLATION ==="
        
        $installPath = "C:\Program Files (x86)\Manticore"
        if (-not (Test-Path $installPath)) {
          echo "ERROR: Manticore not installed at expected path: $installPath"
          exit 1
        }
        
        echo "Manticore installed at: $installPath"
        
        $searchdPath = "$installPath\bin\searchd.exe"
        $indexerPath = "$installPath\bin\indexer.exe"
        
        if (-not (Test-Path $searchdPath)) {
          echo "ERROR: searchd.exe not found at: $searchdPath"
          exit 1
        }
        
        if (-not (Test-Path $indexerPath)) {
          echo "ERROR: indexer.exe not found at: $indexerPath"
          exit 1
        }
        
        echo "searchd.exe found at: $searchdPath"
        echo "indexer.exe found at: $indexerPath"
        
        & $searchdPath --version
        
        # Disable Buddy before starting Manticore
        $configPath = "$installPath\etc\manticoresearch\manticore.conf"
        if (Test-Path $configPath) {
          $config = Get-Content $configPath -Raw
          # Add buddy_path with empty value to disable it
          $config = $config -replace "(searchd\s*\{)", "`$1`n    buddy_path = "
          Set-Content -Path $configPath -Value $config -Force
        }
        
        echo "=== STARTING MANTICORE SERVICE ==="
        
        Push-Location $installPath
        
        $process = Start-Process -FilePath $searchdPath -PassThru -NoNewWindow
        
        # Smart wait for daemon to be ready
        echo "Waiting for Manticore daemon to be ready..."
        $maxAttempts = 30
        $attempt = 0
        $allPortsReady = $false
        
        while ($attempt -lt $maxAttempts -and -not $allPortsReady) {
          Start-Sleep -Seconds 1
          $attempt++
          
          # Check if process is still running
          $manticoreProcess = Get-Process -Name "searchd" -ErrorAction SilentlyContinue
          if (-not $manticoreProcess) {
            echo "ERROR: Manticore searchd process died during startup"
            exit 1
          }
          
          # Check all three ports
          $port9306 = Test-NetConnection -ComputerName localhost -Port 9306 -WarningAction SilentlyContinue -InformationLevel Quiet
          $port9308 = Test-NetConnection -ComputerName localhost -Port 9308 -WarningAction SilentlyContinue -InformationLevel Quiet
          $port9312 = Test-NetConnection -ComputerName localhost -Port 9312 -WarningAction SilentlyContinue -InformationLevel Quiet
          
          if ($port9306 -and $port9308 -and $port9312) {
            $allPortsReady = $true
            echo "All ports are ready after $attempt seconds"
          }
        }
        
        if (-not $allPortsReady) {
          echo "ERROR: Manticore did not start properly within $maxAttempts seconds"
          echo "Port 9306 status: $port9306"
          echo "Port 9308 status: $port9308"
          echo "Port 9312 status: $port9312"
          exit 1
        }
        
        $manticoreProcess = Get-Process -Name "searchd" -ErrorAction SilentlyContinue
        echo "Manticore searchd is running (PID: $($manticoreProcess.Id))"
        
        Pop-Location
        
        echo "=== TESTING MANTICORE SERVICE WITH SIMPLE STATUS CHECKS ==="
        
        # Test 1: Check HTTP API port 9308
        echo "`nTest 1: Checking HTTP API (port 9308)..."
        try {
          $response = Invoke-WebRequest -Uri "http://localhost:9308/" -UseBasicParsing
          if ($response.StatusCode -eq 200) {
            echo "✓ HTTP API responds with status 200"
            echo "✓ Response length: $($response.Content.Length) bytes"
          } else {
            echo "ERROR: Unexpected status code: $($response.StatusCode)"
            exit 1
          }
        } catch {
          echo "ERROR: Failed to access HTTP API: $_"
          exit 1
        }
        
        # Test 2: Check Sphinx/HTTP port 9312
        echo "`nTest 2: Checking Sphinx/HTTP port (9312)..."
        try {
          $response = Invoke-WebRequest -Uri "http://localhost:9312/" -UseBasicParsing
          if ($response.StatusCode -eq 200) {
            echo "✓ Sphinx/HTTP port responds with status 200"
            # Check for expected content in response
            if ($response.Content -like '*"version":*') {
              echo "✓ Response contains version information"
            }
          } else {
            echo "ERROR: Unexpected status code: $($response.StatusCode)"
            exit 1
          }
        } catch {
          echo "ERROR: Failed to access port 9312: $_"
          exit 1
        }
        
        # Test 3: Verify all three ports are listening
        echo "`nTest 3: Verifying all service ports are listening..."
        $ports = @(9306, 9308, 9312)
        $allPortsOk = $true
        
        foreach ($port in $ports) {
          $connection = Test-NetConnection -ComputerName localhost -Port $port -WarningAction SilentlyContinue -InformationLevel Quiet
          if ($connection) {
            echo "✓ Port $port is listening"
          } else {
            echo "✗ Port $port is NOT listening"
            $allPortsOk = $false
          }
        }
        
        if (-not $allPortsOk) {
          echo "ERROR: Not all required ports are listening"
          exit 1
        }
        
        echo ""
        echo "=== ALL BASIC TESTS COMPLETED SUCCESSFULLY ==="
        echo "✓ Installation verified"
        echo "✓ Daemon is running"
        echo "✓ All ports (9306, 9308, 9312) are accessible"
        echo "✓ HTTP endpoints respond with status 200"
        echo "✓ Manticore service is operational"
      shell: pwsh

  publish_nsis:
    name: Publishing Windows NSIS installer
    needs: [test_windows_installer, publish, pack]
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/publish_to_repo@main
        with:
          ssh_key: ${{ secrets.REPO_SSH_KEY }}
          distr:
          arch:
          artifact: win_installer
          type: arc
          delimiter: "-"
          target: ${{ needs.pack.outputs.target }}

  build_docker:
    name: Building and pushing docker
    needs: [publish_debian_ubuntu, pack]
    runs-on: ubuntu-22.04
    env:
      DOCKER_USER: ${{ secrets.DOCKER_USER }}
      DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
      GHCR_USER: ${{ secrets.GHCR_USER }}
      GHCR_PASSWORD: ${{ secrets.GHCR_PASSWORD }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Patch version
        run: |
          sed -i "s/0\.0\.0/${{ needs.pack.outputs.version }}/g" src/sphinxversion.h.in
      - name: Calculate short commit hash
        id: sha
        run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
        with:
          image: tonistiigi/binfmt:qemu-v7.0.0-28
      - name: Building docker
        run: CI_COMMIT_SHORT_SHA=${{ steps.sha.outputs.sha_short }} /bin/bash dist/dockerhub_deploy.sh

  clt_rhel_dev_installation:
    name: Testing RHEL dev packages installation
    needs: publish_rhel
    strategy:
      fail-fast: false
      matrix:
        image: [ "almalinux:8", "almalinux:9", "almalinux:10", "oraclelinux:9", "amazonlinux:latest" ]
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/clt@0.7.8
        with:
          image: ${{ matrix.image }}
          test_prefix: test/clt-tests/installation/rhel-dev-
          run_args: -e TELEMETRY=0

  clt_deb_dev_installation:
    name: Testing DEB dev packages installation
    needs: publish_debian_ubuntu
    strategy:
      fail-fast: false
      matrix:
        image: [ "ubuntu:bionic", "ubuntu:focal", "ubuntu:jammy", "debian:bullseye", "debian:bookworm" ]
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/clt@0.7.8
        with:
          image: ${{ matrix.image }}
          test_prefix: test/clt-tests/installation/deb-dev-
          run_args: -e TELEMETRY=0


================================================
FILE: .github/workflows/pack_publish_galera.yml
================================================
name: 📦 Pack and publish Galera
run-name: 📦 Pack and publish Galera ${{ github.sha }}

# See galera_packaging/README.md for packaging instructions

on:
  pull_request:
    branches: [ master ]
    types: [opened, synchronize, reopened, labeled, unlabeled]
    paths:
      - 'cmake/GetGALERA.cmake'
      - '.github/workflows/pack_publish_galera.yml'
      - 'galera_packaging/**'
  push:
    paths:
      - 'cmake/GetGALERA.cmake'
      - '.github/workflows/pack_publish_galera.yml'
      - 'galera_packaging/**'
    branches:
      - master
      - maintenance-release
      - manticore-*

# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
concurrency:
  group: pack_galera_${{ github.ref }}
  cancel-in-progress: true

jobs:

  pack:
    name: OK to pack?
    runs-on: ubuntu-22.04
    if: |
      (
        github.event_name == 'pull_request'
        &&
        (
          contains(
            github.event.pull_request.labels.*.name, 'pack'
          )
          ||
          contains(
            github.event.pull_request.labels.*.name, 'publish'
          )
        )
      )
      ||
      (
        github.event_name == 'push'
      )
    steps:
      - run: echo "All set to build packages"
      - run: |
          echo '# Packing and publishing Galera for commit ${{ github.sha }}' >> $GITHUB_STEP_SUMMARY
          echo '* Commit URL: [${{ github.sha }}](/${{ github.repository }}/commit/${{ github.sha }})' >> $GITHUB_STEP_SUMMARY
          echo '* Initiated by: [@${{ github.actor }}](https://github.com/${{ github.actor }})' >> $GITHUB_STEP_SUMMARY
          echo '* Ref: ${{ github.ref_type }} "${{ github.ref_name }}"' >> $GITHUB_STEP_SUMMARY
          echo '* Attempt: ${{ github.run_attempt }}' >> $GITHUB_STEP_SUMMARY

  pack_debian_ubuntu:
    name: Debian/Ubuntu packages
    uses: ./.github/workflows/build_template.yml
    needs: pack
    strategy:
      fail-fast: false
      matrix:
        DISTR: [bionic, focal, jammy, bullseye, bookworm]
        arch: [x86_64, aarch64]
    with:
      DISTR: ${{ matrix.DISTR }}
      arch: ${{ matrix.arch }}
      PACK_GALERA: 1
      cmake_command: |
        mkdir build
        cd build
        cmake -DPACK=1 ..
      cache_key: pack_galera_${{ matrix.DISTR }}_${{ matrix.arch }}
      artifact_list: "build/manticore*deb"

  pack_rhel:
    name: RHEL packages
    uses: ./.github/workflows/build_template.yml
    needs: pack
    strategy:
      fail-fast: false
      matrix:
        DISTR: [rhel8, rhel9, rhel10]
        arch: [x86_64, aarch64]
    with:
      DISTR: ${{ matrix.DISTR }}
      arch: ${{ matrix.arch }}
      boost_url_key: boost_rhel_feb17
      PACK_GALERA: 1
      cmake_command: |
        ln -s $(pwd) /builds_manticoresearch_dev_usr_src_debug_manticore_component_src_0_0
        cd /builds_manticoresearch_dev_usr_src_debug_manticore_component_src_0_0
        mkdir build
        cd build
        cmake -DPACK=1 ..
      cache_key: pack_galera_${{ matrix.DISTR }}_${{ matrix.arch }}
      artifact_list: "build/manticore*rpm"

  pack_macos:
    name: MacOS packages
    uses: ./.github/workflows/build_template.yml
    needs: pack
    strategy:
      fail-fast: false
      matrix:
        DISTR: [macos]
        arch: [x86_64, arm64]
    with:
      DISTR: ${{ matrix.DISTR }}
      arch: ${{ matrix.arch }}
      HOMEBREW_PREFIX: /opt/homebrew
      PACK_GALERA: 1
      cmake_command: |
        mkdir build
        cd build
        cmake -DPACK=1 ..
      cache_key: pack_galera_${{ matrix.DISTR }}_${{ matrix.arch }}
      artifact_list: "build/manticore*tar.gz"

  # virtual job to simplify the CI
  # This job depends on all the package preparation jobs that have to pass before we can start publishing packages
  publish:
    name: OK to publish?
    runs-on: ubuntu-22.04
    needs: [pack_debian_ubuntu, pack_rhel, pack_macos]
    if: |
      (github.repository == 'manticoresoftware/manticoresearch')
      && (
        (github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'publish')))
        || (github.event_name == 'push')
      )
    steps:
      - run: echo "Ready to publish"

  publish_debian_ubuntu:
    needs: publish
    strategy:
      fail-fast: true
      matrix:
        DISTR: [bionic, focal, jammy, bullseye, bookworm]
        arch: [x86_64, aarch64]
    runs-on: ubuntu-22.04
    name: ${{ matrix.DISTR }} ${{ matrix.arch }} publishing
    steps:
      - uses: manticoresoftware/publish_to_repo@main
        with:
          ssh_key: ${{ secrets.REPO_SSH_KEY }}
          distr: ${{ matrix.DISTR }}
          arch: ${{ matrix.arch }}
          artifact: build_${{ matrix.DISTR }}_RelWithDebInfo_${{ matrix.arch }}
          type: deb
          delimiter: "-"
          target: ${{ contains(github.event.pull_request.labels.*.name, 'release') && 'release' || 'dev' }}

  publish_rhel:
    needs: publish
    strategy:
      fail-fast: true
      matrix:
        DISTR: [8, 9, 10]
        arch: [x86_64, aarch64]
    runs-on: ubuntu-22.04
    name: RHEL ${{ matrix.DISTR }} ${{ matrix.arch }} publishing
    steps:
      - uses: manticoresoftware/publish_to_repo@main
        with:
          ssh_key: ${{ secrets.REPO_SSH_KEY }}
          distr: ${{ matrix.DISTR }}
          arch: ${{ matrix.arch }}
          artifact: build_rhel${{ matrix.DISTR }}_RelWithDebInfo_${{ matrix.arch }}
          type: rpm
          delimiter: "_"
          target: ${{ contains(github.event.pull_request.labels.*.name, 'release') && 'release' || 'dev' }}

  publish_macos:
    name: Publishing MacOS
    needs: publish
    strategy:
      fail-fast: true
      matrix:
        arch: [x86_64, arm64]
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/publish_to_repo@main
        with:
          ssh_key: ${{ secrets.REPO_SSH_KEY }}
          distr: macos
          arch: ${{ matrix.arch }}
          artifact: build_macos_RelWithDebInfo_${{ matrix.arch }}
          type: arc
          delimiter: "-"
          target: ${{ contains(github.event.pull_request.labels.*.name, 'release') && 'release' || 'dev' }}

  clt_rhel_dev_installation:
    name: Testing RHEL dev packages installation
    needs: publish_rhel
    strategy:
      fail-fast: false
      matrix:
        image: [ "almalinux:8", "almalinux:9", "almalinux:10", "oraclelinux:9", "amazonlinux:latest" ]
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/clt@0.7.8
        with:
          image: ${{ matrix.image }}
          test_prefix: test/clt-tests/installation/rhel-dev-
          ui_host: "https://clt.manticoresearch.com"

  clt_deb_dev_installation:
    name: Testing DEB dev packages installation
    needs: publish_debian_ubuntu
    strategy:
      fail-fast: false
      matrix:
        image: [ "ubuntu:bionic", "ubuntu:focal", "ubuntu:jammy", "debian:bullseye", "debian:bookworm" ]
    runs-on: ubuntu-22.04
    steps:
      - uses: manticoresoftware/clt@0.7.8
        with:
          image: ${{ matrix.image }}
          test_prefix: test/clt-tests/installation/deb-dev-
          ui_host: "https://clt.manticoresearch.com"


================================================
FILE: .github/workflows/test.yml
================================================
name: 🔬 Test
run-name: 🔬 Test ${{ github.sha }}

#on: workflow_call

on:
  push:
    branches:
      - master
      - manticore-*
    paths-ignore:
      - 'manual/**'
      - '!manual/References.md'
      - '.translation-cache/**'
      - 'cmake/GetGALERA.cmake'
      - 'galera_packaging/**'
  pull_request:
    branches: [ master, update-buddy-version ]
    paths-ignore:
      - 'manual/**'
      - '!manual/References.md'
      - '.translation-cache/**'
      - 'cmake/GetGALERA.cmake'
      - 'galera_packaging/**'
    types: [opened, synchronize, reopened, labeled, unlabeled]

# cancels the previous workflow run when a new one appears in the same branch (e.g. master or a PR's branch)
concurrency:
  group: test_${{ github.ref }}
  cancel-in-progress: true

# Note: Many build jobs skip execution for PRs targeting 'update-buddy-version' branch
# as these PRs only update dependency versions and don't require full builds/tests
jobs:
  meta:
    name: Meta
    runs-on: ubuntu-22.04
    outputs:
      columnar_locator: ${{ steps.set_locator.outputs.columnar_locator }}
      branch_name: ${{ steps.check_branch.outputs.branch_name }}
      branch_tag: ${{ steps.sanitize_branch.outputs.branch_tag }}
      source_hash: ${{ steps.source_hash.outputs.source_hash }}
      image_exists: ${{ steps.image_check.outputs.image_exists }}
      image_tag: ${{ steps.image_check.outputs.image_tag }}
      image_commit: ${{ steps.image_check.outputs.image_commit }}
      image_source_hash: ${{ steps.image_check.outputs.image_source_hash }}
      source: ${{ steps.detect.outputs.source }}
      test: ${{ steps.detect.outputs.test }}
      clt: ${{ steps.detect.outputs.clt }}
      changes_detected: ${{ steps.calc.outputs.changes_detected }} # any relevant change (source/test/clt)
      skip_builds: ${{ steps.calc.outputs.skip_builds }} # only CLT tests changed and cached test-kit image exists
      run_builds: ${{ steps.calc.outputs.run_builds }} # build/ubertest jobs
      run_image_build: ${{ steps.calc.outputs.run_image_build }} # build test-kit image
      run_clt: ${{ steps.calc.outputs.run_clt }} # run CLT workflow
      run_image_push: ${{ steps.calc.outputs.run_image_push }} # push test-kit image tags
      skip_clt_reason: ${{ steps.related_prs.outputs.skip_clt_reason }} # explanation for CLT skip
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Commit info
        run: |
          echo "# Automated Tests of commit ${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
          echo "* Commit URL: [${{ github.sha }}](/${{ github.repository }}/commit/${{ github.sha }})" >> $GITHUB_STEP_SUMMARY
          echo "* Initiated by: [@${{ github.actor }}](https://github.com/${{ github.actor }})" >> $GITHUB_STEP_SUMMARY
          echo "* Ref: ${{ github.ref_type }} \"${{ github.ref_name }}\"" >> $GITHUB_STEP_SUMMARY
          echo "* Attempt: ${{ github.run_attempt }}" >> $GITHUB_STEP_SUMMARY
      - name: Check if branch exists in manticoresoftware/columnar
        id: check_branch
        run: |
          # Extract the actual branch name for pull requests
          if [[ "${{ github.event_name }}" == "pull_request" ]]; then
            BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
          else
            BRANCH_NAME="${{ github.ref_name }}"
          fi

          HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://api.github.com/repos/manticoresoftware/columnar/branches/$BRANCH_NAME)
          if [ "$HTTP_STATUS" -eq "200" ]; then
            echo "branch_exists=true" >> $GITHUB_OUTPUT
            echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
          else
            echo "branch_exists=false" >> $GITHUB_OUTPUT
            echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
          fi
      - name: Sanitize branch name for tags
        id: sanitize_branch
        run: |
          sanitize_tag() {
            local name=$1
            name=$(echo "$name" | tr '/' '_')
            name=$(echo "$name" | sed 's/[^a-zA-Z0-9_.-]//g')
            echo "$name"
          }
          branch_name="${{ steps.check_branch.outputs.branch_name }}"
          branch_tag=$(sanitize_tag "$branch_name")
          echo "branch_tag=$branch_tag" >> $GITHUB_OUTPUT
      - name: Calculate source hash
        id: source_hash
        run: |
          set -euo pipefail
          if [[ "${{ steps.check_branch.outputs.branch_exists }}" == "true" ]]; then
            git clone --depth 1 --branch "${{ steps.check_branch.outputs.branch_name }}"               https://github.com/manticoresoftware/columnar.git columnar
            rm -rf columnar/.git
          fi
          HASH=$(find . -type f             ! -path "./test/clt-tests/*"             ! -path "./columnar/test/clt-tests/*"             ! -path "./.git/*"             -print0             | sort -z             | xargs -0 md5sum             | md5sum             | awk '{print $1}')
          echo "source_hash=$HASH" >> $GITHUB_OUTPUT
      - name: Check for existing test kit image
        id: image_check
        env:
          REPO_OWNER: ${{ github.repository_owner }}
        run: |
          set -euo pipefail
          TAG="test-kit-${{ steps.sanitize_branch.outputs.branch_tag }}-${{ steps.source_hash.outputs.source_hash }}"
          if docker manifest inspect "ghcr.io/${REPO_OWNER}/manticoresearch:${TAG}" > /dev/null 2>&1; then
            echo "image_exists=true" >> $GITHUB_OUTPUT
            echo "* Reusing cached test-kit image tag: ${TAG}." >> $GITHUB_STEP_SUMMARY
            docker pull "ghcr.io/${REPO_OWNER}/manticoresearch:${TAG}" > /dev/null
            image_commit=$(docker inspect -f '{{ index .Config.Labels "org.manticore.testkit.commit" }}' "ghcr.io/${REPO_OWNER}/manticoresearch:${TAG}" || true)
            image_source_hash=$(docker inspect -f '{{ index .Config.Labels "org.manticore.testkit.source_hash" }}' "ghcr.io/${REPO_OWNER}/manticoresearch:${TAG}" || true)
            echo "image_commit=${image_commit}" >> $GITHUB_OUTPUT
            echo "image_source_hash=${image_source_hash}" >> $GITHUB_OUTPUT
          else
            echo "image_exists=false" >> $GITHUB_OUTPUT
            echo "image_commit=" >> $GITHUB_OUTPUT
            echo "image_source_hash=" >> $GITHUB_OUTPUT
          fi
          echo "image_tag=${TAG}" >> $GITHUB_OUTPUT
      - name: Set Columnar Locator
        id: set_locator
        run: |
          if [[ "${{ github.ref_name }}" != "master" && "${{ steps.check_branch.outputs.branch_exists }}" == "true" ]]; then
            echo "columnar_locator=GIT_REPOSITORY https://github.com/manticoresoftware/columnar.git GIT_TAG ${{ steps.check_branch.outputs.branch_name }}" >> $GITHUB_OUTPUT
          else
            echo "columnar_locator=" >> $GITHUB_OUTPUT
          fi
      - name: Detect changed files and categories
        id: detect
        shell: bash
        run: |
          set -euo pipefail
          head="${{ github.sha }}"
          base=""
          if [[ -n "${{ steps.image_check.outputs.image_commit }}" ]]; then
            base="${{ steps.image_check.outputs.image_commit }}"
          elif [[ "${{ github.event_name }}" == "pull_request" ]]; then
            base="${{ github.event.pull_request.base.sha }}"
            head="${{ github.event.pull_request.head.sha }}"
          else
            base="${{ github.event.before }}"
          fi

          files=""
          if [[ -z "$base" || "$base" == "0000000000000000000000000000000000000000" ]]; then
            files=$(git ls-tree -r --name-only "$head")
          else
            if ! git cat-file -e "$base^{commit}" 2>/dev/null; then
              git fetch --no-tags --depth=1 origin "$base"
            fi
            files=$(git diff --name-only "$base" "$head")
          fi

          {
            echo "### Changed files"
            echo "* Base: ${base:-'(none)'}"
            echo "* Head: ${head}"
            if [[ -n "${{ steps.image_check.outputs.image_commit }}" ]]; then
              echo "* Using image commit as base"
            fi
          } >> "$GITHUB_STEP_SUMMARY"
          if [[ -z "$files" && "$base" == "$head" ]]; then
            echo "* No diff (base == head); forcing full run" >> "$GITHUB_STEP_SUMMARY"
            files="__force_all__"
          fi
          if [[ -n "$files" ]]; then
            echo "$files" | sed 's/^/* /' >> "$GITHUB_STEP_SUMMARY"
          else
            echo "* (no files)" >> "$GITHUB_STEP_SUMMARY"
          fi

          export FILES="$files"

          python3 - <<'PY'
          import os

          files = os.environ.get("FILES", "").splitlines()
          source = False
          test = False
          clt = False
          for path in files:
              if not path:
                  continue
              if path == "__force_all__":
                  source = True
              elif path.startswith("test/clt-tests/"):
                  clt = True
              elif path.startswith("test/"):
                  test = True
              elif path.startswith("manual/") or path.startswith("doc/"):
                  pass
              else:
                  source = True
          output = os.environ["GITHUB_OUTPUT"]
          with open(output, "a", encoding="utf-8") as fh:
              fh.write(f"source={'true' if source else 'false'}\n")
              fh.write(f"test={'true' if test else 'false'}\n")
              fh.write(f"clt={'true' if clt else 'false'}\n")
          PY
      - name: Check related PRs for branch
        id: related_prs
        run: |
          set -euo pipefail
          reason=""
          if [[ "${{ github.event_name }}" == "pull_request" ]]; then
            for repo in columnar manticoresearch-buddy; do
              response="$( (curl -sSL -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/${{ github.repository_owner }}/$repo/pulls?state=open&head=${{ github.repository_owner }}:${{ github.event.pull_request.head.ref }}&per_page=1" || true) | tr -d '[:space:]')"
              if [[ "$response" != "[]" && "$response" != "" ]]; then
                reason+="$repo: open PR for ${{ github.repository_owner }}:${{ github.event.pull_request.head.ref }} | "
              fi
            done

            reason="${reason%% | }"
          fi
          echo "skip_clt_reason=$reason" >> "$GITHUB_OUTPUT"
      - name: Calculate gating
        id: calc
        run: |
          set -euo pipefail
          changes_detected=false
          if [[ "${{ steps.detect.outputs.source }}" == "true"              || "${{ steps.detect.outputs.test }}" == "true"              || "${{ steps.detect.outputs.clt }}" == "true" ]]; then
            changes_detected=true
          fi

          skip_builds=false
          if [[ "${{ steps.detect.outputs.clt }}" == "true"              && "${{ steps.detect.outputs.source }}" != "true"              && "${{ steps.detect.outputs.test }}" != "true"              && "${{ steps.image_check.outputs.image_exists }}" == "true" ]]; then
            skip_builds=true
          fi

          run_builds=false
          if [[ "$changes_detected" == "true"              && "${{ github.event_name }}" == "pull_request"              && "${{ github.event.pull_request.base.ref }}" == "update-buddy-version" ]]; then
            run_builds=false
          elif [[ "$changes_detected" == "true" && "$skip_builds" == "false" ]]; then
            run_builds=true
          fi

          run_image_build="$changes_detected"
          run_clt="$changes_detected"
          skip_clt_tag=false
          if git tag --points-at HEAD | grep -qx "skip_clt"; then
            skip_clt_tag=true
            run_clt=false
          fi
          if [[ -n "${{ steps.related_prs.outputs.skip_clt_reason }}" ]]; then
            run_clt=false
          fi
          run_image_push=false
          if [[ "$changes_detected" == "true" && "${{ steps.image_check.outputs.image_exists }}" != "true" ]]; then
            run_image_push=true
          fi

          echo "changes_detected=$changes_detected" >> "$GITHUB_OUTPUT"
          echo "skip_builds=$skip_builds" >> "$GITHUB_OUTPUT"
          echo "run_builds=$run_builds" >> "$GITHUB_OUTPUT"
          echo "run_image_build=$run_image_build" >> "$GITHUB_OUTPUT"
          echo "run_clt=$run_clt" >> "$GITHUB_OUTPUT"
          echo "run_image_push=$run_image_push" >> "$GITHUB_OUTPUT"
          echo "skip_clt_tag=$skip_clt_tag" >> "$GITHUB_OUTPUT"
      - name: Summarize gating
        run: |
          {
            echo "### Gate decisions"
            echo "* Changes detected (source/test/CLT): ${{ steps.calc.outputs.changes_detected }}"
            echo "* Skip builds/ubertests (only CLT changes + cached image): ${{ steps.calc.outputs.skip_builds }}"
            echo "* Run build/ubertest jobs: ${{ steps.calc.outputs.run_builds }}"
            echo "* Build test-kit image: ${{ steps.calc.outputs.run_image_build }}"
            echo "* Run CLT tests: ${{ steps.calc.outputs.run_clt }}"
            echo "* Push test-kit image tags: ${{ steps.calc.outputs.run_image_push }}"
            if [[ "${{ steps.calc.outputs.skip_clt_tag }}" == "true" ]]; then
              echo "* CLT skip reason: skip_clt tag on commit"
            fi
            if [[ -n "${{ steps.related_prs.outputs.skip_clt_reason }}" ]]; then
              echo "* CLT skip reason: ${{ steps.related_prs.outputs.skip_clt_reason }}"
            fi
          } >> "$GITHUB_STEP_SUMMARY"

  win_bundle:
    # Skip build jobs for PRs targeting 'update-buddy-version' branch (buddy version updates don't need full builds)
    if: needs.meta.outputs.run_builds == 'true'
    needs: [meta]
    name: Windows supplementary files preparation
    runs-on: ubuntu-22.04
    steps:
      - name: Check out cache
        id: cache
        uses: actions/cache@v4
        with:
          path: |
            bundle
            boost_1_75_0
          enableCrossOsArchive: true
          key: win_bundle
          lookup-only: true
      - name: Extract Windows bundle from Windows sysroot
        if: steps.cache.outputs.cache-hit != 'true'
        run: |
          wget https://repo.manticoresearch.com/repository/sysroots/roots_apr15/sysroot_windows_x64.tar.xz
          tar -xvf sysroot_windows_x64.tar.xz
          mv diskc/winbundle bundle
      - name: Extract Boost to put it to the cache
        if: steps.cache.outputs.cache-hit != 'true'
        run: |
          wget https://repo.manticoresearch.com/repository/ci/boost_1_75_0.tgz
          tar -xf boost_1_75_0.tgz

  build_linux_debug:
    if: needs.meta.outputs.run_builds == 'true'
    needs: [meta]
    name: Linux debug build
    uses: ./.github/workflows/build_template.yml
    with:
      CTEST_CONFIGURATION_TYPE: "Debug"
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
      artifact_name: debug_build
      cache_key: build_linux_debug_x86_64
      cmake_command: |
        export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake
        ctest -VV -S misc/ctest/gltest.cmake --no-compress-output

  test_linux_debug:
    if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true
    name: Linux debug mode tests
    needs: [build_linux_debug, meta]
    uses: ./.github/workflows/test_template.yml
    with:
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
      build_artifact_name: debug_build
      artifact_name: debug_test_results
      results_name: "Linux debug test results"
      timeout: 10

  build_linux_release:
    if: needs.meta.outputs.run_builds == 'true'
    needs: [meta]
    name: Linux release build
    uses: ./.github/workflows/build_template.yml
    with:
      artifact_name: release_build
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
      cache_key: build_linux_release_x86_64
      artifact_list: "build/xml build/CMakeFiles/CMake*.log build/api/libsphinxclient/testcli build/src/indexer build/src/indextool build/src/searchd build/src/tests build/src/gtests/gmanticoretest build/config/*.c build/config/*.h build/**/*.cxx build/**/*.gcno build/manticore*deb"
      cmake_command: |
        export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake
        export PACK=1
        export PACK_KEEP_TESTS=1
        ctest -VV -S misc/ctest/gltest.cmake --no-compress-output
        cmake --build build --target package

  test_linux_release_mcl:
    if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true
    name: Linux release mode tests (MCL)
    needs: [build_linux_release, meta]
    uses: ./.github/workflows/test_template.yml
    with:
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
      build_artifact_name: release_build
      artifact_name: release_mcl_test_results
      results_name: "Linux release MCL test results"
      timeout: 10
      INSTALL_MCL_FROM_DEPS: true
      FLOAT_TOLERANCE: true
      CTEST_EXCLUDE_REGEX: "rt_298|rt_306|rt_481"

  test_linux_release:
    if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true
    name: Linux release mode tests
    needs: [build_linux_release, meta]
    uses: ./.github/workflows/test_template.yml
    with:
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
      build_artifact_name: release_build
      artifact_name: release_test_results
      results_name: "Linux release test results"
      timeout: 10


  # When only CLT changed and a cached image exists, build jobs are skipped. A job that needs
  # build_linux_release would then be skipped too (GitHub skips dependents of skipped jobs),
  # so we use a separate reuse-only job that only needs meta. That way CLT always runs when
  # run_clt is true and we have a test-kit image (either built or reused).
  test_kit_docker_reuse:
    name: Test Kit docker image (reuse cache)
    needs: [meta]
    if: needs.meta.outputs.run_image_build == 'true' && needs.meta.outputs.image_exists == 'true'
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
        uses: actions/checkout@v3
      - name: Reuse cached test kit image
        env:
          REPO_OWNER: ${{ github.repository_owner }}
          IMAGE_TAG: ${{ needs.meta.outputs.image_tag }}
        run: |
          set -euo pipefail
          IMAGE="ghcr.io/${REPO_OWNER}/manticoresearch:${IMAGE_TAG}"
          docker pull "$IMAGE"
          docker tag "$IMAGE" test-kit:img
          docker create --name manticore-test-kit-src --entrypoint /bin/sh test-kit:img -c "true"
          docker export manticore-test-kit-src > manticore_test_kit.img
          docker rm manticore-test-kit-src
      - name: Upload docker image artifact
        uses: manticoresoftware/upload_artifact_with_retries@v4
        with:
          name: manticore_test_kit.img
          path: manticore_test_kit.img

  test_kit_docker_build:
    name: Test Kit docker image
    needs:
      - build_linux_release
      - meta
    if: needs.meta.outputs.run_image_build == 'true' && needs.meta.outputs.image_exists != 'true'
    runs-on: ubuntu-22.04
    outputs:
      out-build: ${{ steps.build.outputs.build_image }}
    steps:
      - name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
        uses: actions/checkout@v3
      - name: Download built x86_64 Ubuntu Jammy packages
        uses: manticoresoftware/download_artifact_with_retries@v3
        with:
          name: release_build
          path: .
      # Uncomment this shortcut for debug to save time by not preparing the packages in the pack_jammy job
      # - run: |
      #     wget http://dev2.manticoresearch.com/build_jammy_RelWithDebInfo_x86_64.zip
      #     unzip build_jammy_RelWithDebInfo_x86_64.zip
      #     tar -xvf artifact.tar
      - name: Calculate short commit hash
        id: sha
        run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
      - name: Building docker
        id: build
        run: |
          BUILD_COMMIT=${{ steps.sha.outputs.sha_short }} /bin/bash dist/test_kit_docker_build.sh
          echo "build_image=ghcr.io/$REPO_OWNER/manticoresearch:test-kit-${{ steps.sha.outputs.sha_short }}" >> $GITHUB_OUTPUT
      - name: Upload docker image artifact
        uses: manticoresoftware/upload_artifact_with_retries@v4
        with:
          name: manticore_test_kit.img
          path: manticore_test_kit.img

  clt:
    if: always() && needs.meta.outputs.run_clt == 'true' && (needs.test_kit_docker_build.result == 'success' || needs.test_kit_docker_reuse.result == 'success')
    name: CLT
    needs: [test_kit_docker_build, test_kit_docker_reuse, meta]
    uses: ./.github/workflows/clt_tests.yml
    secrets:
      OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
      VOYAGE_API_KEY: ${{ secrets.VOYAGE_API_KEY }}
      JINA_API_KEY: ${{ secrets.JINA_API_KEY }}
    with:
      docker_image: test-kit:img
      artifact_name: manticore_test_kit.img
      repository: ${{ github.repository }}
      ref: ${{ github.sha }}

  test_kit_docker_push:
    if: always() && needs.meta.outputs.run_image_push == 'true'
    needs:
      - clt
      - meta
      - test_kit_docker_build
      - test_kit_docker_reuse
      - test_linux_debug
      - test_linux_release
      - test_linux_release_mcl
      - test_windows
    name: Push Test Kit docker image to repo
    runs-on: ubuntu-22.04
    env:
      GHCR_USER: ${{ vars.GHCR_USER }}
      GHCR_PASSWORD: ${{ secrets.GHCR_PASSWORD }}
      REPO_OWNER: ${{ github.repository_owner }}
      SOURCE_HASH: ${{ needs.meta.outputs.source_hash }}
      BRANCH_TAG: ${{ needs.meta.outputs.branch_tag }}
      HASH_TAG_OK: ${{ needs.test_linux_debug.result == 'success' && needs.test_linux_release.result == 'success' && needs.test_linux_release_mcl.result == 'success' && needs.test_windows.result == 'success' }}
      IMAGE_BUILD_COMMIT: ${{ github.sha }}
    steps:
      - name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
        uses: actions/checkout@v3
      - name: Download artifact
        uses: manticoresoftware/download_artifact_with_retries@main
        with:
          name: manticore_test_kit.img
          path: .
      - name: Calculate short commit hash
        id: sha
        run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
      - name: Pushing docker image to repo
        id: test-kit-push
        run: |
          TEST_RESULT=${{ needs.clt.result }} BUILD_COMMIT=${{ steps.sha.outputs.sha_short }} /bin/bash dist/test_kit_docker_push.sh

  build_aarch64:
    if: needs.meta.outputs.run_builds == 'true'
    needs: [meta]
    name: Linux aarch64 build
    uses: ./.github/workflows/build_template.yml
    # Use -VV instead of -V below for more verbose output
    with:
      arch: aarch64
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
      cmake_command: |
        mkdir build
        cd build
        export CMAKE_TOOLCHAIN_FILE=$(pwd)/../dist/build_dockers/cross/linux.cmake
        ctest -V -S ../misc/ctest/justbuild.cmake -DCTEST_SOURCE_DIRECTORY=.. --no-compress-output
      cache_key: build_jammy_aarch64

  build_freebsd:
    if: needs.meta.outputs.run_builds == 'true'
    needs: [meta]
    name: FreeBSD x86_64 build
    uses: ./.github/workflows/build_template.yml
    with:
      DISTR: freebsd13
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
      boost_url_key: none
      cmake_command: |
        mkdir build
        cd build
        export CMAKE_TOOLCHAIN_FILE=$(pwd)/../dist/build_dockers/cross/freebsd.cmake
        ctest -VV -S ../misc/ctest/justbuild.cmake -DCTEST_SOURCE_DIRECTORY=.. --no-compress-output
      cache_key: build_freebsd_x86_64

  build_windows:
    if: needs.meta.outputs.run_builds == 'true'
    needs: [meta]
    name: Windows x64 build
    uses: ./.github/workflows/build_template.yml
    with:
      DISTR: windows
      arch: x64
      sysroot_url_key: roots_mysql83_jan17
      boost_url_key: boost_80
      CTEST_CMAKE_GENERATOR: "Ninja Multi-Config"
      CTEST_CONFIGURATION_TYPE: Debug
      cache_key: build_windows_x64
      artifact_list: "build/xml build/src/Debug/indexer.exe build/src/Debug/indexer.pdb build/src/Debug/searchd.exe build/src/Debug/searchd.pdb build/src/gtests/Debug/gmanticoretest.exe build/src/gtests/Debug/gmanticoretest.pdb build/src/Debug/*.dll build/src/gtests/Debug/*.dll build/config/*.c build/config/*.h"
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}

  test_windows:
    if: (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'update-buddy-version') != true
    name: Windows tests
    needs: [build_windows, win_bundle, meta]
    uses: ./.github/workflows/win_test_template.yml
    with:
      CTEST_START: 1
      CTEST_END: 999999
      COLUMNAR_LOCATOR: ${{ needs.meta.outputs.columnar_locator }}
      artifact_name: windows_test_results

  final_status:
    name: Final status
    needs:
      - build_linux_debug
      - test_linux_debug
      - build_linux_release
      - test_linux_release
      - test_linux_release_mcl
      - build_windows
      - test_windows
      - build_freebsd
      - build_aarch64
      - clt
      - meta
    if: always()
    runs-on: ubuntu-22.04
    steps:
      - name: Fail if any required job failed
        run: |
          set -euo pipefail
          failed=0
          results=(
            "build_linux_debug:${{ needs.build_linux_debug.result }}"
            "test_linux_debug:${{ needs.test_linux_debug.result }}:${{ needs.test_linux_debug.outputs.test_outcome }}"
            "build_linux_release:${{ needs.build_linux_release.result }}"
            "test_linux_release:${{ needs.test_linux_release.result }}:${{ needs.test_linux_release.outputs.test_outcome }}"
            "test_linux_release_mcl:${{ needs.test_linux_release_mcl.result }}:${{ needs.test_linux_release_mcl.outputs.test_outcome }}"
            "build_windows:${{ needs.build_windows.result }}"
            "test_windows:${{ needs.test_windows.result }}:${{ needs.test_windows.outputs.test_outcome }}"
            "build_freebsd:${{ needs.build_freebsd.result }}"
            "build_aarch64:${{ needs.build_aarch64.result }}"
          )
          {
            echo "### Final status"
            for entry in "${results[@]}"; do
              name="${entry%%:*}"
              rest="${entry#*:}"
              result="${rest%%:*}"
              outcome="${rest#*:}"
              if [[ "$name" == test_* ]]; then
                if [[ "$outcome" != "$result" && -n "$outcome" ]]; then
                  echo "* $name: $result (ctest: $outcome)"
                else
                  echo "* $name: $result"
                fi
              else
                echo "* $name: $result"
              fi
            done
            if [[ "${{ needs.meta.outputs.run_clt }}" == "true" ]]; then
              echo "* clt: ${{ needs.clt.result }}"
            fi
          } >> "$GITHUB_STEP_SUMMARY"
          for entry in "${results[@]}"; do
            name="${entry%%:*}"
            rest="${entry#*:}"
            result="${rest%%:*}"
            outcome="${rest#*:}"
            if [[ "$name" == test_* && "$result" == "success" && "$outcome" == "failure" ]]; then
              echo "$name: ctest failed"
              failed=1
              continue
            fi
            if [[ "$result" == "failure" || "$result" == "cancelled" ]]; then
              echo "$name: $result"
              failed=1
            fi
          done
          if [[ "${{ needs.meta.outputs.run_clt }}" == "true" ]]; then
            result="${{ needs.clt.result }}"
            if [[ "$result" == "failure" || "$result" == "cancelled" ]]; then
              echo "clt: $result"
              failed=1
            fi
          fi
          if [[ "$failed" -ne 0 ]]; then
            echo "* Overall: failure" >> "$GITHUB_STEP_SUMMARY"
            echo "One or more build/test jobs failed"
            exit 1
          fi
          echo "* Overall: success" >> "$GITHUB_STEP_SUMMARY"


================================================
FILE: .github/workflows/test_template.yml
================================================
name: Test Template

on:
  workflow_call:
    inputs:
      WITH_COVERAGE:
        required: false
        type: number
        default: 0
      CTEST_START:
        required: false
        type: number
        default: 1
      CTEST_END:
        required: false
        type: number
        default: 999999
      CTEST_EXCLUDE_REGEX:
        required: false
        type: string
        default: ""
      UNITY_BUILD:
        required: false
        type: number
        default: 1
      FLOAT_TOLERANCE:
        required: false
        type: boolean
        default: false
      artifact_name:
        required: true
        type: string
      build_artifact_name:
        required: true
        type: string
      results_name:
        required: true
        type: string
      timeout:
        required: false
        type: number
        default: 60
      xml_command:
        required: false
        type: string
        default: "cd build; cp -r Testing/2*/Test.xml .; xsltproc -o junit_tests.xml ../misc/junit/ctest2junit.xsl Test.xml"
      COLUMNAR_LOCATOR:
        required: false
        type: string
        default: ""
      INSTALL_MCL_FROM_DEPS:
        required: false
        type: boolean
        default: false
    outputs:
      test_outcome:
        description: Outcome of the test step (success/failure)
        value: ${{ jobs.test.outputs.test_outcome }}

jobs:
  test:
    name: ${{ inputs.CTEST_START }}_${{ inputs.CTEST_END }}
    runs-on: ubuntu-22.04
    timeout-minutes: ${{ inputs.timeout }}
    continue-on-error: true
    outputs:
      test_outcome: ${{ steps.test.outcome }}
    defaults:
      run:
        shell: bash
    container:
      image: manticoresearch/ubertests_public:331
      env:
        DIAGNOSTIC: 1
        CACHEB: ../cache
        NO_BUILD: 1
        CTEST_START: ${{ inputs.CTEST_START }}
        CTEST_END: ${{ inputs.CTEST_END }}
        CTEST_EXCLUDE_REGEX: ${{ inputs.CTEST_EXCLUDE_REGEX }}
        # The following is useful to test a specific test, just uncomment it, no need to disable CTEST_START/END
        # CTEST_REGEX: test_234
        WITH_COVERAGE: ${{ inputs.WITH_COVERAGE }}
        LIBS_BUNDLE:
        UNITY_BUILD: ${{ inputs.UNITY_BUILD }}
        FLOAT_TOLERANCE: ${{ inputs.FLOAT_TOLERANCE }}
        COLUMNAR_LOCATOR: ${{ inputs.COLUMNAR_LOCATOR }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Tests container entrypoint
        run: bash /entry_point.sh &

      - name: Check out cache before building
        uses: actions/cache@v4
        with:
          path: cache
          enableCrossOsArchive: true
          key: build_linux_debug_x86_64

      - name: Download build artifacts
        uses: manticoresoftware/download_artifact_with_retries@v3
        with:
          name: ${{ inputs.build_artifact_name }}
          path: .

      - name: Install manticore-columnar-lib from deps.txt
        if: ${{ inputs.INSTALL_MCL_FROM_DEPS }}
        run: |
          set -euo pipefail

          MCL_VERSION="$(awk '$1=="mcl"{print $2; exit}' deps.txt)"
          if [[ -z "${MCL_VERSION}" ]]; then
            echo "mcl version was not found in deps.txt"
            exit 1
          fi

          MCL_VERSION_URL="${MCL_VERSION//+/%2B}"
          PACKAGE_NAME="manticore-columnar-lib_${MCL_VERSION_URL}_amd64.deb"
          REPOS=(
            "https://repo.manticoresearch.com/repository/manticoresearch_jammy_dev/dists/jammy/main/binary-amd64"
            "https://repo.manticoresearch.com/repository/manticoresearch_jammy_release_candidate/dists/jammy/main/binary-amd64"
            "https://repo.manticoresearch.com/repository/manticoresearch_jammy/dists/jammy/main/binary-amd64"
          )

          PACKAGE_URL=""
          for repo in "${REPOS[@]}"; do
            candidate="${repo}/${PACKAGE_NAME}"
            if curl -fsSLI "${candidate}" >/dev/null; then
              PACKAGE_URL="${candidate}"
              break
            fi
          done

          if [[ -z "${PACKAGE_URL}" ]]; then
            echo "could not find ${PACKAGE_NAME} in jammy dev/release_candidate/release repos"
            exit 1
          fi

          echo "Installing ${PACKAGE_URL}"
          export DEBIAN_FRONTEND=noninteractive
          apt-get -y remove 'manticore-repo'
          rm /etc/apt/sources.list.d/manticoresearch.list
          apt-get update
          apt-get -y install wget
          curl -fsSL https://repo.manticoresearch.com/manticore-repo.noarch.deb -o /tmp/manticore-repo.noarch.deb
          dpkg -i /tmp/manticore-repo.noarch.deb
          curl -fsSL "${PACKAGE_URL}" -o /tmp/manticore-columnar-lib.deb
          dpkg -i /tmp/manticore-columnar-lib.deb

      - name: List files
        run: find .

      - name: 🚀 Test
        id: test
        # --timeout may be not working https://gitlab.kitware.com/cmake/cmake/-/issues/23979
        # use -VV instead of -V to get more verbose output
        run: |
          ctest -V -S misc/ctest/gltest.cmake --no-compress-output --timeout 600
        continue-on-error: true

      - name: Check test results
        if: always()
        run: |
          if [ "${{ steps.test.outcome }}" == "failure" ]; then
            echo "❌ Tests failed ❌"
            exit 1
          fi
          
      - name: List build files
        if: always()
        run: find build
        continue-on-error: true

      - name: Prepare test report xmls
        if: always()
        continue-on-error: true
        run: ${{ inputs.xml_command }}

      - name: Upload test artifacts
        if: always()
        continue-on-error: true
        uses: manticoresoftware/upload_artifact_with_retries@v4
        with:
          name: ${{ inputs.artifact_name }}
          path: "build/xml build/junit*.xml build/status* build/test/error*.txt build/test/*log build/test/test_*/report* build/test/rt_*/report* build/test/col_*/report*"

      - name: Publish test results
        if: always()
        continue-on-error: true
        uses: manticoresoftware/publish-unit-test-result-action@v2
        with:
          check_name: ${{ inputs.results_name }}
          files: build/junit*.xml
          compare_to_earlier_commit: false
          comment_mode: failures
  


================================================
FILE: .github/workflows/trigger_docs_check.yml
================================================
name: 📖 Trigger doc check
run-name: 📖 Trigger doc check ${{ github.sha }}

# We use this intermediate workflow to workaround the issue with repo secrets unavailable for PR-s from external repos
# The `check_docs` workflow use this one for its `workflow_run` event which let it run without errors
on:
  pull_request:
    paths:
      - 'manual/**'
    branches:
      - master
      - manticore-*

jobs:
  trigger_doc_check:
    runs-on: ubuntu-24.04
    defaults:
      run:
        shell: bash
    steps:
      - name: Save PR repo
        env:
          PR_REPO: ${{ github.event.pull_request.head.repo.full_name }}
          PR_REF: ${{ github.event.pull_request.head.ref }}
        run: |
          echo $PR_REPO > pr_repo.txt
          echo $PR_REF >> pr_repo.txt
      - name: Upload PR repo name
        uses: actions/upload-artifact@v4
        with:
          name: pr_repo
          path: ./pr_repo.txt
      - name: Trigger doc check
        run: |
          echo "Doc check triggered"


================================================
FILE: .github/workflows/win_test_template.yml
================================================
name: Windows Test Template

on:
  workflow_call:
    inputs:
      CTEST_START:
        required: false
        type: number
        default: 1
      CTEST_END:
        required: false
        type: number
        default: 999999
      artifact_name:
        required: true
        type: string
      COLUMNAR_LOCATOR:
        required: false
        type: string
        default: ""
    outputs:
      test_outcome:
        description: Outcome of the test step (success/failure)
        value: ${{ jobs.test_windows.outputs.test_outcome }}

jobs:
  test_windows:
    name: ${{ inputs.CTEST_START }}_${{ inputs.CTEST_END }}
    runs-on: windows-2022
    env:
      CACHEB: "../cache"
      LIBS_BUNDLE: "../bundle"
      BOOST_ROOT: "../boost_1_75_0"
      CTEST_CMAKE_GENERATOR: "Visual Studio 17 2022"
      CTEST_CONFIGURATION_TYPE: Debug
      CTEST_START: ${{ inputs.CTEST_START }}
      CTEST_END: ${{ inputs.CTEST_END }}
      CTEST_RESOURCE: ${{ github.workspace }}\\misc\\ctest\\ubertests\\ubertests_docker_image\\resource.json
      # The following is useful to test a specific test, just uncomment it, no need to disable CTEST_START/END
      # CTEST_REGEX: test_234
      NO_BUILD: 1
      COLUMNAR_LOCATOR: ${{ inputs.COLUMNAR_LOCATOR }}
    outputs:
      test_outcome: ${{ steps.test.outcome }}
    steps:
      - name: Checkout repository # We have to checkout to access .github/workflows/ in further steps
        uses: actions/checkout@v3
      - name: Download build artifacts
        uses: manticoresoftware/download_artifact_with_retries@v3
        with:
          name: build_windows_Debug_x64
          path: .
      - name: Check out Windows bundle cache
        uses: actions/cache@v4
        with:
          path: |
            bundle
            boost_1_75_0
          enableCrossOsArchive: true
          key: win_bundle
      - name: Remove ZSTD # since it wasn't used to save the cache and if we don't remove it here the cache won't be found. TODO: install zstd in our images, so we don't have to do these hacks
        run: rm C:\tools\zstd\zstd.exe
      - name: Check out cache
        uses: actions/cache@v4
        with:
          path: cache
          enableCrossOsArchive: true
          key: build_windows_x64
      - name: Run mysql
        run: |
          C:\PROGRA~1\MySQL\"MySQL Server 8.0"\bin\mysqld.exe --initialize-insecure
          C:\PROGRA~1\MySQL\"MySQL Server 8.0"\bin\mysqld.exe --install mysql
          net start mysql
          mysql -e "create user 'test'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; create database test; create database test1; create database test2; create database test3; create database test4; create database test5; create database test6; create database test7; create database test8; create database test9; grant all on test.* to 'test'@'localhost'; grant all on test1.* to 'test'@'localhost'; grant all on test2.* to 'test'@'localhost'; grant all on test3.* to 'test'@'localhost'; grant all on test4.* to 'test'@'localhost'; grant all on test5.* to 'test'@'localhost'; grant all on test6.* to 'test'@'localhost'; grant all on test7.* to 'test'@'localhost'; grant all on test8.* to 'test'@'localhost'; grant all on test9.* to 'test'@'localhost'; flush privileges;" -uroot
      # TODO: Uncomment the below if there's no more OpenSSL in the runner like it happened in Sep 2023 (https://github.com/actions/runner-images/issues/8344)
      # - name: Install OpenSSL
      #   run: powershell.exe ./.github/workflows/Install-OpenSSL.ps1
      - name: Setup PHP and mysqli
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
          extensions: mysqli
      - name: 🚀 Test
        id: test
        # --timeout may be not working https://gitlab.kitware.com/cmake/cmake/-/issues/23979
        # Add -VV to ctest to display extra debug info
        run: ctest -VV -S misc/ctest/gltest.cmake --no-compress-output --timeout 600
        continue-on-error: true
      - name: Prepare test results
        if: always()
        shell: bash
        run: |
          mkdir -p build/test_${{ inputs.CTEST_START }}_${{ inputs.CTEST_END }}
          cp -r build/Testing/*/Test.xml build/test_${{ inputs.CTEST_START }}_${{ inputs.CTEST_END }}/
          cp -r build/test build/test_${{ inputs.CTEST_START }}_${{ inputs.CTEST_END }}
        continue-on-error: true
      - name: Upload test artifacts
        if: always()
        continue-on-error: true
        uses: manticoresoftware/upload_artifact_with_retries@v4
        with:
          name: ${{ inputs.artifact_name }}
          path: "build/test*/Test.xml build/test_*/test_*/report* build/test_*/error*.txt build/test_*/*log"

  report_windows:
    name: Windows tests summary and report
    needs: test_windows
    runs-on: ubuntu-22.04
    container:
      image: manticoresearch/ubertests_public:331
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Download test report artifacts
        uses: manticoresoftware/download_artifact_with_retries@v3
        continue-on-error: true
        with:
          name: ${{ inputs.artifact_name }}
          path: .
      - name: Convert the XML to JUnit format
        run: |
          shopt -s nullglob
          for xml in build/test_*/Test.xml; do
            out="build/junit_$(basename "$(dirname "$xml")").xml"
            xsltproc -o "$out" misc/junit/ctest2junit.xsl "$xml"
          done
        shell: bash
      - name: Publish test results
        uses: manticoresoftware/publish-unit-test-result-action@v2
        with:
          check_name: Windows test results
          compare_to_earlier_commit: false
          files: build/junit_*.xml
          comment_mode: failures
      - name: Verify test job result
        run: |
          if [[ "${{ needs.test_windows.result }}" != "success" ]]; then
            echo "Windows tests job failed (result: ${{ needs.test_windows.result }})"
            exit 1
          fi
        shell: bash


================================================
FILE: .gitignore
================================================
# /
/Makefile
/config.status
/config.log
/sphinx-min.conf.dist
/sphinx.conf.dist
/bin
/junk
/*.suo
/*.ncb
/*.sdf
/*.opensdf
/.hg
**/*.bak

# cmake local presets
/CMakeUserPresets.json

# /api/libsphinxclient/
/api/libsphinxclient/*.ncb
/api/libsphinxclient/*.suo
/api/libsphinxclient/*.user
/api/libsphinxclient/debug
/api/libsphinxclient/release

# clion build dir, also reserve /build
/.idea
/test/.idea
/cmake-build*
/build
/buildx64
/build_*
/build-*
/.vs

# /config/
/config/stamp-h1
/config/config.h

# /libstemmer_c/
/libstemmer_c/Makefile
/libstemmer_c/.deps

# /src/
/src/.deps
/src/sphinxversion.h

# /win/
/win/*.user
/win/*.filters

# /doc
/doc/Makefile

# /test
/test/test_*/report.*
/test/test_*/Conf
/test/data
/test/localsettings.inc
/test/error_all.txt
/test/guess.txt
/test/query.log
/test/searchd.log
/test/clt-tests/**/*.rep
/test/clt-tests/**/*.deb
/clt
/agents.md
/test/clt-tests/*repo.noarch.deb.*
/test/clt-tests/**/*.cmp
/test/.cache/
/test/examples.txt
/test/node_prepared_stmt/node_modules
/test/sqlx_prepared_stmt/target

# /test/ql/
/test/ql/data/*.log
/test/ql/data/*.lock
/test/ql/*.class
/test/ql/*.exe

# misc
/cache
/local_*_src.txt
/test/clt-tests/**/*.rep
/test/clt-tests/**/*.cmp
/clt
**/.DS_Store
/test/clt-tests/**/*.deb
/test/clt-tests/*repo.noarch.deb.*
/src/perfetto/perfetto.cc
/src/perfetto/perfetto.h
/.codex
/tmp

# dist
/dist/docker
/.env
/dump.sql


================================================
FILE: .gitlab-ci.yml
================================================
workflow:
  rules:
    - if: $CI_MERGE_REQUEST_ID
    - if: $CI_COMMIT_TAG
    - if: $CI_COMMIT_BRANCH == "master"
    - if: $CI_COMMIT_BRANCH =~ /^manticore-.*$/
    - if: $CI_COMMIT_BRANCH == "maintenance-release"

# to skip ci add [ci skip] or [skip ci] in commit message in any capitalization,
# or add param when pushing, as: git push -o ci.skip ...

variables:
  VERBOSE: 1
  UNITY_BUILD: 1

stages:
  - mirroring
  - routines
  - ubertests
  - publish
  - hooks

# ==================== Mirror repo to github (only 'master' branch) ======================

job_mirror:
  stage: mirroring
  needs: [ ]
  rules:
    - if: $CI_COMMIT_BRANCH == "master"
    - if: $CI_COMMIT_BRANCH =~ /^manticore-.*$/
    - if: $CI_COMMIT_BRANCH == "maintenance-release"
  tags:
    - dev-host
  script:
    - rm -fr gitlab_github_sync
    - git clone git@gitlab.com:manticoresearch/dev.git gitlab_github_sync
    - cd gitlab_github_sync
    - git checkout $CI_COMMIT_BRANCH
    - git remote add github git@github.com:manticoresoftware/manticoresearch.git
    - git fetch github
    - git push -u github $CI_COMMIT_BRANCH
  cache: {}

# ==================== .helper build ======================

.build:
  stage: routines
  interruptible: true
  needs: [ ]
  tags:
    - docker-free
  image: manticoresearch/external_toolchain:vcpkg331_20250114
  variables:
    CACHEB: "../cache"
    DIAGNOSTIC: 1 # let's set it by default forever
    NO_TESTS: 1
    CTEST_CMAKE_GENERATOR: Ninja
    CTEST_CONFIGURATION_TYPE: RelWithDebInfo # most common default
    DISTR: jammy # our default build for tests
    arch: x86_64
    boost: boost_nov22
    sysroot: roots_nov22
  script:
    - ctest -VV -S misc/ctest/gltest.cmake --no-compress-output
    - exit_code=$?
    - if [ $exit_code -ne 0 ]; then echo "Previous command failed"; fi;
    - echo -e "\e[0Ksection_start:`date +%s`:xml_pack\r\e[0KCopy xml artifacts"
    - cd build && mkdir xml
    - cp -r Testing/2*/*.xml xml
    - echo -e "\e[0Ksection_end:`date +%s`:xml_pack\r\e[0K"
  cache:
    paths:
      - cache
    key: jammy_test
  artifacts:
    when: on_success
    expire_in: 12 hrs
    paths:
      - build/xml
      - build/CMakeFiles/CMake*.log
      - build/api/libsphinxclient/testcli
      - build/src/indexer
      - build/src/indextool
      - build/src/searchd
      - build/src/gtests/gmanticoretest
      - build/**/*.h
      - build/**/*.c
      - build/**/*.cxx
      - build/**/*.gcno

# ==================== .helper testing ======================

.tests:
  stage: ubertests
  needs: [ ]
  tags:
    - specdocker
  image: manticoresearch/ubertests_public:331
  variables:
    DIAGNOSTIC: 1 # let's set it by default forever
    CACHEB: "../cache"
  script:
    - ctest -V -S misc/ctest/gltest.cmake --no-compress-output
  after_script:
    - cd build
    - cp -r Testing/2*/Test.xml .
    - xsltproc -o junit_tests.xml ../misc/junit/ctest2junit.xsl Test.xml
  cache:
    key: jammy_test
    paths:
      - cache
  artifacts:
    expire_in: 12 hrs
    when: always
    reports:
      junit: build/junit_tests.xml
    paths:
      - build/junit_tests.xml
      - build/test/test_*/**
      - build/test/rt_*/**
      - build/test/col_*/**
      - build/test/error*.txt
      - build/test/searchd*.log
  retry: 1


# ==================== Simple build, then test ======================

simple_build:
  extends: [ .build ]
  before_script:
    - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake
  variables:
    CTEST_CMAKE_GENERATOR: "Unix Makefiles" # as Ninja fails with coverage
    CTEST_CONFIGURATION_TYPE: "Debug"
    WITH_COVERAGE: 1
    UNITY_BUILD: 0

simple_tests:
  extends: [ .tests ]
  needs: [ simple_build ]
  variables:
    CTEST_CONFIGURATION_TYPE: "Debug"
    WITH_COVERAGE: 1
    NO_BUILD: 1
    UNITY_BUILD: 0

# ==================== Release build, then test ======================

release_build:
  extends: [ .build ]
  before_script:
    - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake

release_tests:
  extends: [ .tests ]
  needs: [ release_build ]
  variables:
    CTEST_CONFIGURATION_TYPE: "RelWithDebInfo"
    NO_BUILD: 1

# ==================== Windows build, then test ======================

win_build:
  extends: [ .build ]
  variables:
    DISTR: windows
    arch: x64
    sysroot: roots_mysql83_jan17
    boost: boost_80
    CTEST_CMAKE_GENERATOR: "Ninja Multi-Config"
    CTEST_CONFIGURATION_TYPE: Debug
  artifacts:
    paths:
      - build/xml
      - build/src/$CTEST_CONFIGURATION_TYPE/indexer.exe
      - build/src/$CTEST_CONFIGURATION_TYPE/searchd.exe
      - build/src/gtests/$CTEST_CONFIGURATION_TYPE/gmanticoretest.exe
      - build/src/$CTEST_CONFIGURATION_TYPE/*.dll
      - build/src/gtests/$CTEST_CONFIGURATION_TYPE/*.dll
      - build/config/*.c
      - build/config/*.h
  cache:
    key: win_test

win_tests:
  stage: ubertests
  needs: [ win_build ]
  tags:
    - windev19
  variables:
    LIBS_BUNDLE: "x:/bundle"
    CACHEB: "x:/cache"
    BOOST_ROOT: "x:/boost_1_75_0"
    CTEST_CMAKE_GENERATOR: "Visual Studio 16 2019"
    CTEST_CONFIGURATION_TYPE: Debug
    CTEST_EXCLUDE_REGEX: "_466|test_300"
    NO_BUILD: 1
  script:
    - 'net use x: \\\\VBOXSRV\\shared'
    - ctest -V -S misc/ctest/gltest.cmake --no-compress-output
  after_script:
    - cd build
    - cp -r Testing/2*/*.xml xml
  artifacts:
    expire_in: 12 hrs
    when: always
    paths:
      - build/xml
      - build/test/test_*/report.*
      - build/test/rt_*/report.*
      - build/test/col_*/report.*
      - build/test/error*.txt
      - build/test/searchd*.log
  cache: { }


# ==================== Just build arm64 ======================

build_arm:
  extends: [ .build ]
  variables:
    arch: aarch64
  before_script:
    - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/linux.cmake
  script:
    - mkdir build && cd build
    - ctest -VV -S ../misc/ctest/justbuild.cmake -DCTEST_SOURCE_DIRECTORY=.. --no-compress-output
  cache:
    key: $DISTR$arch

# ==================== Just build FreeBSD 13 ======================

build_bsd:
  extends: [ .build ]
  variables:
    DISTR: freebsd13
    boost: none
  before_script:
    - export CMAKE_TOOLCHAIN_FILE=$(pwd)/dist/build_dockers/cross/freebsd.cmake
  script:
    - mkdir build && cd build
    - ctest -VV -S ../misc/ctest/justbuild.cmake -DCTEST_SOURCE_DIRECTORY=.. --no-compress-output
  cache:
    key: $DISTR$arch

# ==================== Publish (push) pipeline results ======================

# build and upload on regular commits
convert_win_junit:
  stage: publish
  tags:
    - docker
  image: manticoresearch/ubertests_public:331
  needs:
    - win_tests
  variables:
    GIT_STRATEGY: fetch
  script:
    - xsltproc -o build/junit_tests.xml misc/junit/ctest2junit.xsl build/xml/Test.xml
  artifacts:
    paths:
      - build/junit_tests.xml
    reports:
      junit: build/junit_tests.xml
  cache: {}

# ==================== Run secondary pipeline ======================

deploy_hook:
  stage: hooks
  trigger:
    include: dist/gitlab-release.yml
    forward:
      pipeline_variables: true
  needs:
    - job: simple_tests
      artifacts: false
    - job: win_tests
      artifacts: false
    - job: release_tests
      artifacts: false
    - job: build_arm
      artifacts: false


================================================
FILE: .gitmodules
================================================
[submodule "translator"]
	path = translator
	url = https://github.com/manticoresoftware/translator.git


================================================
FILE: .noindex
================================================
/test/**
/translator/**


================================================
FILE: .translation-cache/Changelog.md.json
================================================
{
    "5167106ef1f5f57ff52f6e69322d9f7f584b44f21770d796e9df1fe8cdd6dfb6": {
        "original": "**Starting with version 10.1.0, CentOS 7 is no longer supported. Users are encouraged to upgrade to a supported operating system.**\n\n### Breaking Changes\n* \u26a0\ufe0f [v10.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/10.0.0) [ Issue #540](https://github.com/manticoresoftware/manticoresearch-buddy/issues/540) BREAKING CHANGE: set `layouts=''` as the default for [fuzzy search](Searching/Spell_correction.md#Fuzzy-Search)\n\n### New Features and Improvements\n* \ud83c\udd95 [v10.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/10.1.0) [ Issue #537](https://github.com/manticoresoftware/manticoresearch-buddy/issues/537) Added built-in [Prometheus exporter](Node_info_and_management/Node_status.md#Prometheus-Exporter)\n* \ud83c\udd95 [v9.8.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.8.0) [ Issue #3409](https://github.com/manticoresoftware/manticoresearch/issues/3409) Added [ALTER TABLE tbl REBUILD KNN](Updating_table_schema_and_settings.md#Rebuilding-a-KNN-index)\n* \ud83c\udd95 [v9.7.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.7.0) [ Issue #1778](https://github.com/manticoresoftware/manticoresearch/issues/1778) Added automatic embeddings generation (we're not officially announcing it yet, as the code is in the main branch but still needs more testing)\n* \ud83c\udd95 [v9.6.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.6.0)  Bumped KNN API version for auto-embeddings support\n* \ud83c\udd95 [v9.5.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.5.0) [ Issue #1894](https://github.com/manticoresoftware/manticoresearch/issues/1894) Improved cluster recovery: save `seqno` periodically for faster node restart after crash\n* \ud83c\udd95 [v9.4.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.4.0) [ Issue #2400](https://github.com/manticoresoftware/manticoresearch/issues/2400) Added support for latest [Logstash](Integration/Logstash.md#Integration-with-Logstash) and Beats",
        "translations": {
            "chinese": "**\u4ece\u7248\u672c 10.1.0 \u5f00\u59cb\uff0cCentOS 7 \u5c06\u4e0d\u518d\u53d7\u652f\u6301\u3002\u5efa\u8bae\u7528\u6237\u5347\u7ea7\u5230\u53d7\u652f\u6301\u7684\u64cd\u4f5c\u7cfb\u7edf\u3002**\n\n### \u7a81\u7834\u6027\u53d8\u66f4\n* \u26a0\ufe0f [v10.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/10.0.0) [ \u95ee\u9898 #540](https://github.com/manticoresoftware/manticoresearch-buddy/issues/540) \u7a81\u7834\u6027\u53d8\u66f4\uff1a\u5c06 [\u6a21\u7cca\u641c\u7d22](Searching/Spell_correction.md#Fuzzy-Search) \u7684 `layouts=''` \u8bbe\u4e3a\u9ed8\u8ba4\u503c\n\n### \u65b0\u529f\u80fd\u548c\u6539\u8fdb\n* \ud83c\udd95 [v10.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/10.1.0) [ \u95ee\u9898 #537](https://github.com/manticoresoftware/manticoresearch-buddy/issues/537) \u65b0\u589e\u5185\u7f6e [Prometheus \u5bfc\u51fa\u5668](Node_info_and_management/Node_status.md#Prometheus-Exporter)\n* \ud83c\udd95 [v9.8.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.8.0) [ \u95ee\u9898 #3409](https://github.com/manticoresoftware/manticoresearch/issues/3409) \u65b0\u589e [ALTER TABLE tbl REBUILD KNN](Updating_table_schema_and_settings.md#Rebuilding-a-KNN-index)\n* \ud83c\udd95 [v9.7.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.7.0) [ \u95ee\u9898 #1778](https://github.com/manticoresoftware/manticoresearch/issues/1778) \u65b0\u589e\u81ea\u52a8\u5d4c\u5165\u751f\u6210\uff08\u6211\u4eec\u5c1a\u672a\u6b63\u5f0f\u5ba3\u5e03\u6b64\u529f\u80fd\uff0c\u56e0\u4e3a\u4ee3\u7801\u5df2\u5728\u4e3b\u5206\u652f\u4e2d\uff0c\u4f46\u4ecd\u9700\u8981\u66f4\u591a\u6d4b\u8bd5\uff09\n* \ud83c\udd95 [v9.6.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.6.0) \u4e3a\u81ea\u52a8\u5d4c\u5165\u652f\u6301\u63d0\u5347 KNN API \u7248\u672c\n* \ud83c\udd95 [v9.5.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.5.0) [ \u95ee\u9898 #1894](https://github.com/manticoresoftware/manticoresearch/issues/1894) \u6539\u8fdb\u96c6\u7fa4\u6062\u590d\uff1a\u5b9a\u671f\u4fdd\u5b58 `seqno` \u4ee5\u52a0\u5feb\u5d29\u6e83\u540e\u7684\u8282\u70b9\u91cd\u542f\n* \ud83c\udd95 [v9.4.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.4.0) [ \u95ee\u9898 #2400](https://github.com/manticoresoftware/manticoresearch/issues/2400) \u65b0\u589e\u5bf9\u6700\u65b0 [Logstash](Integration/Logstash.md#Integration-with-Logstash) \u548c Beats \u7684\u652f\u6301",
            "russian": "**\u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 10.1.0, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 CentOS 7 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443.**\n\n### \u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\n* \u26a0\ufe0f [v10.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/10.0.0) [ Issue #540](https://github.com/manticoresoftware/manticoresearch-buddy/issues/540) \u041a\u0420\u0418\u0422\u0418\u0427\u0415\u0421\u041a\u041e\u0415 \u0418\u0417\u041c\u0415\u041d\u0415\u041d\u0418\u0415: \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 `layouts=''` \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f [\u043d\u0435\u0447\u0435\u0442\u043a\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430](Searching/Spell_correction.md#Fuzzy-Search)\n\n### \u041d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\n* \ud83c\udd95 [v10.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/10.1.0) [ Issue #537](https://github.com/manticoresoftware/manticoresearch-buddy/issues/537) \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 [\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0435\u0440 Prometheus](Node_info_and_management/Node_status.md#Prometheus-Exporter)\n* \ud83c\udd95 [v9.8.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.8.0) [ Issue #3409](https://github.com/manticoresoftware/manticoresearch/issues/3409) \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 [ALTER TABLE tbl REBUILD KNN](Updating_table_schema_and_settings.md#Rebuilding-a-KNN-index)\n* \ud83c\udd95 [v9.7.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.7.0) [ Issue #1778](https://github.com/manticoresoftware/manticoresearch/issues/1778) \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432 (\u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u0434 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0432\u0435\u0442\u043a\u0435, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f)\n* \ud83c\udd95 [v9.6.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.6.0) \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f API KNN \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0430\u0432\u0442\u043e-\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432\n* \ud83c\udd95 [v9.5.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.5.0) [ Issue #1894](https://github.com/manticoresoftware/manticoresearch/issues/1894) \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430: \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 `seqno` \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0443\u0437\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u044f\n* \ud83c\udd95 [v9.4.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/9.4.0) [ Issue #2400](https://github.com/manticoresoftware/manticoresearch/issues/2400) \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 [Logstash](Integration/Logstash.md#Integration-with-Logstash) \u0438 Beats"
        },
        "is_code_or_comment": false,
        "model": "qwen/qwen3-14b",
        "updated_at": 1766554689
    },
    "3a194d5fdb58e522586ab17638c097e123f4db3d262d036adff33d8f1aff1c59": {
        "original": "## Version 14.1.0\n\n**Released**: November 7th 2025\n\n\u2764\ufe0f We\u2019d like to extend our heartfelt thanks to [@ricardopintottrdata](https://github.com/ricardopintottrdata) for their work on [PR #3792](https://github.com/manticoresoftware/manticoresearch/pull/3792) and [PR #3828](https://github.com/manticoresoftware/manticoresearch/pull/3828) \u2014 addressing issues around `HAVING` total counts and the `filter with empty name` error \u2014 and to [@jdelStrother](https://github.com/jdelStrother) for their contribution with [PR #3819](https://github.com/manticoresoftware/manticoresearch/pull/3819), which improves handling of `ParseCJKSegmentation` when Jieba support isn\u2019t available. \n\nYour efforts help make the project stronger \u2014 many thanks!\n\n### Recommended libraries\n- Recommended [MCL](https://github.com/manticoresoftware/columnar) version: 8.1.0\n- Recommended [Buddy](Installation/Manticore_Buddy.md#Manticore-Buddy) version: 3.37.0\n\nIf you follow the [official installation guide](https://manticoresearch.com/install/), you don't need to worry about this.\n\n### \u26a0\ufe0f Important\nVersion [v14.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.0.0) updates the replication protocol. If you are running a replication cluster, you need to:\n  - First, cleanly stop all your nodes\n  - Then, start the node that was stopped last with `--new-cluster`, using the tool `manticore_new_cluster` in Linux.\n  - Read about [restarting a cluster](Creating_a_cluster/Setting_up_replication/Restarting_a_cluster.md#Restarting-a-cluster) for more details.\n\n### New Features and Improvements\n* \ud83c\udd95 [v14.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.1.0) [ Issue #3047](https://github.com/manticoresoftware/manticoresearch/issues/3047) Added support for `LOCK TABLES` statements generated by mysqldump, improving the safety of logical backups.\n* \u26a0\ufe0f [v14.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.0.0) [ PR #3896](https://github.com/manticoresoftware/manticoresearch/pull/3896) Added a [progress meter](../Creating_a_cluster/Setting_up_replication/Replication_cluster_status.md#SST-Progress-Metrics) for donor and joiner nodes in replication SST shown in SHOW STATUS.\n* \ud83c\udd95 [v13.16.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.16.0) [ PR #3894](https://github.com/manticoresoftware/manticoresearch/pull/3894) Updated buddy from 3.36.1 to 3.37.0, which adds the \"quorum\" option.\n* \ud83c\udd95 [v13.15.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.15.0) [ PR #3842](https://github.com/manticoresoftware/manticoresearch/pull/3842) [force_bigrams](../Searching/Spell_correction.md#Using-force_bigrams-for-better-transposition-handling) option to fuzzy and autocomplete plugins.",
        "translations": {
            "chinese": "## \u7248\u672c 14.1.0\n\n**\u53d1\u5e03\u65e5\u671f**\uff1a2025\u5e7411\u67087\u65e5\n\n\u2764\ufe0f \u6211\u4eec\u8877\u5fc3\u611f\u8c22[@ricardopintottrdata](https://github.com/ricardopintottrdata)\u5728[PR #3792](https://github.com/manticoresoftware/manticoresearch/pull/3792)\u548c[PR #3828](https://github.com/manticoresoftware/manticoresearch/pull/3828)\u4e2d\u7684\u5de5\u4f5c\u2014\u2014\u89e3\u51b3\u4e86\u4e0e`HAVING`\u603b\u8ba1\u6570\u548c`filter with empty name`\u9519\u8bef\u76f8\u5173\u7684\u95ee\u9898\u2014\u2014\u4ee5\u53ca[@jdelStrother](https://github.com/jdelStrother)\u5728[PR #3819](https://github.com/manticoresoftware/manticoresearch/pull/3819)\u4e2d\u7684\u8d21\u732e\uff0c\u8be5\u8d21\u732e\u6539\u8fdb\u4e86\u5728\u672a\u63d0\u4f9bJieba\u652f\u6301\u65f6\u5bf9`ParseCJKSegmentation`\u7684\u5904\u7406\u3002\n\n\u60a8\u7684\u52aa\u529b\u4f7f\u9879\u76ee\u66f4\u52a0\u5f3a\u5927\u2014\u2014\u975e\u5e38\u611f\u8c22\uff01\n\n### \u63a8\u8350\u5e93\n- \u63a8\u8350\u7684[MCL](https://github.com/manticoresoftware/columnar)\u7248\u672c\uff1a8.1.0\n- \u63a8\u8350\u7684[Buddy](Installation/Manticore_Buddy.md#Manticore-Buddy)\u7248\u672c\uff1a3.37.0\n\n\u5982\u679c\u60a8\u9075\u5faa[\u5b98\u65b9\u5b89\u88c5\u6307\u5357](https://manticoresearch.com/install/)\uff0c\u5219\u65e0\u9700\u62c5\u5fc3\u6b64\u95ee\u9898\u3002\n\n### \u26a0\ufe0f \u91cd\u8981\n\u7248\u672c[v14.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.0.0)\u66f4\u65b0\u4e86\u590d\u5236\u534f\u8bae\u3002\u5982\u679c\u60a8\u6b63\u5728\u8fd0\u884c\u590d\u5236\u96c6\u7fa4\uff0c\u5219\u9700\u8981\uff1a\n  - \u9996\u5148\uff0c\u5e72\u51c0\u5730\u505c\u6b62\u6240\u6709\u8282\u70b9\n  - \u7136\u540e\uff0c\u4f7f\u7528\u5de5\u5177`manticore_new_cluster`\u5728Linux\u4e2d\u4ee5`--new-cluster`\u53c2\u6570\u542f\u52a8\u6700\u540e\u505c\u6b62\u7684\u8282\u70b9\u3002\n  - \u6709\u5173[\u91cd\u542f\u96c6\u7fa4](Creating_a_cluster/Setting_up_replication/Restarting_a_cluster.md#Restarting-a-cluster)\u7684\u66f4\u591a\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u76f8\u5173\u6587\u6863\u3002\n\n### \u65b0\u529f\u80fd\u548c\u6539\u8fdb\n* \ud83c\udd95 [v14.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.1.0) [ Issue #3047](https://github.com/manticoresoftware/manticoresearch/issues/3047) \u6dfb\u52a0\u4e86\u5bf9\u7531mysqldump\u751f\u6210\u7684`LOCK TABLES`\u8bed\u53e5\u7684\u652f\u6301\uff0c\u63d0\u9ad8\u4e86\u903b\u8f91\u5907\u4efd\u7684\u5b89\u5168\u6027\u3002\n* \u26a0\ufe0f [v14.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.0.0) [ PR #3896](https://github.com/manticoresoftware/manticoresearch/pull/3896) \u5728\u590d\u5236SST\u7684SHOW STATUS\u4e2d\u4e3a\u4f9b\u4f53\u548c\u52a0\u5165\u8282\u70b9\u6dfb\u52a0\u4e86[\u8fdb\u5ea6\u8ba1\u6570\u5668](../Creating_a_cluster/Setting_up_replication/Replication_cluster_status.md#SST-Progress-Metrics)\u3002\n* \ud83c\udd95 [v13.16.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.16.0) [ PR #3894](https://github.com/manticoresoftware/manticoresearch/pull/3894) \u5c06buddy\u4ece3.36.1\u66f4\u65b0\u52303.37.0\uff0c\u65b0\u589e\u4e86\"quorum\"\u9009\u9879\u3002\n* \ud83c\udd95 [v13.15.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.15.0) [ PR #3842](https://github.com/manticoresoftware/manticoresearch/pull/3842) [force_bigrams](../Searching/Spell_correction.md#Using-force_bigrams-for-better-transposition-handling)\u9009\u9879\u7528\u4e8e\u6a21\u7cca\u548c\u81ea\u52a8\u8865\u5168\u63d2\u4ef6\u3002",
            "russian": "## \u0412\u0435\u0440\u0441\u0438\u044f 14.1.0\n\n**\u0412\u044b\u043f\u0443\u0449\u0435\u043d\u043e**: 7 \u043d\u043e\u044f\u0431\u0440\u044f 2025 \u0433.\n\n\u2764\ufe0f \u041c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u0441\u043a\u0440\u0435\u043d\u043d\u0435 \u043f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c [@ricardopintottrdata](https://github.com/ricardopintottrdata) \u0437\u0430 \u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430\u0434 [PR #3792](https://github.com/manticoresoftware/manticoresearch/pull/3792) \u0438 [PR #3828](https://github.com/manticoresoftware/manticoresearch/pull/3828) \u2014 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430\u043c\u0438 `HAVING` total \u0438 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 `filter with empty name` \u2014 \u0430 \u0442\u0430\u043a\u0436\u0435 [@jdelStrother](https://github.com/jdelStrother) \u0437\u0430 \u0438\u0445 \u0432\u043a\u043b\u0430\u0434 \u0441 [PR #3819](https://github.com/manticoresoftware/manticoresearch/pull/3819), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 `ParseCJKSegmentation`, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Jieba \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430.\n\n\u0412\u0430\u0448\u0438 \u0443\u0441\u0438\u043b\u0438\u044f \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u2014 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e!\n\n### \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\n- \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f [MCL](https://github.com/manticoresoftware/columnar): 8.1.0\n- \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f [Buddy](Installation/Manticore_Buddy.md#Manticore-Buddy): 3.37.0\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0435 [\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435](https://manticoresearch.com/install/), \u0432\u0430\u043c \u043d\u0435 \u043e \u0447\u0435\u043c \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f.\n\n### \u26a0\ufe0f \u0412\u0430\u0436\u043d\u043e\n\u0412\u0435\u0440\u0441\u0438\u044f [v14.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.0.0) \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e:\n  - \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u0443\u0437\u043b\u044b\n  - \u0417\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0443\u0437\u0435\u043b \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c `--new-cluster`, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 `manticore_new_cluster` \u0432 Linux.\n  - \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e [\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430](Creating_a_cluster/Setting_up_replication/Restarting_a_cluster.md#Restarting-a-cluster).\n\n### \u041d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\n* \ud83c\udd95 [v14.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.1.0) [ Issue #3047](https://github.com/manticoresoftware/manticoresearch/issues/3047) \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 `LOCK TABLES`, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 mysqldump, \u0447\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u044d\u043a\u0430\u043f\u043e\u0432.\n* \u26a0\ufe0f [v14.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.0.0) [ PR #3896](https://github.com/manticoresoftware/manticoresearch/pull/3896) \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d [\u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0430](../Creating_a_cluster/Setting_up_replication/Replication_cluster_status.md#SST-Progress-Metrics) \u0434\u043b\u044f \u0434\u043e\u043d\u043e\u0440\u0441\u043a\u0438\u0445 \u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0443\u0437\u043b\u043e\u0432 \u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 SST, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0432 SHOW STATUS.\n* \ud83c\udd95 [v13.16.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.16.0) [ PR #3894](https://github.com/manticoresoftware/manticoresearch/pull/3894) \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d buddy \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 3.36.1 \u0434\u043e 3.37.0, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u043e\u043f\u0446\u0438\u044e \"quorum\".\n* \ud83c\udd95 [v13.15.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.15.0) [ PR #3842](https://github.com/manticoresoftware/manticoresearch/pull/3842) \u041e\u043f\u0446\u0438\u044f [force_bigrams](../Searching/Spell_correction.md#Using-force_bigrams-for-better-transposition-handling) \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 fuzzy \u0438 autocomplete."
        },
        "is_code_or_comment": false,
        "model": "qwen/qwen3-14b",
        "updated_at": 1766554688
    },
    "b446694053ae5587aae921b182b84721547a89030e0545f632e24a0c93e28566": {
        "original": "# Changelog\n\n## Version 15.1.0\n**Released**: December 7th 2025\n\n### Recommended Libraries\n- Recommended [MCL](https://github.com/manticoresoftware/columnar) version: 9.0.0\n- Recommended [Buddy](Installation/Manticore_Buddy.md#Manticore-Buddy) version: 3.40.2\n\nIf you follow the [official installation guide](https://manticoresearch.com/install/), you don't need to worry about this.\n\n## Breaking Changes\n* \u26a0\ufe0f [v15.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/15.0.0) [ PR #4003](https://github.com/manticoresoftware/manticoresearch/pull/4003) Updated MCL requirement to 9.0.0, bringing uncompressed float-vector storage, block-size change for KNN vectors, and non-buffered reads. This update changes the data format. Older MCL versions won\u2019t be able to read it, but the new version can still read your existing columnar tables without any issues.\n\n### New Features and Improvements\n* \ud83c\udd95 [v15.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/15.1.0) [ PR #3990](https://github.com/manticoresoftware/manticoresearch/pull/3990) Improved disk chunk flushing log records by breaking the total time into clearer parts.\n* \ud83c\udd95 [v14.7.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.7.0) [ Issue #3860](https://github.com/manticoresoftware/manticoresearch/issues/3860) Updated Buddy requirement to 3.40.1, which includes an improvement in autocomplete: normalized bigram-separator characters to spaces and filtered out duplicate or malformed suggestion combinations to improve suggestion quality. It also includes a fix for invalid JSON errors in Kafka views and a fix for autocomplete so sorting combinations no longer throws errors when some keys are missing in the score map.\n* \ud83c\udd95 [v14.6.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.6.0) [ Issue #615](https://github.com/manticoresoftware/manticoresearch-buddy/issues/615) Updated the Manticore Buddy requirement to version 3.39.1, which includes a fix for invalid JSON errors in the KNN plugin and allows Buddy handlers to override the HTTP `Content-Type` so `/metrics` now returns Prometheus text format (`text/plain; version=0.0.4`) instead of JSON, fixing scraping failures.\n* \ud83c\udd95 [v14.4.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.4.0) [ PR #3942](https://github.com/manticoresoftware/manticoresearch/pull/3942) Updated the Manticore Buddy requirement to 3.38.0, filtering out zero-doc suggestions, improving string-key handling with Ds\\Map, changing memory-usage reporting format in Buddy from KB to bytes for greater precision and enhancing performance, stability, and maintainability.\n* \ud83c\udd95 [v14.5.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.5.0) [ Issue #3329](https://github.com/manticoresoftware/manticoresearch/issues/3329) Trim extra whitespace and new lines in JSON payloads when logging query requests \u2014 skip leading/trailing spaces to avoid logging malformed JSON.\n* \ud83c\udd95 [v14.3.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.3.0) [ PR #3932](https://github.com/manticoresoftware/manticoresearch/pull/3932) Improved handling of `LOCK TABLES` / `UNLOCK TABLES`: write locks now return warnings instead of errors, read locks are correctly shown in `SHOW LOCKS`, and the overall lock logic behaves consistently.\n* \ud83c\udd95 [v14.2.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.2.0) [ Issue #3891](https://github.com/manticoresoftware/manticoresearch/issues/3891) Added support for arbitrary filter expressions in `JOIN ON` clauses (not just equality comparisons), enabling queries like `... ON t1.id = t2.t1_id AND t2.value = 5`.",
        "translations": {
            "chinese": "# \u66f4\u65b0\u65e5\u5fd7\n\n## \u7248\u672c 15.1.0\n**\u53d1\u5e03\u65e5\u671f**\uff1a2025 \u5e74 12 \u6708 7 \u65e5\n\n### \u63a8\u8350\u5e93\n- \u63a8\u8350 [MCL](https://github.com/manticoresoftware/columnar) \u7248\u672c\uff1a9.0.0\n- \u63a8\u8350 [Buddy](Installation/Manticore_Buddy.md#Manticore-Buddy) \u7248\u672c\uff1a3.40.2\n\n\u5982\u679c\u60a8\u9075\u5faa[\u5b98\u65b9\u5b89\u88c5\u6307\u5357](https://manticoresearch.com/install/)\uff0c\u5219\u65e0\u9700\u62c5\u5fc3\u6b64\u95ee\u9898\u3002\n\n## \u7a81\u7834\u6027\u53d8\u66f4\n* \u26a0\ufe0f [v15.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/15.0.0) [ PR #4003](https://github.com/manticoresoftware/manticoresearch/pull/4003) \u5c06 MCL \u8981\u6c42\u66f4\u65b0\u81f3 9.0.0\uff0c\u5f15\u5165\u4e86\u975e\u538b\u7f29\u6d6e\u70b9\u5411\u91cf\u5b58\u50a8\u3001KNN \u5411\u91cf\u7684\u5757\u5927\u5c0f\u66f4\u6539\u4ee5\u53ca\u975e\u7f13\u51b2\u8bfb\u53d6\u3002\u6b64\u66f4\u65b0\u66f4\u6539\u4e86\u6570\u636e\u683c\u5f0f\u3002\u65e7\u7248 MCL \u5c06\u65e0\u6cd5\u8bfb\u53d6\u6b64\u683c\u5f0f\uff0c\u4f46\u65b0\u7248\u4ecd\u80fd\u65e0\u95ee\u9898\u5730\u8bfb\u53d6\u60a8\u73b0\u6709\u7684\u5217\u5f0f\u8868\u3002\n\n### \u65b0\u529f\u80fd\u4e0e\u6539\u8fdb\n* \ud83c\udd95 [v15.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/15.1.0) [ PR #3990](https://github.com/manticoresoftware/manticoresearch/pull/3990) \u901a\u8fc7\u5c06\u603b\u65f6\u95f4\u62c6\u5206\u4e3a\u66f4\u6e05\u6670\u7684\u90e8\u5206\uff0c\u6539\u8fdb\u4e86\u78c1\u76d8\u5757\u5237\u65b0\u65e5\u5fd7\u8bb0\u5f55\u3002\n* \ud83c\udd95 [v14.7.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.7.0) [ Issue #3860](https://github.com/manticoresoftware/manticoresearch/issues/3860) \u5c06 Buddy \u8981\u6c42\u66f4\u65b0\u81f3 3.40.1\uff0c\u5176\u4e2d\u6539\u8fdb\u4e86\u81ea\u52a8\u8865\u5168\u529f\u80fd\uff1a\u5c06\u5927\u5199\u5206\u9694\u7b26\u5b57\u7b26\u6807\u51c6\u5316\u4e3a\u7a7a\u683c\uff0c\u5e76\u8fc7\u6ee4\u6389\u91cd\u590d\u6216\u683c\u5f0f\u9519\u8bef\u7684\u5efa\u8bae\u7ec4\u5408\u4ee5\u63d0\u9ad8\u5efa\u8bae\u8d28\u91cf\u3002\u8fd8\u5305\u542b\u4fee\u590d Kafka \u89c6\u56fe\u4e2d\u7684\u65e0\u6548 JSON \u9519\u8bef\u4ee5\u53ca\u4fee\u590d\u81ea\u52a8\u8865\u5168\u529f\u80fd\uff0c\u4f7f\u5f97\u5f53 score map \u4e2d\u7f3a\u5c11\u67d0\u4e9b\u952e\u65f6\uff0c\u6392\u5e8f\u7ec4\u5408\u4e0d\u518d\u629b\u51fa\u9519\u8bef\u3002\n* \ud83c\udd95 [v14.6.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.6.0) [ Issue #615](https://github.com/manticoresoftware/manticoresearch-buddy/issues/615) \u5c06 Manticore Buddy \u8981\u6c42\u66f4\u65b0\u81f3 3.39.1\uff0c\u5176\u4e2d\u5305\u542b\u4fee\u590d KNN \u63d2\u4ef6\u4e2d\u7684\u65e0\u6548 JSON \u9519\u8bef\uff0c\u5e76\u5141\u8bb8 Buddy \u5904\u7406\u5668\u8986\u76d6 HTTP `Content-Type`\uff0c\u56e0\u6b64 `/metrics` \u73b0\u5728\u8fd4\u56de Prometheus \u6587\u672c\u683c\u5f0f (`text/plain; version=0.0.4`) \u800c\u975e JSON\uff0c\u4fee\u590d\u4e86\u6293\u53d6\u5931\u8d25\u7684\u95ee\u9898\u3002\n* \ud83c\udd95 [v14.4.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.4.0) [ PR #3942](https://github.com/manticoresoftware/manticoresearch/pull/3942) \u5c06 Manticore Buddy \u8981\u6c42\u66f4\u65b0\u81f3 3.38.0\uff0c\u8fc7\u6ee4\u6389\u96f6\u6587\u6863\u5efa\u8bae\uff0c\u6539\u8fdb Ds\\Map \u4e2d\u7684\u5b57\u7b26\u4e32\u952e\u5904\u7406\uff0c\u5c06 Buddy \u4e2d\u7684\u5185\u5b58\u4f7f\u7528\u62a5\u544a\u683c\u5f0f\u4ece KB \u6539\u4e3a\u5b57\u8282\u4ee5\u63d0\u9ad8\u7cbe\u5ea6\uff0c\u5e76\u589e\u5f3a\u6027\u80fd\u3001\u7a33\u5b9a\u6027\u548c\u53ef\u7ef4\u62a4\u6027\u3002\n* \ud83c\udd95 [v14.5.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.5.0) [ Issue #3329](https://github.com/manticoresoftware/manticoresearch/issues/3329) \u5728\u8bb0\u5f55\u67e5\u8be2\u8bf7\u6c42\u65f6\u4fee\u526a JSON \u8d1f\u8f7d\u4e2d\u7684\u591a\u4f59\u7a7a\u683c\u548c\u6362\u884c\u7b26\u2014\u2014\u8df3\u8fc7\u9996\u5c3e\u7a7a\u683c\u4ee5\u907f\u514d\u8bb0\u5f55\u683c\u5f0f\u9519\u8bef\u7684 JSON\u3002\n* \ud83c\udd95 [v14.3.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.3.0) [ PR #3932](https://github.com/manticoresoftware/manticoresearch/pull/3932) \u6539\u8fdb\u4e86 `LOCK TABLES` / `UNLOCK TABLES` \u7684\u5904\u7406\uff1a\u5199\u9501\u73b0\u5728\u8fd4\u56de\u8b66\u544a\u800c\u975e\u9519\u8bef\uff0c\u8bfb\u9501\u5728 `SHOW LOCKS` \u4e2d\u6b63\u786e\u663e\u793a\uff0c\u6574\u4f53\u9501\u903b\u8f91\u884c\u4e3a\u4fdd\u6301\u4e00\u81f4\u3002\n* \ud83c\udd95 [v14.2.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.2.0) [ Issue #3891](https://github.com/manticoresoftware/manticoresearch/issues/3891) \u5728 `JOIN ON` \u5b50\u53e5\u4e2d\u6dfb\u52a0\u4e86\u4efb\u610f\u8fc7\u6ee4\u8868\u8fbe\u5f0f\u7684\u652f\u6301\uff08\u4e0d\u4ec5\u9650\u4e8e\u7b49\u503c\u6bd4\u8f83\uff09\uff0c\u542f\u7528\u7c7b\u4f3c `... ON t1.id = t2.t1_id AND t2.value = 5` \u7684\u67e5\u8be2\u3002",
            "russian": "# \u0416\u0443\u0440\u043d\u0430\u043b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439\n\n## \u0412\u0435\u0440\u0441\u0438\u044f 15.1.0\n**\u0412\u044b\u043f\u0443\u0449\u0435\u043d\u043e**: 7 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2025\n\n### \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\n- \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f [MCL](https://github.com/manticoresoftware/columnar): 9.0.0\n- \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f [Buddy](Installation/Manticore_Buddy.md#Manticore-Buddy): 3.40.2\n\n\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0435 [\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443 \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435](https://manticoresearch.com/install/), \u0432\u0430\u043c \u043d\u0435 \u043e \u0447\u0435\u043c \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f.\n\n## \u041d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\n* \u26a0\ufe0f [v15.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/15.0.0) [ PR #4003](https://github.com/manticoresoftware/manticoresearch/pull/4003) \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a MCL \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 9.0.0, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0431\u0435\u0437 \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u043b\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u043b\u043e\u043a\u0430 \u0434\u043b\u044f KNN-\u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0438 \u043d\u0435\u0431\u0443\u0444\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0447\u0442\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 MCL \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0430\u0448\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043b\u043e\u043d\u043d\u0430\u0440\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.\n\n### \u041d\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\n* \ud83c\udd95 [v15.1.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/15.1.0) [ PR #3990](https://github.com/manticoresoftware/manticoresearch/pull/3990) \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0438 \u043b\u043e\u0433\u043e\u0432 \u0441\u0431\u0440\u043e\u0441\u0430 \u0447\u0430\u043d\u043a\u043e\u0432 \u043d\u0430 \u0434\u0438\u0441\u043a \u0441 \u0440\u0430\u0437\u0431\u0438\u0432\u043a\u043e\u0439 \u043e\u0431\u0449\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u044f\u0441\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438.\n* \ud83c\udd95 [v14.7.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.7.0) [ Issue #3860](https://github.com/manticoresoftware/manticoresearch/issues/3860) \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a Buddy \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 3.40.1, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0441\u0438\u043c\u0432\u043e\u043b\u044b-\u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0431\u0438\u0433\u0440\u0430\u043c\u043c \u0432 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043b\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0438\u0445 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u0422\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438 invalid JSON \u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445 Kafka \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u2014 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0432 score map.\n* \ud83c\udd95 [v14.6.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.6.0) [ Issue #615](https://github.com/manticoresoftware/manticoresearch-buddy/issues/615) \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a Manticore Buddy \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 3.39.1, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 invalid JSON \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 KNN \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0435\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c Buddy \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c HTTP `Content-Type`, \u0442\u0430\u043a \u0447\u0442\u043e `/metrics` \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 Prometheus (`text/plain; version=0.0.4`) \u0432\u043c\u0435\u0441\u0442\u043e JSON, \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u0435 \u043c\u0435\u0442\u0440\u0438\u043a.\n* \ud83c\udd95 [v14.4.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.4.0) [ PR #3942](https://github.com/manticoresoftware/manticoresearch/pull/3942) \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a Manticore Buddy \u0434\u043e 3.38.0, \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043d\u0443\u043b\u0435\u0432\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439 \u0441 Ds\\Map, \u0438\u0437\u043c\u0435\u043d\u0451\u043d \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0442\u0447\u0451\u0442\u0430 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 Buddy \u0441 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442\u043e\u0432 \u043d\u0430 \u0431\u0430\u0439\u0442\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0441\u0442\u044c.\n* \ud83c\udd95 [v14.5.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.5.0) [ Issue #3329](https://github.com/manticoresoftware/manticoresearch/issues/3329) \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 JSON-\u043f\u0435\u0439\u043b\u043e\u0430\u0434\u0430\u0445 \u043f\u0440\u0438 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u2014 \u043f\u0440\u043e\u043f\u0443\u0441\u043a \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e JSON.\n* \ud83c\udd95 [v14.3.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.3.0) [ PR #3932](https://github.com/manticoresoftware/manticoresearch/pull/3932) \u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 `LOCK TABLES` / `UNLOCK TABLES`: \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 `SHOW LOCKS`, \u043b\u043e\u0433\u0438\u043a\u0430 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a \u0441\u0442\u0430\u043b\u0430 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439.\n* \ud83c\udd95 [v14.2.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/14.2.0) [ Issue #3891](https://github.com/manticoresoftware/manticoresearch/issues/3891) \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0432 `JOIN ON` (\u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e), \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432\u0438\u0434\u0430 `... ON t1.id = t2.t1_id AND t2.value = 5`."
        },
        "is_code_or_comment": false,
        "model": "qwen/qwen3-14b",
        "updated_at": 1766554700
    },
    "c33f58eb278c485fd469abaefcadb094c3be1958582e9684af30af30eb67119c": {
        "original": "### Bug Fixes\n* \ud83e\udeb2 [v13.6.7](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.7) [ Issue #3524](https://github.com/manticoresoftware/manticoresearch/issues/3524) Fixed an issue with saving generated embeddings in row-wise storage.\n* \ud83e\udeb2 [v13.6.6](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.6) [ Issue #3563](https://github.com/manticoresoftware/manticoresearch/issues/3563) Fixed issues with Sequel Ace and other integrations failing due to \"unknown sysvar\" errors.\n* \ud83e\udeb2 [v13.6.5](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.5) [ Issue #3467](https://github.com/manticoresoftware/manticoresearch/issues/3467) Fixed issues with DBeaver and other integrations failing due to \"unknown sysvar\" errors.\n* \ud83e\udeb2 [v13.6.4](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.4) [ Issue #3524](https://github.com/manticoresoftware/manticoresearch/issues/3524) Fixed an issue with concatenating multi-field embeddings; also fixed embedding generation from queries.\n* \ud83e\udeb2 [v13.6.3](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.3) [ Issue #3641](https://github.com/manticoresoftware/manticoresearch/issues/3641) Fixed a bug in 13.6.0 where a phrase lost all bracketed keywords except the first one.\n* \ud83e\udeb2 [v13.6.2](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.2) Fixed a memleak in transform_phrase.\n* \ud83e\udeb2 [v13.6.1](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.1) Fixed a memory leak in version 13.6.0.\n* \ud83e\udeb2 [v13.5.2](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.5.2) [ Issue #3651](https://github.com/manticoresoftware/manticoresearch/issues/3651) Fixed more issues related to full-text search fuzz testing.\n* \ud83e\udeb2 [v13.5.1](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.5.1) [ Issue #3560](https://github.com/manticoresoftware/manticoresearch/issues/3560) Fixed a case where OPTIMIZE TABLE could hang indefinitely with KNN data.\n* \ud83e\udeb2 [v13.4.2](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.4.2) [ Issue #2544](https://github.com/manticoresoftware/manticoresearch/issues/2544) Fixed an issue where adding a float_vector column could corrupt indexes.\n* \ud83e\udeb2 [v13.4.1](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.4.1) [ Issue #3651](https://github.com/manticoresoftware/manticoresearch/issues/3651) Added fuzz testing for full-text parsing and fixed several issues found during testing.\n* \ud83e\udeb2 [v13.3.1](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.3.1) [ Issue #3583](https://github.com/manticoresoftware/manticoresearch/issues/3583) Fixed a crash when using complex boolean filters with highlighting.\n* \ud83e\udeb2 [v13.2.7](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.2.7) [ Issue #3481](https://github.com/manticoresoftware/manticoresearch/issues/3481) Fixed a crash when HTTP update, distributed table, and wrong replication cluster are used together.\n* \ud83e\udeb2 [v13.2.6](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.2.6) [ PR #3567](https://github.com/manticoresoftware/manticoresearch/pull/3567) Updated manticore-backup dependency to version 1.9.6.\n* \ud83e\udeb2 [v13.2.5](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.2.5) [ PR #3565](https://github.com/manticoresoftware/manticoresearch/pull/3565) Fixed CI setup to improve Docker image compatibility.\n* \ud83e\udeb2 [v13.2.4](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.2.4) Fixed handling of long tokens. Some special tokens (like regex patterns) could create words that are too long, so they are now shortened before use.\n\n## Version 13.2.3\n**Released**: July 8th 2025\n\n### Breaking Changes\n* \u26a0\ufe0f [PR #3586](https://github.com/manticoresoftware/manticoresearch/pull/3586) Support for Debian 10 (Buster) has been discontinued. Debian 10 reached end of life on June 30, 2024. Users are encouraged to upgrade to Debian 11 (Bullseye) or Debian 12 (Bookworm).\n* \u26a0\ufe0f [v13.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.0.0)  Updated the KNN library API to support empty [float_vector](https://manual.manticoresearch.com/Creating_a_table/Data_types#Float-vector) values. This update doesn't change the data format but does increase the Manticore Search / MCL API version.\n* \u26a0\ufe0f [v12.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/12.0.0) [ PR #3516](https://github.com/manticoresoftware/manticoresearch/pull/3516) Fixed a bug with incorrect source and destination row IDs during KNN index training and building. This update doesn't change the data format but increases the Manticore Search / MCL API version.\n* \u26a0\ufe0f [v11.0.0](https://github.com/manticoresoftware/manticoresearch/releases/tag/11.0.0)  Added support for new KNN vector search features like quantization, rescoring, and oversampling. This version changes the KNN data format and the [KNN_DIST() SQL syntax](https://manual.manticoresearch.com/Searching/KNN?client=SQL#KNN-vector-search). The new version can read older data, but older versions won't be able to read the new format.",
        "translations": {
            "chinese": "### \u9519\u8bef\u4fee\u590d\n* \ud83e\udeb2 [v13.6.7](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.7) [ Issue #3524](https://github.com/manticoresoftware/manticoresearch/issues/3524) \u4fee\u590d\u4e86\u4fdd\u5b58\u751f\u6210\u7684\u5d4c\u5165\u5411\u91cf\u65f6\u884c\u5f0f\u5b58\u50a8\u7684\u95ee\u9898\u3002\n* \ud83e\udeb2 [v13.6.6](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.6) [ Issue #3563](https://github.com/manticoresoftware/manticoresearch/issues/3563) \u4fee\u590d\u4e86\u7531\u4e8e\u201c\u672a\u77e5 sysvar\u201d\u9519\u8bef\u5bfc\u81f4 Sequel Ace \u548c\u5176\u4ed6\u96c6\u6210\u5931\u8d25\u7684\u95ee\u9898\u3002\n* \ud83e\udeb2 [v13.6.5](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.5) [ Issue #3467](https://github.com/manticoresoftware/manticoresearch/issues/3467) \u4fee\u590d\u4e86\u7531\u4e8e\u201c\u672a\u77e5 sysvar\u201d\u9519\u8bef\u5bfc\u81f4 DBeaver \u548c\u5176\u4ed6\u96c6\u6210\u5931\u8d25\u7684\u95ee\u9898\u3002\n* \ud83e\udeb2 [v13.6.4](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.4) [ Issue #3524](https://github.com/manticoresoftware/manticoresearch/issues/3524) \u4fee\u590d\u4e86\u8fde\u63a5\u591a\u5b57\u6bb5\u5d4c\u5165\u5411\u91cf\u7684\u95ee\u9898\uff1b\u540c\u65f6\u4fee\u590d\u4e86\u4ece\u67e5\u8be2\u751f\u6210\u5d4c\u5165\u5411\u91cf\u7684\u95ee\u9898\u3002\n* \ud83e\udeb2 [v13.6.3](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.3) [ Issue #3641](https://github.com/manticoresoftware/manticoresearch/issues/3641) \u4fee\u590d\u4e86 13.6.0 \u7248\u672c\u4e2d\u77ed\u8bed\u4e22\u5931\u9664\u7b2c\u4e00\u4e2a\u5916\u6240\u6709\u5e26\u62ec\u53f7\u7684\u5173\u952e\u8bcd\u7684\u9519\u8bef\u3002\n* \ud83e\udeb2 [v13.6.2](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.2) \u4fee\u590d\u4e86 transform_phrase \u4e2d\u7684\u5185\u5b58\u6cc4\u6f0f\u95ee\u9898\u3002\n* \ud83e\udeb2 [v13.6.1](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.6.1) \u4fee\u590d\u4e86 13.6.0 \u7248\u672c\u4e2d\u7684\u5185\u5b58\u6cc4\u6f0f\u95ee\u9898\u3002\n* \ud83e\udeb2 [v13.5.2](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.5.2) [ Issue #3651](https://github.com/manticoresoftware/manticoresearch/issues/3651) \u4fee\u590d\u4e86\u4e0e\u5168\u6587\u641c\u7d22\u6a21\u7cca\u6d4b\u8bd5\u76f8\u5173\u7684\u66f4\u591a\u95ee\u9898\u3002\n* \ud83e\udeb2 [v13.5.1](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.5.1) [ Issue #3560](https://github.com/manticoresoftware/manticoresearch/issues/3560) \u4fee\u590d\u4e86 OPTIMIZE TABLE \u5728 KNN \u6570\u636e\u60c5\u51b5\u4e0b\u53ef\u80fd\u65e0\u9650\u6302\u8d77\u7684\u60c5\u51b5\u3002\n* \ud83e\udeb2 [v13.4.2](https://github.com/manticoresoftware/manticoresearch/releases/tag/13.4.2) [ Issue #2544](https://github.com/manticoresoftware/manticoresearch/issues/2544) \u4fee\u590d\u4e86\u6dfb\u52a0 float_vector \u5217\u53ef\u80fd\u5bfc\u81f4\u7d22\u5f15\u635f\u574f\
Download .txt
gitextract_9gwz_73y/

├── .clt/
│   ├── checkers/
│   │   ├── contains
│   │   ├── ignore
│   │   └── something
│   └── patterns
├── .cursorignore
├── .editorconfig
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   ├── feature_request.yml
│   │   └── support_request.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── stale.yml
│   └── workflows/
│       ├── build_template.yml
│       ├── check_docs.yml
│       ├── checklist_validator.yml
│       ├── clt_nightly.yml
│       ├── clt_tests.yml
│       ├── coverage.yml
│       ├── deploy_docs.yml
│       ├── nightly_dumps.yml
│       ├── nightly_fuzzer.yml
│       ├── nightly_integration.yml
│       ├── nightly_memleaks.yml
│       ├── pack_publish.yml
│       ├── pack_publish_galera.yml
│       ├── test.yml
│       ├── test_template.yml
│       ├── trigger_docs_check.yml
│       └── win_test_template.yml
├── .gitignore
├── .gitlab-ci.yml
├── .gitmodules
├── .noindex
├── .translation-cache/
│   ├── Changelog.md.json
│   ├── Connecting_to_the_server/
│   │   ├── HTTP.md.json
│   │   └── MySQL_protocol.md.json
│   ├── Connecting_to_the_server.md.json
│   ├── Creating_a_cluster/
│   │   ├── Adding_a_new_node.md.json
│   │   ├── Creating_a_cluster.md.json
│   │   ├── Remote_nodes/
│   │   │   ├── Load_balancing.md.json
│   │   │   └── Mirroring.md.json
│   │   ├── Remote_nodes.md.json
│   │   └── Setting_up_replication/
│   │       ├── Adding_and_removing_a_table_from_a_replication_cluster.md.json
│   │       ├── Cluster_recovery.md.json
│   │       ├── Creating_a_replication_cluster.md.json
│   │       ├── Deleting_a_replication_cluster.md.json
│   │       ├── Joining_a_replication_cluster.md.json
│   │       ├── Managing_replication_nodes.md.json
│   │       ├── Replication_cluster_status.md.json
│   │       ├── Restarting_a_cluster.md.json
│   │       └── Setting_up_replication.md.json
│   ├── Creating_a_table/
│   │   ├── Creating_a_distributed_table/
│   │   │   ├── Creating_a_distributed_table.md.json
│   │   │   ├── Creating_a_local_distributed_table.md.json
│   │   │   └── Remote_tables.md.json
│   │   ├── Data_types.md.json
│   │   ├── Local_tables/
│   │   │   ├── Percolate_table.md.json
│   │   │   ├── Plain_and_real-time_table_settings.md.json
│   │   │   ├── Plain_table.md.json
│   │   │   ├── Real-time_table.md.json
│   │   │   └── Template_table.md.json
│   │   ├── Local_tables.md.json
│   │   └── NLP_and_tokenization/
│   │       ├── Advanced_HTML_tokenization.md.json
│   │       ├── Data_tokenization.md.json
│   │       ├── Exceptions.md.json
│   │       ├── Ignoring_stop-words.md.json
│   │       ├── Languages_with_continuous_scripts.md.json
│   │       ├── Low-level_tokenization.md.json
│   │       ├── Morphology.md.json
│   │       ├── Supported_languages.md.json
│   │       ├── Wildcard_searching_settings.md.json
│   │       └── Wordforms.md.json
│   ├── Creating_a_table.md.json
│   ├── Data_creation_and_modification/
│   │   ├── Adding_data_from_external_storages/
│   │   │   ├── Adding_data_to_tables/
│   │   │   │   ├── Attaching_one_table_to_another.md.json
│   │   │   │   ├── Importing_table.md.json
│   │   │   │   ├── Killlist_in_plain_tables.md.json
│   │   │   │   └── Merging_tables.md.json
│   │   │   ├── Fetching_from_CSV,TSV.md.json
│   │   │   ├── Fetching_from_XML_streams.md.json
│   │   │   ├── Fetching_from_databases/
│   │   │   │   ├── Database_connection.md.json
│   │   │   │   ├── Execution_of_fetch_queries.md.json
│   │   │   │   ├── Introduction.md.json
│   │   │   │   ├── Processing_fetched_data.md.json
│   │   │   │   └── Ranged_queries.md.json
│   │   │   ├── Main_delta.md.json
│   │   │   ├── Plain_tables_creation.md.json
│   │   │   └── Rotating_a_table.md.json
│   │   ├── Adding_data_from_external_storages.md.json
│   │   ├── Adding_documents_to_a_table/
│   │   │   ├── Adding_documents_to_a_real-time_table.md.json
│   │   │   └── Adding_rules_to_a_percolate_table.md.json
│   │   ├── Data_creation_and_modification.md.json
│   │   ├── Deleting_documents.md.json
│   │   ├── Transactions.md.json
│   │   └── Updating_documents/
│   │       ├── REPLACE.md.json
│   │       ├── REPLACE_vs_UPDATE.md.json
│   │       └── UPDATE.md.json
│   ├── Deleting_a_table.md.json
│   ├── Emptying_a_table.md.json
│   ├── Extensions/
│   │   ├── FEDERATED.md.json
│   │   ├── SphinxSE.md.json
│   │   └── UDFs_and_Plugins/
│   │       ├── Listing_plugins.md.json
│   │       ├── Plugins/
│   │       │   ├── Creating_a_plugin.md.json
│   │       │   ├── Deleting_a_plugin.md.json
│   │       │   ├── Enabling_and_disabling_buddy_plugins.md.json
│   │       │   ├── Ranker_plugins.md.json
│   │       │   ├── Reloading_plugins.md.json
│   │       │   └── Token_filter_plugins.md.json
│   │       ├── UDF/
│   │       │   ├── Creating_a_function.md.json
│   │       │   └── Deleting_a_function.md.json
│   │       ├── UDF.md.json
│   │       └── UDFs_and_Plugins.md.json
│   ├── Functions/
│   │   ├── Arrays_and_conditions_functions.md.json
│   │   ├── Date_and_time_functions.md.json
│   │   ├── Geo_spatial_functions.md.json
│   │   ├── Mathematical_functions.md.json
│   │   ├── Other_functions.md.json
│   │   ├── Searching_and_ranking_functions.md.json
│   │   ├── String_functions.md.json
│   │   └── Type_casting_functions.md.json
│   ├── Functions.md.json
│   ├── Installation/
│   │   ├── Compiling_from_sources.md.json
│   │   ├── Debian_and_Ubuntu.md.json
│   │   ├── Docker.md.json
│   │   ├── Installation.md.json
│   │   ├── MacOS.md.json
│   │   ├── Manticore_Buddy.md.json
│   │   ├── Migration_from_Sphinx.md.json
│   │   ├── RHEL_and_Centos.md.json
│   │   └── Windows.md.json
│   ├── Integration/
│   │   ├── Apache_Superset.md.json
│   │   ├── DBeaver.md.json
│   │   ├── Filebeat.md.json
│   │   ├── Fluentbit.md.json
│   │   ├── Grafana.md.json
│   │   ├── Kafka.md.json
│   │   ├── Kibana.md.json
│   │   ├── Logstash.md.json
│   │   └── Vectordev.md.json
│   ├── Introduction.md.json
│   ├── Listing_tables.md.json
│   ├── Logging/
│   │   ├── Binary_logging.md.json
│   │   ├── Docker_logging.md.json
│   │   ├── Query_logging.md.json
│   │   ├── Rotating_query_and_server_logs.md.json
│   │   └── Server_logging.md.json
│   ├── Miscellaneous_tools.md.json
│   ├── Node_info_and_management/
│   │   ├── KILL.md.json
│   │   ├── Node_status.md.json
│   │   ├── Profiling/
│   │   │   ├── Query_plan.md.json
│   │   │   └── Query_profile.md.json
│   │   ├── SHOW_META.md.json
│   │   ├── SHOW_QUERIES.md.json
│   │   ├── SHOW_THREADS.md.json
│   │   ├── SHOW_VARIABLES.md.json
│   │   ├── SHOW_VERSION.md.json
│   │   ├── SHOW_WARNINGS.md.json
│   │   └── Table_settings_and_status/
│   │       ├── SHOW_TABLE_INDEXES.md.json
│   │       ├── SHOW_TABLE_SETTINGS.md.json
│   │       └── SHOW_TABLE_STATUS.md.json
│   ├── Openapi.md.json
│   ├── Quick_start_guide.md.json
│   ├── README.md.json
│   ├── Read_this_first.md.json
│   ├── References.md.json
│   ├── Reporting_bugs.md.json
│   ├── Searching/
│   │   ├── Autocomplete.md.json
│   │   ├── Collations.md.json
│   │   ├── Cost_based_optimizer.md.json
│   │   ├── Distributed_searching.md.json
│   │   ├── Expressions.md.json
│   │   ├── Faceted_search.md.json
│   │   ├── Filters.md.json
│   │   ├── Full_text_matching/
│   │   │   ├── Basic_usage.md.json
│   │   │   ├── Boolean_optimization.md.json
│   │   │   ├── Escaping.md.json
│   │   │   ├── Operators.md.json
│   │   │   └── Profiling.md.json
│   │   ├── Geo_search.md.json
│   │   ├── Grouping.md.json
│   │   ├── Highlighting.md.json
│   │   ├── Intro.md.json
│   │   ├── Joining.md.json
│   │   ├── KNN.md.json
│   │   ├── Multi-queries.md.json
│   │   ├── Options.md.json
│   │   ├── Pagination.md.json
│   │   ├── Percolate_query.md.json
│   │   ├── Query_cache.md.json
│   │   ├── Search_results.md.json
│   │   ├── Sorting_and_ranking.md.json
│   │   ├── Spell_correction.md.json
│   │   └── Sub-selects.md.json
│   ├── Securing_and_compacting_a_table/
│   │   ├── Backup_and_restore.md.json
│   │   ├── Compacting_a_table.md.json
│   │   ├── Flushing_RAM_chunk_to_a_new_disk_chunk.md.json
│   │   ├── Flushing_RAM_chunk_to_disk.md.json
│   │   ├── Flushing_attributes.md.json
│   │   ├── Flushing_hostnames.md.json
│   │   ├── Freezing_and_locking_a_table.md.json
│   │   ├── Isolation_during_flushing_and_merging.md.json
│   │   └── RT_table_structure.md.json
│   ├── Security/
│   │   ├── Read_only.md.json
│   │   └── SSL.md.json
│   ├── Server_settings/
│   │   ├── Comments.md.json
│   │   ├── Common.md.json
│   │   ├── Inheritance_of_index_and_source_declarations.md.json
│   │   ├── Scripted_configuration.md.json
│   │   ├── Searchd.md.json
│   │   ├── Setting_variables_online.md.json
│   │   └── Special_suffixes.md.json
│   ├── Starting_the_server/
│   │   ├── Docker.md.json
│   │   ├── Linux.md.json
│   │   ├── MacOS.md.json
│   │   ├── Manually.md.json
│   │   └── Windows.md.json
│   ├── Starting_the_server.md.json
│   ├── Telemetry.md.json
│   └── Updating_table_schema_and_settings.md.json
├── 116.conf
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── INSTALL
├── LICENSE
├── README.md
├── TESTING.md
├── actions/
│   ├── checklist-validator/
│   │   └── action.yml
│   └── update-deps/
│       └── action.yml
├── api/
│   ├── lgpl-3.0.txt
│   ├── libsphinxclient/
│   │   ├── CMakeLists.txt
│   │   ├── COPYING
│   │   ├── README
│   │   ├── smoke.cmake
│   │   ├── smoke_data.csv
│   │   ├── smoke_ref.txt
│   │   ├── smoke_test.conf
│   │   ├── smoke_test.sh
│   │   ├── sphinxclient.c
│   │   ├── sphinxclient.h
│   │   └── test.c
│   ├── ruby/
│   │   ├── README.rdoc
│   │   ├── Rakefile
│   │   ├── init.rb
│   │   ├── install.rb
│   │   ├── lib/
│   │   │   ├── sphinx/
│   │   │   │   ├── client.rb
│   │   │   │   ├── request.rb
│   │   │   │   └── response.rb
│   │   │   └── sphinx.rb
│   │   ├── spec/
│   │   │   ├── client_response_spec.rb
│   │   │   ├── client_spec.rb
│   │   │   ├── fixtures/
│   │   │   │   ├── default_search.php
│   │   │   │   ├── default_search_index.php
│   │   │   │   ├── excerpt_custom.php
│   │   │   │   ├── excerpt_default.php
│   │   │   │   ├── excerpt_flags.php
│   │   │   │   ├── field_weights.php
│   │   │   │   ├── filter.php
│   │   │   │   ├── filter_exclude.php
│   │   │   │   ├── filter_float_range.php
│   │   │   │   ├── filter_float_range_exclude.php
│   │   │   │   ├── filter_range.php
│   │   │   │   ├── filter_range_exclude.php
│   │   │   │   ├── filter_range_int64.php
│   │   │   │   ├── filter_ranges.php
│   │   │   │   ├── filters.php
│   │   │   │   ├── filters_different.php
│   │   │   │   ├── geo_anchor.php
│   │   │   │   ├── group_by_attr.php
│   │   │   │   ├── group_by_attrpair.php
│   │   │   │   ├── group_by_day.php
│   │   │   │   ├── group_by_day_sort.php
│   │   │   │   ├── group_by_month.php
│   │   │   │   ├── group_by_week.php
│   │   │   │   ├── group_by_year.php
│   │   │   │   ├── group_distinct.php
│   │   │   │   ├── id_range.php
│   │   │   │   ├── id_range64.php
│   │   │   │   ├── index_weights.php
│   │   │   │   ├── keywords.php
│   │   │   │   ├── limits.php
│   │   │   │   ├── limits_cutoff.php
│   │   │   │   ├── limits_max.php
│   │   │   │   ├── limits_max_cutoff.php
│   │   │   │   ├── match_all.php
│   │   │   │   ├── match_any.php
│   │   │   │   ├── match_boolean.php
│   │   │   │   ├── match_extended.php
│   │   │   │   ├── match_extended2.php
│   │   │   │   ├── match_fullscan.php
│   │   │   │   ├── match_phrase.php
│   │   │   │   ├── max_query_time.php
│   │   │   │   ├── miltiple_queries.php
│   │   │   │   ├── ranking_bm25.php
│   │   │   │   ├── ranking_none.php
│   │   │   │   ├── ranking_proximity.php
│   │   │   │   ├── ranking_proximity_bm25.php
│   │   │   │   ├── ranking_wordcount.php
│   │   │   │   ├── retries.php
│   │   │   │   ├── retries_delay.php
│   │   │   │   ├── select.php
│   │   │   │   ├── set_override.php
│   │   │   │   ├── sort_attr_asc.php
│   │   │   │   ├── sort_attr_desc.php
│   │   │   │   ├── sort_expr.php
│   │   │   │   ├── sort_extended.php
│   │   │   │   ├── sort_relevance.php
│   │   │   │   ├── sort_time_segments.php
│   │   │   │   ├── sphinxapi.php
│   │   │   │   ├── update_attributes.php
│   │   │   │   ├── update_attributes_mva.php
│   │   │   │   └── weights.php
│   │   │   └── sphinx/
│   │   │       ├── sphinx-id64.conf
│   │   │       ├── sphinx.conf
│   │   │       └── sphinx_test.sql
│   │   ├── sphinx.yml.tpl
│   │   ├── tasks/
│   │   │   └── sphinx.rake
│   │   └── test.rb
│   └── sphinxapi.php
├── cmake/
│   ├── CommonInfo.cmake
│   ├── FindMysql.cmake
│   ├── FindZSTD.cmake
│   ├── Findre2.cmake
│   ├── Findstemmer.cmake
│   ├── GetCCTZ.cmake
│   ├── GetColumnar.cmake
│   ├── GetGALERA.cmake
│   ├── GetGooglebench.cmake
│   ├── GetGoogletest.cmake
│   ├── GetICU.cmake
│   ├── GetJIEBA.cmake
│   ├── GetNLJSON.cmake
│   ├── GetRBitmap.cmake
│   ├── GetRE2.cmake
│   ├── GetSSL.cmake
│   ├── GetSTEMMER.cmake
│   ├── GetUniAlgo.cmake
│   ├── GetVCPKG.cmake
│   ├── GetxxHash.cmake
│   ├── SetBuildType.cmake
│   ├── banner.cmake
│   ├── builds/
│   │   ├── CommonDeb.cmake
│   │   ├── CommonRpm.cmake
│   │   ├── VersionDeps.cmake
│   │   ├── build_bionic.cmake
│   │   ├── build_bookworm.cmake
│   │   ├── build_bullseye.cmake
│   │   ├── build_buster.cmake
│   │   ├── build_debian.cmake
│   │   ├── build_default.cmake
│   │   ├── build_focal.cmake
│   │   ├── build_jammy.cmake
│   │   ├── build_macosbrew.cmake
│   │   ├── build_rhel.cmake
│   │   ├── build_rhel10.cmake
│   │   ├── build_rhel8.cmake
│   │   ├── build_rhel9.cmake
│   │   ├── build_stretch.cmake
│   │   ├── build_windows.cmake
│   │   └── build_xenial.cmake
│   ├── check_atomic_intrinsics.cmake
│   ├── check_const_iconv.cmake
│   ├── check_rwlock_prefer_writer.cmake
│   ├── check_unaligned_ram_access.cmake
│   ├── check_vitable_pthread_setname_np.cmake
│   ├── columnar-imported.cmake.in
│   ├── external-build.cmake.in
│   ├── fixup_test_name.cmake
│   ├── galera-copy-package.sh.in
│   ├── galera-imported.cmake.in
│   ├── galera-package.cmake.in
│   ├── gbench-imported.cmake.in
│   ├── genheader.cmake
│   ├── gtest-imported.cmake.in
│   ├── helpers.cmake
│   ├── init_cache_settings.cmake
│   ├── mincore_test.cmake
│   ├── mybison.cmake
│   ├── printers.cmake
│   ├── setup_distribution_build.cmake
│   ├── split.cmake
│   └── update_bundle.cmake
├── columnar_src.txt
├── compare_manuals.sh
├── component-licenses/
│   ├── FindMysql.cmake-license-gplv2floss
│   ├── README.md
│   ├── cjson-license
│   ├── http_parser-license
│   ├── libmysqlclient-license
│   ├── lz4-license
│   ├── sphinx-license
│   └── xxhash-license
├── config/
│   ├── config_cmake.h.in
│   └── config_indexer_cmake.h.in
├── configure
├── contrib/
│   ├── README
│   └── scripts/
│       ├── cachecleanup.sh
│       └── searchd
├── deps.txt
├── dist/
│   ├── 70-manticore.conf
│   ├── CPackOptions.cmake.in
│   ├── build_dockers/
│   │   ├── README.md
│   │   ├── cross/
│   │   │   ├── external_toolchain/
│   │   │   │   ├── Dockerfile
│   │   │   │   ├── Dockerfile_cmake3243
│   │   │   │   └── entry_point.sh
│   │   │   ├── freebsd.cmake
│   │   │   ├── linux.cmake
│   │   │   ├── osx.cmake
│   │   │   ├── sysroots/
│   │   │   │   ├── README.md
│   │   │   │   ├── boost_include.tar.xz.md
│   │   │   │   ├── boost_library.sh
│   │   │   │   ├── boost_macos__.tar.xz.md
│   │   │   │   ├── boost_windows_x64.tar.xz.md
│   │   │   │   ├── build_alma10.sh
│   │   │   │   ├── build_alma9.sh
│   │   │   │   ├── build_bionic.sh
│   │   │   │   ├── build_bookworm.sh
│   │   │   │   ├── build_bullseye.sh
│   │   │   │   ├── build_buster.sh
│   │   │   │   ├── build_centos8.sh
│   │   │   │   ├── build_focal.sh
│   │   │   │   ├── build_jammy.sh
│   │   │   │   ├── debian.sh
│   │   │   │   ├── finalize.sh
│   │   │   │   ├── in_debian.sh
│   │   │   │   ├── in_rhel10.sh
│   │   │   │   ├── in_rhel8.sh
│   │   │   │   ├── in_rhel9.sh
│   │   │   │   ├── mkboost.sh
│   │   │   │   ├── mksysroot.sh
│   │   │   │   ├── mksysrootrhel.sh
│   │   │   │   ├── packages_bionic.txt
│   │   │   │   ├── packages_bookworm.txt
│   │   │   │   ├── packages_bullseye.txt
│   │   │   │   ├── packages_buster.txt
│   │   │   │   ├── packages_focal.txt
│   │   │   │   ├── packages_jammy.txt
│   │   │   │   ├── packages_rhel10.txt
│   │   │   │   ├── packages_rhel8.txt
│   │   │   │   ├── packages_rhel9.txt
│   │   │   │   ├── redhat.sh
│   │   │   │   ├── sysroot_freebsd13_x86_64.tar.xz.md
│   │   │   │   ├── sysroot_macos__.tar.xz.md
│   │   │   │   └── sysroot_windows_x64.tar.xz.md
│   │   │   ├── triplets/
│   │   │   │   ├── README.md
│   │   │   │   ├── arm64-linux.cmake
│   │   │   │   ├── arm64-osx.cmake
│   │   │   │   ├── x64-freebsd.cmake
│   │   │   │   ├── x64-linux.cmake
│   │   │   │   └── x64-osx.cmake
│   │   │   ├── windows-cl.cmake
│   │   │   └── windows.cmake
│   │   ├── nsis/
│   │   │   ├── Dockerfile
│   │   │   ├── deploy.sh
│   │   │   ├── nsis_src_parser.sh
│   │   │   └── nsisscript.nsi
│   │   └── retired/
│   │       ├── README.md
│   │       ├── aarch64/
│   │       │   ├── bionic/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── buildall.sh
│   │       │   ├── bullseye/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── buster/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── centos7/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── centos8/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── focal/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   ├── stretch/
│   │       │   │   ├── base_build/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── boost_175/
│   │       │   │   │   └── Dockerfile
│   │       │   │   ├── build.sh
│   │       │   │   ├── build_base.sh
│   │       │   │   ├── build_boost.sh
│   │       │   │   ├── build_cmake.sh
│   │       │   │   ├── cmake_320/
│   │       │   │   │   └── Dockerfile
│   │       │   │   └── distr.txt
│   │       │   └── xenial/
│   │       │       ├── base_build/
│   │       │       │   └── Dockerfile
│   │       │       ├── boost_175/
│   │       │       │   └── Dockerfile
│   │       │       ├── build.sh
│   │       │       ├── build_base.sh
│   │       │       ├── build_boost.sh
│   │       │       ├── build_cmake.sh
│   │       │       ├── cmake_320/
│   │       │       │   └── Dockerfile
│   │       │       └── distr.txt
│   │       ├── bionic/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── base_build_arm/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175_arm/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320_arm/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── buildall.sh
│   │       ├── bullseye/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── buster/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── centos7/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_7/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── centos8/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_11/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── cross/
│   │       │   ├── base_clang12/
│   │       │   │   └── Dockerfile
│   │       │   ├── base_clang13/
│   │       │   │   └── Dockerfile
│   │       │   ├── bigsur_arm64/
│   │       │   │   ├── Dockerfile
│   │       │   │   └── homebrew_arm64.tar.xz.md
│   │       │   ├── bigsur_sdk/
│   │       │   │   ├── Dockerfile
│   │       │   │   ├── MacOSX11.3.sdk.tar.xz.md
│   │       │   │   └── toolchain.cmake
│   │       │   ├── bigsur_x64/
│   │       │   │   ├── Dockerfile
│   │       │   │   └── homebrew_x64.tar.xz.md
│   │       │   ├── build
│   │       │   ├── build_cross/
│   │       │   │   ├── Dockerfile
│   │       │   │   ├── boost_include.tar.xz.md
│   │       │   │   ├── entry_point.sh
│   │       │   │   └── toolchain.cmake
│   │       │   ├── centos_rhel/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake232/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake323/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_clang/
│   │       │   │   └── Dockerfile
│   │       │   ├── freebsd_13/
│   │       │   │   ├── Dockerfile
│   │       │   │   ├── sysroot_fbsd_13.md
│   │       │   │   └── toolchain.cmake
│   │       │   ├── sysroots/
│   │       │   │   ├── build_stretch.sh
│   │       │   │   ├── build_xenial.sh
│   │       │   │   └── stretch.apt
│   │       │   ├── toolchain_clang/
│   │       │   │   └── Dockerfile
│   │       │   ├── ubuntu_debian/
│   │       │   │   ├── Dockerfile
│   │       │   │   └── entry_point.sh
│   │       │   ├── ubuntu_debian_amd64/
│   │       │   │   ├── Dockerfile
│   │       │   │   └── some_name_x86_64.tar.xz.md
│   │       │   └── ubuntu_debian_arm64/
│   │       │       ├── Dockerfile
│   │       │       └── some_name_aarc64.tar.xz.md
│   │       ├── focal/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── jammy/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_178/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_323/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       ├── stretch/
│   │       │   ├── base_build/
│   │       │   │   └── Dockerfile
│   │       │   ├── boost_175/
│   │       │   │   └── Dockerfile
│   │       │   ├── build.sh
│   │       │   ├── build_base.sh
│   │       │   ├── build_boost.sh
│   │       │   ├── build_clang.sh
│   │       │   ├── build_cmake.sh
│   │       │   ├── clang_13/
│   │       │   │   └── Dockerfile
│   │       │   ├── cmake_320/
│   │       │   │   └── Dockerfile
│   │       │   └── distr.txt
│   │       └── xenial/
│   │           ├── base_build/
│   │           │   └── Dockerfile
│   │           ├── boost_175/
│   │           │   └── Dockerfile
│   │           ├── build.sh
│   │           ├── build_base.sh
│   │           ├── build_boost.sh
│   │           ├── build_clang.sh
│   │           ├── build_cmake.sh
│   │           ├── clang_12/
│   │           │   └── Dockerfile
│   │           ├── cmake_320/
│   │           │   └── Dockerfile
│   │           └── distr.txt
│   ├── bundle/
│   │   └── BUNDLE_LICENSES.in
│   ├── check_deps_in_repos.sh
│   ├── deb/
│   │   ├── README.Debian.in
│   │   ├── README.Debian.in.prepare.php
│   │   ├── conffiles-common.in
│   │   ├── conffiles-server.in
│   │   ├── conffiles-tools.in
│   │   ├── manticore-indexer.service.in
│   │   ├── manticore-indexer@.service.in
│   │   ├── manticore-indexer_global.default.in
│   │   ├── manticore.default.in
│   │   ├── manticore.logrotate.in
│   │   ├── manticore.service.in
│   │   ├── manticore_new_cluster
│   │   ├── postinst-common.in
│   │   ├── postinst-core.in
│   │   ├── postinst-server.head
│   │   ├── postinst.debian.tail
│   │   ├── postinst.in.in
│   │   ├── postinst.ubuntu.tail
│   │   ├── postrm-common.in
│   │   ├── postrm-core.in
│   │   ├── postrm-server.in
│   │   ├── prerm.debian.in
│   │   └── prerm.ubuntu.in
│   ├── dockerhub_deploy.sh
│   ├── download_bundle_deps.sh
│   ├── download_bundle_language_packs.sh
│   ├── gitlab-release.yml
│   ├── nsis-release.yml
│   ├── rpm/
│   │   ├── manticore-common.post.in
│   │   ├── manticore-core.post.in
│   │   ├── manticore-indexer.service.in
│   │   ├── manticore-indexer@.service.in
│   │   ├── manticore-indexer_global.default.in
│   │   ├── manticore-server.post.in
│   │   ├── manticore-tools.preun
│   │   ├── manticore.logrotate.in
│   │   ├── manticore.service.in
│   │   ├── manticore.tmpfiles.in
│   │   └── manticore_new_cluster
│   ├── test_kit_docker_build.sh
│   └── test_kit_docker_push.sh
├── doc/
│   ├── binary-logging.md
│   ├── indexer.1
│   ├── indextool.1
│   ├── internal-binary-protocol.md
│   ├── internals-coding-standard.txt
│   ├── internals-format-versions.txt
│   ├── internals-index-format.md
│   ├── md2man.bash
│   └── searchd.1
├── docker-compose-test.yml
├── example.sql
├── galera_packaging/
│   ├── CommonDeb.cmake
│   ├── CommonRpm.cmake
│   ├── README.md
│   ├── build_bionic.cmake
│   ├── build_bookworm.cmake
│   ├── build_bullseye.cmake
│   ├── build_buster.cmake
│   ├── build_focal.cmake
│   ├── build_jammy.cmake
│   ├── build_macos.cmake
│   ├── build_rhel10.cmake
│   ├── build_rhel7.cmake
│   ├── build_rhel8.cmake
│   ├── build_rhel9.cmake
│   ├── description.txt
│   ├── metainfo.cmake
│   ├── packaging.cmake
│   └── tmp
├── libicu/
│   └── CMakeLists.txt
├── libre2/
│   ├── CMakeLists.txt
│   └── libre2.patch
├── libstemmer_c/
│   ├── CMakeLists.txt
│   └── README
├── manticore.conf.in
├── manual/
│   ├── chinese/
│   │   ├── Changelog.md
│   │   ├── Connecting_to_the_server/
│   │   │   ├── HTTP.md
│   │   │   └── MySQL_protocol.md
│   │   ├── Connecting_to_the_server.md
│   │   ├── Creating_a_cluster/
│   │   │   ├── Adding_a_new_node.md
│   │   │   ├── Creating_a_cluster.md
│   │   │   ├── Remote_nodes/
│   │   │   │   ├── Load_balancing.md
│   │   │   │   └── Mirroring.md
│   │   │   ├── Remote_nodes.md
│   │   │   └── Setting_up_replication/
│   │   │       ├── Adding_and_removing_a_table_from_a_replication_cluster.md
│   │   │       ├── Cluster_recovery.md
│   │   │       ├── Creating_a_replication_cluster.md
│   │   │       ├── Deleting_a_replication_cluster.md
│   │   │       ├── Joining_a_replication_cluster.md
│   │   │       ├── Managing_replication_nodes.md
│   │   │       ├── Replication_cluster_status.md
│   │   │       ├── Restarting_a_cluster.md
│   │   │       └── Setting_up_replication.md
│   │   ├── Creating_a_table/
│   │   │   ├── Creating_a_distributed_table/
│   │   │   │   ├── Creating_a_distributed_table.md
│   │   │   │   ├── Creating_a_local_distributed_table.md
│   │   │   │   └── Remote_tables.md
│   │   │   ├── Data_types.md
│   │   │   ├── Local_tables/
│   │   │   │   ├── Percolate_table.md
│   │   │   │   ├── Plain_and_real-time_table_settings.md
│   │   │   │   ├── Plain_table.md
│   │   │   │   ├── Real-time_table.md
│   │   │   │   └── Template_table.md
│   │   │   ├── Local_tables.md
│   │   │   └── NLP_and_tokenization/
│   │   │       ├── Advanced_HTML_tokenization.md
│   │   │       ├── Data_tokenization.md
│   │   │       ├── Exceptions.md
│   │   │       ├── Ignoring_stop-words.md
│   │   │       ├── Languages_with_continuous_scripts.md
│   │   │       ├── Low-level_tokenization.md
│   │   │       ├── Morphology.md
│   │   │       ├── Supported_languages.md
│   │   │       ├── Wildcard_searching_settings.md
│   │   │       └── Wordforms.md
│   │   ├── Creating_a_table.md
│   │   ├── Data_creation_and_modification/
│   │   │   ├── Adding_data_from_external_storages/
│   │   │   │   ├── Adding_data_to_tables/
│   │   │   │   │   ├── Attaching_one_table_to_another.md
│   │   │   │   │   ├── Importing_table.md
│   │   │   │   │   ├── Killlist_in_plain_tables.md
│   │   │   │   │   └── Merging_tables.md
│   │   │   │   ├── Fetching_from_CSV,TSV.md
│   │   │   │   ├── Fetching_from_XML_streams.md
│   │   │   │   ├── Fetching_from_databases/
│   │   │   │   │   ├── Database_connection.md
│   │   │   │   │   ├── Execution_of_fetch_queries.md
│   │   │   │   │   ├── Introduction.md
│   │   │   │   │   ├── Processing_fetched_data.md
│   │   │   │   │   └── Ranged_queries.md
│   │   │   │   ├── Main_delta.md
│   │   │   │   ├── Plain_tables_creation.md
│   │   │   │   └── Rotating_a_table.md
│   │   │   ├── Adding_data_from_external_storages.md
│   │   │   ├── Adding_documents_to_a_table/
│   │   │   │   ├── Adding_documents_to_a_real-time_table.md
│   │   │   │   └── Adding_rules_to_a_percolate_table.md
│   │   │   ├── Data_creation_and_modification.md
│   │   │   ├── Deleting_documents.md
│   │   │   ├── Transactions.md
│   │   │   └── Updating_documents/
│   │   │       ├── REPLACE.md
│   │   │       ├── REPLACE_vs_UPDATE.md
│   │   │       └── UPDATE.md
│   │   ├── Deleting_a_table.md
│   │   ├── Emptying_a_table.md
│   │   ├── Extensions/
│   │   │   ├── FEDERATED.md
│   │   │   ├── SphinxSE.md
│   │   │   └── UDFs_and_Plugins/
│   │   │       ├── Listing_plugins.md
│   │   │       ├── Plugins/
│   │   │       │   ├── Creating_a_plugin.md
│   │   │       │   ├── Deleting_a_plugin.md
│   │   │       │   ├── Enabling_and_disabling_buddy_plugins.md
│   │   │       │   ├── Ranker_plugins.md
│   │   │       │   ├── Reloading_plugins.md
│   │   │       │   └── Token_filter_plugins.md
│   │   │       ├── UDF/
│   │   │       │   ├── Creating_a_function.md
│   │   │       │   └── Deleting_a_function.md
│   │   │       ├── UDF.md
│   │   │       └── UDFs_and_Plugins.md
│   │   ├── Functions/
│   │   │   ├── Arrays_and_conditions_functions.md
│   │   │   ├── Date_and_time_functions.md
│   │   │   ├── Geo_spatial_functions.md
│   │   │   ├── Mathematical_functions.md
│   │   │   ├── Other_functions.md
│   │   │   ├── Searching_and_ranking_functions.md
│   │   │   ├── String_functions.md
│   │   │   └── Type_casting_functions.md
│   │   ├── Functions.md
│   │   ├── Installation/
│   │   │   ├── Compiling_from_sources.md
│   │   │   ├── Debian_and_Ubuntu.md
│   │   │   ├── Docker.md
│   │   │   ├── Installation.md
│   │   │   ├── MacOS.md
│   │   │   ├── Manticore_Buddy.md
│   │   │   ├── Migration_from_Sphinx.md
│   │   │   ├── RHEL_and_Centos.md
│   │   │   └── Windows.md
│   │   ├── Integration/
│   │   │   ├── Apache_Superset.md
│   │   │   ├── DBeaver.md
│   │   │   ├── Filebeat.md
│   │   │   ├── Fluentbit.md
│   │   │   ├── Grafana.md
│   │   │   ├── Kafka.md
│   │   │   ├── Kibana.md
│   │   │   ├── Logstash.md
│   │   │   └── Vectordev.md
│   │   ├── Introduction.md
│   │   ├── Listing_tables.md
│   │   ├── Logging/
│   │   │   ├── Binary_logging.md
│   │   │   ├── Docker_logging.md
│   │   │   ├── Query_logging.md
│   │   │   ├── Rotating_query_and_server_logs.md
│   │   │   └── Server_logging.md
│   │   ├── Miscellaneous_tools.md
│   │   ├── Node_info_and_management/
│   │   │   ├── KILL.md
│   │   │   ├── Node_status.md
│   │   │   ├── Profiling/
│   │   │   │   ├── Query_plan.md
│   │   │   │   └── Query_profile.md
│   │   │   ├── SHOW_META.md
│   │   │   ├── SHOW_QUERIES.md
│   │   │   ├── SHOW_THREADS.md
│   │   │   ├── SHOW_VARIABLES.md
│   │   │   ├── SHOW_VERSION.md
│   │   │   ├── SHOW_WARNINGS.md
│   │   │   └── Table_settings_and_status/
│   │   │       ├── SHOW_TABLE_INDEXES.md
│   │   │       ├── SHOW_TABLE_SETTINGS.md
│   │   │       └── SHOW_TABLE_STATUS.md
│   │   ├── Openapi.md
│   │   ├── Quick_start_guide.md
│   │   ├── README.md
│   │   ├── Read_this_first.md
│   │   ├── References.md
│   │   ├── Reporting_bugs.md
│   │   ├── Searching/
│   │   │   ├── Autocomplete.md
│   │   │   ├── Collations.md
│   │   │   ├── Cost_based_optimizer.md
│   │   │   ├── Distributed_searching.md
│   │   │   ├── Expressions.md
│   │   │   ├── Faceted_search.md
│   │   │   ├── Filters.md
│   │   │   ├── Full_text_matching/
│   │   │   │   ├── Basic_usage.md
│   │   │   │   ├── Boolean_optimization.md
│   │   │   │   ├── Escaping.md
│   │   │   │   ├── Operators.md
│   │   │   │   └── Profiling.md
│   │   │   ├── Geo_search.md
│   │   │   ├── Grouping.md
│   │   │   ├── Highlighting.md
│   │   │   ├── Intro.md
│   │   │   ├── Joining.md
│   │   │   ├── KNN.md
│   │   │   ├── Multi-queries.md
│   │   │   ├── Options.md
│   │   │   ├── Pagination.md
│   │   │   ├── Percolate_query.md
│   │   │   ├── Query_cache.md
│   │   │   ├── Search_results.md
│   │   │   ├── Sorting_and_ranking.md
│   │   │   ├── Spell_correction.md
│   │   │   └── Sub-selects.md
│   │   ├── Securing_and_compacting_a_table/
│   │   │   ├── Backup_and_restore.md
│   │   │   ├── Compacting_a_table.md
│   │   │   ├── Flushing_RAM_chunk_to_a_new_disk_chunk.md
│   │   │   ├── Flushing_RAM_chunk_to_disk.md
│   │   │   ├── Flushing_attributes.md
│   │   │   ├── Flushing_hostnames.md
│   │   │   ├── Freezing_and_locking_a_table.md
│   │   │   ├── Isolation_during_flushing_and_merging.md
│   │   │   └── RT_table_structure.md
│   │   ├── Security/
│   │   │   ├── Read_only.md
│   │   │   └── SSL.md
│   │   ├── Server_settings/
│   │   │   ├── Comments.md
│   │   │   ├── Common.md
│   │   │   ├── Inheritance_of_index_and_source_declarations.md
│   │   │   ├── Scripted_configuration.md
│   │   │   ├── Searchd.md
│   │   │   ├── Setting_variables_online.md
│   │   │   └── Special_suffixes.md
│   │   ├── Starting_the_server/
│   │   │   ├── Docker.md
│   │   │   ├── Linux.md
│   │   │   ├── MacOS.md
│   │   │   ├── Manually.md
│   │   │   └── Windows.md
│   │   ├── Starting_the_server.md
│   │   ├── Telemetry.md
│   │   ├── Updating_table_schema_and_settings.md
│   │   ├── latest_release_version
│   │   └── redirects
│   ├── english/
│   │   ├── Changelog.md
│   │   ├── Connecting_to_the_server/
│   │   │   ├── HTTP.md
│   │   │   └── MySQL_protocol.md
│   │   ├── Connecting_to_the_server.md
│   │   ├── Creating_a_cluster/
│   │   │   ├── Adding_a_new_node.md
│   │   │   ├── Creating_a_cluster.md
│   │   │   ├── Remote_nodes/
│   │   │   │   ├── Load_balancing.md
│   │   │   │   └── Mirroring.md
│   │   │   ├── Remote_nodes.md
│   │   │   └── Setting_up_replication/
│   │   │       ├── Adding_and_removing_a_table_from_a_replication_cluster.md
│   │   │       ├── Cluster_recovery.md
│   │   │       ├── Creating_a_replication_cluster.md
│   │   │       ├── Deleting_a_replication_cluster.md
│   │   │       ├── Joining_a_replication_cluster.md
│   │   │       ├── Managing_replication_nodes.md
│   │   │       ├── Replication_cluster_status.md
│   │   │       ├── Restarting_a_cluster.md
│   │   │       └── Setting_up_replication.md
│   │   ├── Creating_a_table/
│   │   │   ├── Creating_a_distributed_table/
│   │   │   │   ├── Creating_a_distributed_table.md
│   │   │   │   ├── Creating_a_local_distributed_table.md
│   │   │   │   └── Remote_tables.md
│   │   │   ├── Data_types.md
│   │   │   ├── Local_tables/
│   │   │   │   ├── Percolate_table.md
│   │   │   │   ├── Plain_and_real-time_table_settings.md
│   │   │   │   ├── Plain_table.md
│   │   │   │   ├── Real-time_table.md
│   │   │   │   └── Template_table.md
│   │   │   ├── Local_tables.md
│   │   │   └── NLP_and_tokenization/
│   │   │       ├── Advanced_HTML_tokenization.md
│   │   │       ├── Data_tokenization.md
│   │   │       ├── Exceptions.md
│   │   │       ├── Ignoring_stop-words.md
│   │   │       ├── Languages_with_continuous_scripts.md
│   │   │       ├── Low-level_tokenization.md
│   │   │       ├── Morphology.md
│   │   │       ├── Supported_languages.md
│   │   │       ├── Wildcard_searching_settings.md
│   │   │       └── Wordforms.md
│   │   ├── Creating_a_table.md
│   │   ├── Data_creation_and_modification/
│   │   │   ├── Adding_data_from_external_storages/
│   │   │   │   ├── Adding_data_to_tables/
│   │   │   │   │   ├── Attaching_one_table_to_another.md
│   │   │   │   │   ├── Importing_table.md
│   │   │   │   │   ├── Killlist_in_plain_tables.md
│   │   │   │   │   └── Merging_tables.md
│   │   │   │   ├── Fetching_from_CSV,TSV.md
│   │   │   │   ├── Fetching_from_XML_streams.md
│   │   │   │   ├── Fetching_from_databases/
│   │   │   │   │   ├── Database_connection.md
│   │   │   │   │   ├── Execution_of_fetch_queries.md
│   │   │   │   │   ├── Introduction.md
│   │   │   │   │   ├── Processing_fetched_data.md
│   │   │   │   │   └── Ranged_queries.md
│   │   │   │   ├── Main_delta.md
│   │   │   │   ├── Plain_tables_creation.md
│   │   │   │   └── Rotating_a_table.md
│   │   │   ├── Adding_data_from_external_storages.md
│   │   │   ├── Adding_documents_to_a_table/
│   │   │   │   ├── Adding_documents_to_a_real-time_table.md
│   │   │   │   └── Adding_rules_to_a_percolate_table.md
│   │   │   ├── Data_creation_and_modification.md
│   │   │   ├── Deleting_documents.md
│   │   │   ├── Transactions.md
│   │   │   └── Updating_documents/
│   │   │       ├── REPLACE.md
│   │   │       ├── REPLACE_vs_UPDATE.md
│   │   │       └── UPDATE.md
│   │   ├── Deleting_a_table.md
│   │   ├── Emptying_a_table.md
│   │   ├── Extensions/
│   │   │   ├── FEDERATED.md
│   │   │   ├── SphinxSE.md
│   │   │   └── UDFs_and_Plugins/
│   │   │       ├── Listing_plugins.md
│   │   │       ├── Plugins/
│   │   │       │   ├── Creating_a_plugin.md
│   │   │       │   ├── Deleting_a_plugin.md
│   │   │       │   ├── Enabling_and_disabling_buddy_plugins.md
│   │   │       │   ├── Ranker_plugins.md
│   │   │       │   ├── Reloading_plugins.md
│   │   │       │   └── Token_filter_plugins.md
│   │   │       ├── UDF/
│   │   │       │   ├── Creating_a_function.md
│   │   │       │   └── Deleting_a_function.md
│   │   │       ├── UDF.md
│   │   │       └── UDFs_and_Plugins.md
│   │   ├── Functions/
│   │   │   ├── Arrays_and_conditions_functions.md
│   │   │   ├── Date_and_time_functions.md
│   │   │   ├── Geo_spatial_functions.md
│   │   │   ├── Mathematical_functions.md
│   │   │   ├── Other_functions.md
│   │   │   ├── Searching_and_ranking_functions.md
│   │   │   ├── String_functions.md
│   │   │   └── Type_casting_functions.md
│   │   ├── Functions.md
│   │   ├── Installation/
│   │   │   ├── Compiling_from_sources.md
│   │   │   ├── Debian_and_Ubuntu.md
│   │   │   ├── Docker.md
│   │   │   ├── Installation.md
│   │   │   ├── MacOS.md
│   │   │   ├── Manticore_Buddy.md
│   │   │   ├── Migration_from_Sphinx.md
│   │   │   ├── RHEL_and_Centos.md
│   │   │   └── Windows.md
│   │   ├── Integration/
│   │   │   ├── Apache_Superset.md
│   │   │   ├── DBeaver.md
│   │   │   ├── Filebeat.md
│   │   │   ├── Fluentbit.md
│   │   │   ├── Grafana.md
│   │   │   ├── Kafka.md
│   │   │   ├── Kibana.md
│   │   │   ├── Logstash.md
│   │   │   └── Vectordev.md
│   │   ├── Introduction.md
│   │   ├── Listing_tables.md
│   │   ├── Logging/
│   │   │   ├── Binary_logging.md
│   │   │   ├── Docker_logging.md
│   │   │   ├── Query_logging.md
│   │   │   ├── Rotating_query_and_server_logs.md
│   │   │   └── Server_logging.md
│   │   ├── Miscellaneous_tools.md
│   │   ├── Node_info_and_management/
│   │   │   ├── KILL.md
│   │   │   ├── Node_status.md
│   │   │   ├── Profiling/
│   │   │   │   ├── Query_plan.md
│   │   │   │   └── Query_profile.md
│   │   │   ├── SHOW_META.md
│   │   │   ├── SHOW_QUERIES.md
│   │   │   ├── SHOW_THREADS.md
│   │   │   ├── SHOW_VARIABLES.md
│   │   │   ├── SHOW_VERSION.md
│   │   │   ├── SHOW_WARNINGS.md
│   │   │   └── Table_settings_and_status/
│   │   │       ├── SHOW_TABLE_INDEXES.md
│   │   │       ├── SHOW_TABLE_SETTINGS.md
│   │   │       └── SHOW_TABLE_STATUS.md
│   │   ├── Openapi.md
│   │   ├── Quick_start_guide.md
│   │   ├── README.md
│   │   ├── Read_this_first.md
│   │   ├── References.md
│   │   ├── Reporting_bugs.md
│   │   ├── Searching/
│   │   │   ├── Autocomplete.md
│   │   │   ├── Collations.md
│   │   │   ├── Cost_based_optimizer.md
│   │   │   ├── Distributed_searching.md
│   │   │   ├── Expressions.md
│   │   │   ├── Faceted_search.md
│   │   │   ├── Filters.md
│   │   │   ├── Full_text_matching/
│   │   │   │   ├── Basic_usage.md
│   │   │   │   ├── Boolean_optimization.md
│   │   │   │   ├── Escaping.md
│   │   │   │   ├── Operators.md
│   │   │   │   └── Profiling.md
│   │   │   ├── Geo_search.md
│   │   │   ├── Grouping.md
│   │   │   ├── Highlighting.md
│   │   │   ├── Intro.md
│   │   │   ├── Joining.md
│   │   │   ├── KNN.md
│   │   │   ├── Multi-queries.md
│   │   │   ├── Options.md
│   │   │   ├── Pagination.md
│   │   │   ├── Percolate_query.md
│   │   │   ├── Query_cache.md
│   │   │   ├── Search_results.md
│   │   │   ├── Sorting_and_ranking.md
│   │   │   ├── Spell_correction.md
│   │   │   └── Sub-selects.md
│   │   ├── Securing_and_compacting_a_table/
│   │   │   ├── Backup_and_restore.md
│   │   │   ├── Compacting_a_table.md
│   │   │   ├── Flushing_RAM_chunk_to_a_new_disk_chunk.md
│   │   │   ├── Flushing_RAM_chunk_to_disk.md
│   │   │   ├── Flushing_attributes.md
│   │   │   ├── Flushing_hostnames.md
│   │   │   ├── Freezing_and_locking_a_table.md
│   │   │   ├── Isolation_during_flushing_and_merging.md
│   │   │   └── RT_table_structure.md
│   │   ├── Security/
│   │   │   ├── Read_only.md
│   │   │   └── SSL.md
│   │   ├── Server_settings/
│   │   │   ├── Comments.md
│   │   │   ├── Common.md
│   │   │   ├── Inheritance_of_index_and_source_declarations.md
│   │   │   ├── Scripted_configuration.md
│   │   │   ├── Searchd.md
│   │   │   ├── Setting_variables_online.md
│   │   │   └── Special_suffixes.md
│   │   ├── Starting_the_server/
│   │   │   ├── Docker.md
│   │   │   ├── Linux.md
│   │   │   ├── MacOS.md
│   │   │   ├── Manually.md
│   │   │   └── Windows.md
│   │   ├── Starting_the_server.md
│   │   ├── Telemetry.md
│   │   ├── Updating_table_schema_and_settings.md
│   │   ├── latest_release_version
│   │   └── redirects
│   ├── latest_release_version
│   └── russian/
│       ├── Changelog.md
│       ├── Connecting_to_the_server/
│       │   ├── HTTP.md
│       │   └── MySQL_protocol.md
│       ├── Connecting_to_the_server.md
│       ├── Creating_a_cluster/
│       │   ├── Adding_a_new_node.md
│       │   ├── Creating_a_cluster.md
│       │   ├── Remote_nodes/
│       │   │   ├── Load_balancing.md
│       │   │   └── Mirroring.md
│       │   ├── Remote_nodes.md
│       │   └── Setting_up_replication/
│       │       ├── Adding_and_removing_a_table_from_a_replication_cluster.md
│       │       ├── Cluster_recovery.md
│       │       ├── Creating_a_replication_cluster.md
│       │       ├── Deleting_a_replication_cluster.md
│       │       ├── Joining_a_replication_cluster.md
│       │       ├── Managing_replication_nodes.md
│       │       ├── Replication_cluster_status.md
│       │       ├── Restarting_a_cluster.md
│       │       └── Setting_up_replication.md
│       ├── Creating_a_table/
│       │   ├── Creating_a_distributed_table/
│       │   │   ├── Creating_a_distributed_table.md
│       │   │   ├── Creating_a_local_distributed_table.md
│       │   │   └── Remote_tables.md
│       │   ├── Data_types.md
│       │   ├── Local_tables/
│       │   │   ├── Percolate_table.md
│       │   │   ├── Plain_and_real-time_table_settings.md
│       │   │   ├── Plain_table.md
│       │   │   ├── Real-time_table.md
│       │   │   └── Template_table.md
│       │   ├── Local_tables.md
│       │   └── NLP_and_tokenization/
│       │       ├── Advanced_HTML_tokenization.md
│       │       ├── Data_tokenization.md
│       │       ├── Exceptions.md
│       │       ├── Ignoring_stop-words.md
│       │       ├── Languages_with_continuous_scripts.md
│       │       ├── Low-level_tokenization.md
│       │       ├── Morphology.md
│       │       ├── Supported_languages.md
│       │       ├── Wildcard_searching_settings.md
│       │       └── Wordforms.md
│       ├── Creating_a_table.md
│       ├── Data_creation_and_modification/
│       │   ├── Adding_data_from_external_storages/
│       │   │   ├── Adding_data_to_tables/
│       │   │   │   ├── Attaching_one_table_to_another.md
│       │   │   │   ├── Importing_table.md
│       │   │   │   ├── Killlist_in_plain_tables.md
│       │   │   │   └── Merging_tables.md
│       │   │   ├── Fetching_from_CSV,TSV.md
│       │   │   ├── Fetching_from_XML_streams.md
│       │   │   ├── Fetching_from_databases/
│       │   │   │   ├── Database_connection.md
│       │   │   │   ├── Execution_of_fetch_queries.md
│       │   │   │   ├── Introduction.md
│       │   │   │   ├── Processing_fetched_data.md
│       │   │   │   └── Ranged_queries.md
│       │   │   ├── Main_delta.md
│       │   │   ├── Plain_tables_creation.md
│       │   │   └── Rotating_a_table.md
│       │   ├── Adding_data_from_external_storages.md
│       │   ├── Adding_documents_to_a_table/
│       │   │   ├── Adding_documents_to_a_real-time_table.md
│       │   │   └── Adding_rules_to_a_percolate_table.md
│       │   ├── Data_creation_and_modification.md
│       │   ├── Deleting_documents.md
│       │   ├── Transactions.md
│       │   └── Updating_documents/
│       │       ├── REPLACE.md
│       │       ├── REPLACE_vs_UPDATE.md
│       │       └── UPDATE.md
│       ├── Deleting_a_table.md
│       ├── Emptying_a_table.md
│       ├── Extensions/
│       │   ├── FEDERATED.md
│       │   ├── SphinxSE.md
│       │   └── UDFs_and_Plugins/
│       │       ├── Listing_plugins.md
│       │       ├── Plugins/
│       │       │   ├── Creating_a_plugin.md
│       │       │   ├── Deleting_a_plugin.md
│       │       │   ├── Enabling_and_disabling_buddy_plugins.md
│       │       │   ├── Ranker_plugins.md
│       │       │   ├── Reloading_plugins.md
│       │       │   └── Token_filter_plugins.md
│       │       ├── UDF/
│       │       │   ├── Creating_a_function.md
│       │       │   └── Deleting_a_function.md
│       │       ├── UDF.md
│       │       └── UDFs_and_Plugins.md
│       ├── Functions/
│       │   ├── Arrays_and_conditions_functions.md
│       │   ├── Date_and_time_functions.md
│       │   ├── Geo_spatial_functions.md
│       │   ├── Mathematical_functions.md
│       │   ├── Other_functions.md
│       │   ├── Searching_and_ranking_functions.md
│       │   ├── String_functions.md
│       │   └── Type_casting_functions.md
│       ├── Functions.md
│       ├── Installation/
│       │   ├── Compiling_from_sources.md
│       │   ├── Debian_and_Ubuntu.md
│       │   ├── Docker.md
│       │   ├── Installation.md
│       │   ├── MacOS.md
│       │   ├── Manticore_Buddy.md
│       │   ├── Migration_from_Sphinx.md
│       │   ├── RHEL_and_Centos.md
│       │   └── Windows.md
│       ├── Integration/
│       │   ├── Apache_Superset.md
│       │   ├── DBeaver.md
│       │   ├── Filebeat.md
│       │   ├── Fluentbit.md
│       │   ├── Grafana.md
│       │   ├── Kafka.md
│       │   ├── Kibana.md
│       │   ├── Logstash.md
│       │   └── Vectordev.md
│       ├── Introduction.md
│       ├── Listing_tables.md
│       ├── Logging/
│       │   ├── Binary_logging.md
│       │   ├── Docker_logging.md
│       │   ├── Query_logging.md
│       │   ├── Rotating_query_and_server_logs.md
│       │   └── Server_logging.md
│       ├── Miscellaneous_tools.md
│       ├── Node_info_and_management/
│       │   ├── KILL.md
│       │   ├── Node_status.md
│       │   ├── Profiling/
│       │   │   ├── Query_plan.md
│       │   │   └── Query_profile.md
│       │   ├── SHOW_META.md
│       │   ├── SHOW_QUERIES.md
│       │   ├── SHOW_THREADS.md
│       │   ├── SHOW_VARIABLES.md
│       │   ├── SHOW_VERSION.md
│       │   ├── SHOW_WARNINGS.md
│       │   └── Table_settings_and_status/
│       │       ├── SHOW_TABLE_INDEXES.md
│       │       ├── SHOW_TABLE_SETTINGS.md
│       │       └── SHOW_TABLE_STATUS.md
│       ├── Openapi.md
│       ├── Quick_start_guide.md
│       ├── README.md
│       ├── Read_this_first.md
│       ├── References.md
│       ├── Reporting_bugs.md
│       ├── Searching/
│       │   ├── Autocomplete.md
│       │   ├── Collations.md
│       │   ├── Cost_based_optimizer.md
│       │   ├── Distributed_searching.md
│       │   ├── Expressions.md
│       │   ├── Faceted_search.md
│       │   ├── Filters.md
│       │   ├── Full_text_matching/
│       │   │   ├── Basic_usage.md
│       │   │   ├── Boolean_optimization.md
│       │   │   ├── Escaping.md
│       │   │   ├── Operators.md
│       │   │   └── Profiling.md
│       │   ├── Geo_search.md
│       │   ├── Grouping.md
│       │   ├── Highlighting.md
│       │   ├── Intro.md
│       │   ├── Joining.md
│       │   ├── KNN.md
│       │   ├── Multi-queries.md
│       │   ├── Options.md
│       │   ├── Pagination.md
│       │   ├── Percolate_query.md
│       │   ├── Query_cache.md
│       │   ├── Search_results.md
│       │   ├── Sorting_and_ranking.md
│       │   ├── Spell_correction.md
│       │   └── Sub-selects.md
│       ├── Securing_and_compacting_a_table/
│       │   ├── Backup_and_restore.md
│       │   ├── Compacting_a_table.md
│       │   ├── Flushing_RAM_chunk_to_a_new_disk_chunk.md
│       │   ├── Flushing_RAM_chunk_to_disk.md
│       │   ├── Flushing_attributes.md
│       │   ├── Flushing_hostnames.md
│       │   ├── Freezing_and_locking_a_table.md
│       │   ├── Isolation_during_flushing_and_merging.md
│       │   └── RT_table_structure.md
│       ├── Security/
│       │   ├── Read_only.md
│       │   └── SSL.md
│       ├── Server_settings/
│       │   ├── Comments.md
│       │   ├── Common.md
│       │   ├── Inheritance_of_index_and_source_declarations.md
│       │   ├── Scripted_configuration.md
│       │   ├── Searchd.md
│       │   ├── Setting_variables_online.md
│       │   └── Special_suffixes.md
│       ├── Starting_the_server/
│       │   ├── Docker.md
│       │   ├── Linux.md
│       │   ├── MacOS.md
│       │   ├── Manually.md
│       │   └── Windows.md
│       ├── Starting_the_server.md
│       ├── Telemetry.md
│       ├── Updating_table_schema_and_settings.md
│       ├── latest_release_version
│       └── redirects
├── memcheck.sh
├── memdocker.sh
├── misc/
│   ├── .gitignore
│   ├── build-local-test-kit.sh
│   ├── compare_manuals.sh
│   ├── ctest/
│   │   ├── gltest.cmake
│   │   ├── justbuild.cmake
│   │   ├── memcheck.cmake
│   │   ├── memcheck.md
│   │   ├── ubertests/
│   │   │   ├── Dockerfile
│   │   │   ├── aot.sh
│   │   │   ├── entry_point.sh
│   │   │   └── ubertests_docker_image/
│   │   │       ├── Dockerfile
│   │   │       ├── entry_point.sh
│   │   │       ├── resource.json
│   │   │       └── sphinx
│   │   └── valgrind/
│   │       ├── Dockerfile
│   │       ├── entry_point.sh
│   │       └── sphinx
│   ├── dockerfiles/
│   │   ├── README.md
│   │   ├── mysql/
│   │   │   ├── Dockerfile
│   │   │   └── docker-entrypoint.sh
│   │   ├── scripts/
│   │   │   ├── smoke.sh
│   │   │   ├── smoke_libclient.sh
│   │   │   └── smoke_tests.sh
│   │   └── test/
│   │       └── Dockerfile
│   ├── http-log-to-test
│   ├── junit/
│   │   └── ctest2junit.xsl
│   ├── manticore.natvis
│   ├── manticore_lldb.py
│   ├── manual.sh
│   ├── raminfo.py
│   ├── resolve.py
│   ├── search_json_pretty.php
│   ├── stopwords/
│   │   ├── af
│   │   ├── ar
│   │   ├── bg
│   │   ├── bn
│   │   ├── ca
│   │   ├── ckb
│   │   ├── cz
│   │   ├── da
│   │   ├── de
│   │   ├── el
│   │   ├── en
│   │   ├── eo
│   │   ├── es
│   │   ├── et
│   │   ├── eu
│   │   ├── fa
│   │   ├── fi
│   │   ├── fr
│   │   ├── ga
│   │   ├── gl
│   │   ├── he
│   │   ├── hi
│   │   ├── hr
│   │   ├── hu
│   │   ├── hy
│   │   ├── id
│   │   ├── it
│   │   ├── ja
│   │   ├── ko
│   │   ├── la
│   │   ├── languages_list.txt
│   │   ├── lt
│   │   ├── lv
│   │   ├── mr
│   │   ├── nl
│   │   ├── no
│   │   ├── pl
│   │   ├── pt
│   │   ├── ro
│   │   ├── ru
│   │   ├── sk
│   │   ├── sl
│   │   ├── so
│   │   ├── st
│   │   ├── sv
│   │   ├── sw
│   │   ├── th
│   │   ├── tr
│   │   ├── yo
│   │   ├── zh
│   │   └── zu
│   ├── suggest/
│   │   ├── README
│   │   ├── suggest.conf
│   │   └── suggest.php
│   ├── tzdata/
│   │   └── Asia/
│   │       └── Novosibirsk
│   ├── winbundle/
│   │   ├── CURLConfig.cmake
│   │   ├── EXPATConfig.cmake
│   │   ├── IconvConfig.cmake
│   │   ├── MysqlConfig.cmake
│   │   ├── OpenSSLConfig.cmake
│   │   ├── PostgreSQLConfig.cmake
│   │   ├── README.md
│   │   └── ZSTDConfig.cmake
│   └── wordbreak.pl
├── mysqlse/
│   ├── CMakeLists.txt
│   ├── INSTALL
│   ├── Makefile.am
│   ├── gen_data.php
│   ├── ha_sphinx.cc
│   ├── ha_sphinx.h
│   ├── make-patch.sh
│   ├── plug.in
│   ├── snippets_udf.cc
│   ├── sphinx.5.0.22.diff
│   ├── sphinx.5.0.27.diff
│   ├── sphinx.5.0.37.diff
│   └── sphinx.5.0.91.diff
├── smoke.sh
├── smokeci.sh
├── sphinxrev.cmake
├── sphinxrevcheck.cmake
├── src/
│   ├── .clang-format
│   ├── .cursor/
│   │   └── rules/
│   │       └── stas-1.mdc
│   ├── .gitattributes
│   ├── CMakeLists.txt
│   ├── accumulator.cpp
│   ├── accumulator.h
│   ├── aggregate.cpp
│   ├── aggregate.h
│   ├── aggrexpr.cpp
│   ├── aggrexpr.h
│   ├── attr_embedding.cpp
│   ├── attr_embedding.h
│   ├── attribute.cpp
│   ├── attribute.h
│   ├── attrindex_builder.cpp
│   ├── attrindex_builder.h
│   ├── attrindex_merge.cpp
│   ├── attrindex_merge.h
│   ├── binlog.cpp
│   ├── binlog.h
│   ├── binlog_defs.h
│   ├── charsets/
│   │   ├── chinese.txt
│   │   ├── cjk.txt
│   │   ├── cont.txt
│   │   ├── english.txt
│   │   ├── globalaliases.h.in
│   │   ├── japanese.txt
│   │   ├── korean.txt
│   │   ├── non_cjk.txt
│   │   ├── non_cont.txt
│   │   ├── russian.txt
│   │   └── thai.txt
│   ├── chunksearchctx.cpp
│   ├── chunksearchctx.h
│   ├── cjkpreprocessor.cpp
│   ├── cjkpreprocessor.h
│   ├── client_session.h
│   ├── client_task_info.cpp
│   ├── client_task_info.h
│   ├── collation.cpp
│   ├── collation.h
│   ├── columnarexpr.cpp
│   ├── columnarexpr.h
│   ├── columnarfilter.cpp
│   ├── columnarfilter.h
│   ├── columnargrouper.cpp
│   ├── columnargrouper.h
│   ├── columnarlib.cpp
│   ├── columnarlib.h
│   ├── columnarmisc.cpp
│   ├── columnarmisc.h
│   ├── columnarrt.cpp
│   ├── columnarrt.h
│   ├── columnarsort.cpp
│   ├── columnarsort.h
│   ├── compressed_http.cpp
│   ├── compressed_http.h
│   ├── compressed_mysql_layer.cpp
│   ├── compressed_mysql_layer.h
│   ├── compressed_zlib_mysql.cpp
│   ├── compressed_zlib_mysql.h
│   ├── compressed_zstd_mysql.cpp
│   ├── compressed_zstd_mysql.h
│   ├── config_reloader.cpp
│   ├── config_reloader.h
│   ├── conversion.cpp
│   ├── conversion.h
│   ├── coro_stack.cpp
│   ├── coro_stack.h
│   ├── coro_waker.h
│   ├── coroutine.cpp
│   ├── coroutine.h
│   ├── costestimate.cpp
│   ├── costestimate.h
│   ├── daemon/
│   │   ├── CMakeLists.txt
│   │   ├── api_commands.h
│   │   ├── api_search.cpp
│   │   ├── api_search.h
│   │   ├── crash_logger.cpp
│   │   ├── crash_logger.h
│   │   ├── daemon_log.cpp
│   │   ├── failures_log.cpp
│   │   ├── failures_log.h
│   │   ├── http_log.cpp
│   │   ├── logger.h
│   │   ├── match_iterator.cpp
│   │   ├── match_iterator.h
│   │   ├── minimize_aggr_result.cpp
│   │   ├── minimize_aggr_result.h
│   │   ├── query_log.cpp
│   │   ├── search_handler.cpp
│   │   ├── search_handler.h
│   │   ├── system_tables.cpp
│   │   ├── winservice.cpp
│   │   └── winservice.h
│   ├── datareader.cpp
│   ├── datareader.h
│   ├── datetime.cpp
│   ├── datetime.h
│   ├── ddl.l
│   ├── ddl.y
│   ├── debug_cmds.cpp
│   ├── debug_cmds.h
│   ├── detail/
│   │   ├── coroutine_impl.h
│   │   ├── expmeter.h
│   │   ├── indexlink.cpp
│   │   └── indexlink.h
│   ├── dict/
│   │   ├── CMakeLists.txt
│   │   ├── aggregate_hit.h
│   │   ├── bin.cpp
│   │   ├── bin.h
│   │   ├── crc_engine.h
│   │   ├── crc_engine_impl.h
│   │   ├── dict_base.cpp
│   │   ├── dict_base.h
│   │   ├── dict_crc.cpp
│   │   ├── dict_crc.h
│   │   ├── dict_crc_impl.h
│   │   ├── dict_entry.h
│   │   ├── dict_exact.cpp
│   │   ├── dict_keywords.cpp
│   │   ├── dict_proxy.h
│   │   ├── dict_star.cpp
│   │   ├── infix/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── infix_builder.cpp
│   │   │   └── infix_builder.h
│   │   ├── stem/
│   │   │   ├── CMakeLists.txt
│   │   │   ├── sphinxmetaphone.cpp
│   │   │   ├── sphinxsoundex.cpp
│   │   │   ├── sphinxstem.h
│   │   │   ├── sphinxstemar.cpp
│   │   │   ├── sphinxstemcz.cpp
│   │   │   ├── sphinxstemen.cpp
│   │   │   ├── sphinxstemru.cpp
│   │   │   └── sphinxstemru.inl
│   │   ├── template_dict_traits.cpp
│   │   ├── template_dict_traits.h
│   │   ├── word_forms.cpp
│   │   └── word_forms.h
│   ├── digest_sha1.cpp
│   ├── digest_sha1.h
│   ├── distinct.cpp
│   ├── distinct.h
│   ├── docidlookup.cpp
│   ├── docidlookup.h
│   ├── docs_collector.cpp
│   ├── docs_collector.h
│   ├── docstore.cpp
│   ├── docstore.h
│   ├── dynamic_idx.cpp
│   ├── dynamic_idx.h
│   ├── embeddingutils.cpp
│   ├── embeddingutils.h
│   ├── event.h
│   ├── exprdatetime.cpp
│   ├── exprdatetime.h
│   ├── exprdocstore.cpp
│   ├── exprdocstore.h
│   ├── exprgeodist.cpp
│   ├── exprgeodist.h
│   ├── exprremap.cpp
│   ├── exprremap.h
│   ├── exprtraits.cpp
│   ├── exprtraits.h
│   ├── farmhash/
│   │   └── farmhash.h
│   ├── fileio.cpp
│   ├── fileio.h
│   ├── fileutils.cpp
│   ├── fileutils.h
│   ├── frontendschema.cpp
│   ├── frontendschema.h
│   ├── fuzzer/
│   │   ├── CMakeLists.txt
│   │   ├── dict.txt
│   │   └── fuzzer.cpp
│   ├── gbenches/
│   │   ├── CMakeLists.txt
│   │   ├── appendf.cpp
│   │   ├── cJSON_test.c
│   │   ├── expressions.cpp
│   │   ├── functions.cpp
│   │   ├── geodist.cpp
│   │   ├── json.cpp
│   │   ├── locators.cpp
│   │   ├── misc.cpp
│   │   ├── popcount.cpp
│   │   ├── stripper.cpp
│   │   ├── text.cpp
│   │   └── tokenizer.cpp
│   ├── geodist.cpp
│   ├── geodist.h
│   ├── global_idf.cpp
│   ├── global_idf.h
│   ├── grouper.cpp
│   ├── grouper.h
│   ├── gtests/
│   │   ├── CMakeLists.txt
│   │   ├── gtests_filter.cpp
│   │   ├── gtests_functions.cpp
│   │   ├── gtests_globalstate.cpp
│   │   ├── gtests_hugetokenizer.cpp
│   │   ├── gtests_json.cpp
│   │   ├── gtests_pqstuff.cpp
│   │   ├── gtests_rtstuff.cpp
│   │   ├── gtests_searchd.cpp
│   │   ├── gtests_searchdaemon.cpp
│   │   ├── gtests_strfmt.cpp
│   │   ├── gtests_stringbuilder.cpp
│   │   ├── gtests_text.cpp
│   │   ├── gtests_threadstuff.cpp
│   │   ├── gtests_tokenizer.cpp
│   │   ├── gtests_wsrep.cpp
│   │   ├── libsphinxtest.txt
│   │   └── libsphinxtest2.txt
│   ├── hazard_pointer.cpp
│   ├── hazard_pointer.h
│   ├── histogram.cpp
│   ├── histogram.h
│   ├── http/
│   │   ├── http_parser.c
│   │   ├── http_parser.h
│   │   └── log_management.h
│   ├── hyperloglog.cpp
│   ├── hyperloglog.h
│   ├── icu.cpp
│   ├── icu.h
│   ├── index_converter.cpp
│   ├── index_rotator.cpp
│   ├── index_rotator.h
│   ├── indexcheck.cpp
│   ├── indexcheck.h
│   ├── indexer.cpp
│   ├── indexfilebase.cpp
│   ├── indexfilebase.h
│   ├── indexfiles.cpp
│   ├── indexfiles.h
│   ├── indexformat.cpp
│   ├── indexformat.h
│   ├── indexing_sources/
│   │   ├── CMakeLists.txt
│   │   ├── schema_configurator.h
│   │   ├── source_document.cpp
│   │   ├── source_document.h
│   │   ├── source_mysql.cpp
│   │   ├── source_mysql.h
│   │   ├── source_odbc.cpp
│   │   ├── source_odbc.h
│   │   ├── source_pgsql.cpp
│   │   ├── source_pgsql.h
│   │   ├── source_sql.cpp
│   │   ├── source_sql.h
│   │   ├── source_stats.h
│   │   ├── source_svpipe.cpp
│   │   ├── source_svpipe.h
│   │   ├── source_xmlpipe2.cpp
│   │   └── source_xmlpipe2.h
│   ├── indexsettings.cpp
│   ├── indexsettings.h
│   ├── indextool.cpp
│   ├── jieba.cpp
│   ├── jieba.h
│   ├── joinsorter.cpp
│   ├── joinsorter.h
│   ├── json/
│   │   ├── cJSON.c
│   │   └── cJSON.h
│   ├── jsonqueryfilter.cpp
│   ├── jsonqueryfilter.h
│   ├── jsonsi.cpp
│   ├── jsonsi.h
│   ├── killlist.cpp
│   ├── killlist.h
│   ├── knnlib.cpp
│   ├── knnlib.h
│   ├── knnmisc.cpp
│   ├── knnmisc.h
│   ├── libutils.cpp
│   ├── libutils.h
│   ├── literal.h.in
│   ├── loop_profiler.h
│   ├── lz4/
│   │   ├── lz4.c
│   │   ├── lz4.h
│   │   ├── lz4hc.c
│   │   └── lz4hc.h
│   ├── match.h
│   ├── match_impl.h
│   ├── memio.cpp
│   ├── memio.h
│   ├── memio_impl.h
│   ├── mini_timer.cpp
│   ├── mini_timer.h
│   ├── net_action_accept.cpp
│   ├── net_action_accept.h
│   ├── netfetch.cpp
│   ├── netfetch.h
│   ├── netpoll.cpp
│   ├── netpoll.h
│   ├── netreceive_api.cpp
│   ├── netreceive_api.h
│   ├── netreceive_http.cpp
│   ├── netreceive_http.h
│   ├── netreceive_ql.cpp
│   ├── netreceive_ql.h
│   ├── networking_daemon.cpp
│   ├── networking_daemon.h
│   ├── perfetto/
│   │   ├── CMakeLists.txt
│   │   └── README.txt
│   ├── pollable_event.cpp
│   ├── pollable_event.h
│   ├── pseudosharding.cpp
│   ├── pseudosharding.h
│   ├── query_status.cpp
│   ├── query_status.h
│   ├── querycontext.cpp
│   ├── querycontext.h
│   ├── queryfilter.cpp
│   ├── queryfilter.h
│   ├── queryprofile.cpp
│   ├── queryprofile.h
│   ├── querystats.cpp
│   ├── querystats.h
│   ├── queuecreator.cpp
│   ├── queuecreator.h
│   ├── replication/
│   │   ├── CMakeLists.txt
│   │   ├── api_command_cluster.cpp
│   │   ├── api_command_cluster.h
│   │   ├── cluster_binlog.cpp
│   │   ├── cluster_binlog.h
│   │   ├── cluster_commands.h
│   │   ├── cluster_delete.cpp
│   │   ├── cluster_delete.h
│   │   ├── cluster_file_reserve.cpp
│   │   ├── cluster_file_reserve.h
│   │   ├── cluster_file_send.cpp
│   │   ├── cluster_file_send.h
│   │   ├── cluster_get_nodes.cpp
│   │   ├── cluster_get_nodes.h
│   │   ├── cluster_index_add_local.cpp
│   │   ├── cluster_index_add_local.h
│   │   ├── cluster_recv_state_cleanup.cpp
│   │   ├── cluster_recv_state_cleanup.h
│   │   ├── cluster_sst_progress.cpp
│   │   ├── cluster_sst_progress.h
│   │   ├── cluster_synced.cpp
│   │   ├── cluster_synced.h
│   │   ├── cluster_update_nodes.cpp
│   │   ├── cluster_update_nodes.h
│   │   ├── commit_monitor.cpp
│   │   ├── commit_monitor.h
│   │   ├── common.h
│   │   ├── configuration.cpp
│   │   ├── configuration.h
│   │   ├── grastate.cpp
│   │   ├── grastate.h
│   │   ├── nodes.cpp
│   │   ├── nodes.h
│   │   ├── portrange.cpp
│   │   ├── portrange.h
│   │   ├── receiver_ctx.cpp
│   │   ├── receiver_ctx.h
│   │   ├── recv_state.cpp
│   │   ├── recv_state.h
│   │   ├── replicate_index.cpp
│   │   ├── replicate_index.h
│   │   ├── send_files.cpp
│   │   ├── send_files.h
│   │   ├── serialize.cpp
│   │   ├── serialize.h
│   │   ├── wsrep_cxx.cpp
│   │   ├── wsrep_cxx.h
│   │   ├── wsrep_cxx_int.h
│   │   ├── wsrep_documentation/
│   │   │   └── wsrep_api_h.txt
│   │   ├── wsrep_v25.cpp
│   │   └── wsrep_v31.cpp
│   ├── reserved.py
│   ├── schema/
│   │   ├── CMakeLists.txt
│   │   ├── columninfo.cpp
│   │   ├── columninfo.h
│   │   ├── helper.cpp
│   │   ├── helper.h
│   │   ├── ischema.h
│   │   ├── locator.h
│   │   ├── locator_impl.h
│   │   ├── rset.cpp
│   │   ├── rset.h
│   │   ├── schema.cpp
│   │   └── schema.h
│   ├── schematransform.cpp
│   ├── schematransform.h
│   ├── searchd.cpp
│   ├── searchdaemon.cpp
│   ├── searchdaemon.h
│   ├── searchdbuddy.cpp
│   ├── searchdbuddy.h
│   ├── searchdconfig.cpp
│   ├── searchdconfig.h
│   ├── searchdddl.cpp
│   ├── searchdddl.h
│   ├── searchdexpr.cpp
│   ├── searchdexpr.h
│   ├── searchdfields.cpp
│   ├── searchdha.cpp
│   ├── searchdha.h
│   ├── searchdhttp.cpp
│   ├── searchdhttp.h
│   ├── searchdhttpcompat.cpp
│   ├── searchdreplication.cpp
│   ├── searchdreplication.h
│   ├── searchdsql.cpp
│   ├── searchdsql.h
│   ├── searchdssl.cpp
│   ├── searchdssl.h
│   ├── searchdssl_stub.cpp
│   ├── searchdtask.cpp
│   ├── searchdtask.h
│   ├── searchnode.cpp
│   ├── searchnode.h
│   ├── secondaryindex.cpp
│   ├── secondaryindex.h
│   ├── secondarylib.cpp
│   ├── secondarylib.h
│   ├── skip_cache.cpp
│   ├── skip_cache.h
│   ├── snippetfunctor.cpp
│   ├── snippetfunctor.h
│   ├── snippetindex.cpp
│   ├── snippetindex.h
│   ├── snippetpassage.cpp
│   ├── snippetpassage.h
│   ├── snippetstream.cpp
│   ├── snippetstream.h
│   ├── sortcomp.h
│   ├── sortergroup.cpp
│   ├── sortergroup.h
│   ├── sorterprecalc.cpp
│   ├── sorterprecalc.h
│   ├── sorterscroll.cpp
│   ├── sorterscroll.h
│   ├── sortertraits.cpp
│   ├── sortertraits.h
│   ├── sortsetup.cpp
│   ├── sortsetup.h
│   ├── spelldump.cpp
│   ├── sphinx.cpp
│   ├── sphinx.h
│   ├── sphinx_alter.cpp
│   ├── sphinx_alter.h
│   ├── sphinxaot.cpp
│   ├── sphinxdefs.h
│   ├── sphinxexcerpt.cpp
│   ├── sphinxexcerpt.h
│   ├── sphinxexpr.cpp
│   ├── sphinxexpr.h
│   ├── sphinxexpr.l
│   ├── sphinxexpr.y
│   ├── sphinxfilter.cpp
│   ├── sphinxfilter.h
│   ├── sphinxint.h
│   ├── sphinxjson.cpp
│   ├── sphinxjson.h
│   ├── sphinxjson.l
│   ├── sphinxjson.y
│   ├── sphinxjsonquery.cpp
│   ├── sphinxjsonquery.h
│   ├── sphinxplugin.cpp
│   ├── sphinxplugin.h
│   ├── sphinxpq.cpp
│   ├── sphinxpq.h
│   ├── sphinxqcache.cpp
│   ├── sphinxqcache.h
│   ├── sphinxql.l
│   ├── sphinxql.y
│   ├── sphinxql_debug.cpp
│   ├── sphinxql_debug.h
│   ├── sphinxql_debug.l
│   ├── sphinxql_debug.y
│   ├── sphinxql_extra.cpp
│   ├── sphinxql_extra.h
│   ├── sphinxql_extra.l
│   ├── sphinxql_extra.y
│   ├── sphinxql_second.cpp
│   ├── sphinxql_second.h
│   ├── sphinxql_second.l
│   ├── sphinxql_second.y
│   ├── sphinxquery/
│   │   ├── CMakeLists.txt
│   │   ├── common_subtree.cpp
│   │   ├── parse_helper.cpp
│   │   ├── parse_helper.h
│   │   ├── sphinxquery.cpp
│   │   ├── sphinxquery.h
│   │   ├── sphinxquery.y
│   │   ├── transform_andnotnotnot.cpp
│   │   ├── transform_commonandnotfactor.cpp
│   │   ├── transform_commoncompoundnot.cpp
│   │   ├── transform_commonkeywords.cpp
│   │   ├── transform_commonnot.cpp
│   │   ├── transform_commonornot.cpp
│   │   ├── transform_commonsubterm.cpp
│   │   ├── transform_excessandnot.cpp
│   │   ├── transform_hungoperand.cpp
│   │   ├── transform_phrase.cpp
│   │   ├── transformation.cpp
│   │   ├── transformation.h
│   │   ├── xqdebug.h
│   │   ├── xqnode.cpp
│   │   ├── xqparser.cpp
│   │   └── xqparser.h
│   ├── sphinxrt.cpp
│   ├── sphinxrt.h
│   ├── sphinxsearch.cpp
│   ├── sphinxsearch.h
│   ├── sphinxselect.y
│   ├── sphinxsort.cpp
│   ├── sphinxsort.h
│   ├── sphinxstd.h
│   ├── sphinxudf.c
│   ├── sphinxudf.h
│   ├── sphinxutils.cpp
│   ├── sphinxutils.h
│   ├── sphinxversion.cpp
│   ├── sphinxversion.h.in
│   ├── sqlchecks/
│   │   ├── CMakeLists.txt
│   │   ├── checks.h
│   │   ├── scan_parameters.cpp
│   │   ├── scanparams.l
│   │   ├── validate_vector.cpp
│   │   └── validatevec.l
│   ├── stackmock.cpp
│   ├── stackmock.h
│   ├── std/
│   │   ├── CMakeLists.txt
│   │   ├── accessor.h
│   │   ├── accessor_impl.h
│   │   ├── at_scope_exit.h
│   │   ├── attrstub.h
│   │   ├── autoevent.cpp
│   │   ├── autoevent.h
│   │   ├── base64.cpp
│   │   ├── base64.h
│   │   ├── binarysearch.h
│   │   ├── binarysearch_impl.h
│   │   ├── bitcount.h
│   │   ├── bitcount_impl.h
│   │   ├── bitvec.h
│   │   ├── bitvec_impl.h
│   │   ├── blobs.h
│   │   ├── blobs_impl.h
│   │   ├── buffer.h
│   │   ├── buffer_impl.h
│   │   ├── checks.cpp
│   │   ├── checks.h
│   │   ├── circular_buffer.h
│   │   ├── circular_buffer_impl.h
│   │   ├── comma.h
│   │   ├── comma_impl.h
│   │   ├── comp.h
│   │   ├── comp_impl.h
│   │   ├── crc32.cpp
│   │   ├── crc32.h
│   │   ├── crc32_impl.h
│   │   ├── datamove.h
│   │   ├── datamove_impl.h
│   │   ├── deleter.h
│   │   ├── deleter_impl.h
│   │   ├── env.cpp
│   │   ├── env.h
│   │   ├── escaped_builder.h
│   │   ├── escaped_builder_impl.h
│   │   ├── fastlog.cpp
│   │   ├── fastlog.h
│   │   ├── fastlog_impl.h
│   │   ├── fatal.cpp
│   │   ├── fatal.h
│   │   ├── fixedvector.h
│   │   ├── fixedvector_impl.h
│   │   ├── fnv64.cpp
│   │   ├── fnv64.h
│   │   ├── format.h
│   │   ├── generics.h
│   │   ├── hash.h
│   │   ├── helpers.h
│   │   ├── helpers_impl.h
│   │   ├── ints.h
│   │   ├── iterations.h
│   │   ├── iterations_impl.h
│   │   ├── largebuffer.h
│   │   ├── largebuffer_impl.h
│   │   ├── log2.h
│   │   ├── log2_impl.h
│   │   ├── lrucache.h
│   │   ├── lrucache_impl.h
│   │   ├── mem.cpp
│   │   ├── mem.h
│   │   ├── mm.cpp
│   │   ├── mm.h
│   │   ├── mutex.cpp
│   │   ├── mutex.h
│   │   ├── num_conv.h
│   │   ├── num_conv_impl.h
│   │   ├── openhash.h
│   │   ├── openhash_impl.h
│   │   ├── orderedhash.h
│   │   ├── orderedhash_impl.h
│   │   ├── queue.h
│   │   ├── queue_impl.h
│   │   ├── rand.cpp
│   │   ├── rand.h
│   │   ├── refcounted_mt.h
│   │   ├── refcounted_mt_impl.h
│   │   ├── refptr.h
│   │   ├── relimit.h
│   │   ├── relimit_impl.h
│   │   ├── rwlock.cpp
│   │   ├── rwlock.h
│   │   ├── rwlock_impl.h
│   │   ├── scoped_comma.h
│   │   ├── scoped_comma_impl.h
│   │   ├── scopedlock.h
│   │   ├── scopedlock_impl.h
│   │   ├── sharedptr.h
│   │   ├── sharedptr_impl.h
│   │   ├── smalloc.cpp
│   │   ├── smalloc.h
│   │   ├── smalloc_impl.h
│   │   ├── sort.h
│   │   ├── sort_impl.h
│   │   ├── sphwarn.cpp
│   │   ├── sphwarn.h
│   │   ├── spinlock.h
│   │   ├── storage.h
│   │   ├── strerrorm.h
│   │   ├── string.cpp
│   │   ├── string.h
│   │   ├── string_impl.h
│   │   ├── stringbuilder.cpp
│   │   ├── stringbuilder.h
│   │   ├── stringbuilder_impl.h
│   │   ├── stringhash.cpp
│   │   ├── stringhash.h
│   │   ├── sys.cpp
│   │   ├── sys.h
│   │   ├── tdigest.cpp
│   │   ├── tdigest.h
│   │   ├── thread_annotations.h
│   │   ├── threadrole.h
│   │   ├── timers.cpp
│   │   ├── timers.h
│   │   ├── type_traits.h
│   │   ├── uniq.h
│   │   ├── uniq_impl.h
│   │   ├── unique_lock.h
│   │   ├── variant.h
│   │   ├── variant_impl.h
│   │   ├── vector.h
│   │   ├── vector_impl.h
│   │   ├── vectraits.h
│   │   ├── vectraits_impl.h
│   │   ├── widest.h
│   │   ├── zip.h
│   │   └── zip_impl.h
│   ├── stripper/
│   │   ├── CMakeLists.txt
│   │   ├── html_stripper.cpp
│   │   ├── html_stripper.h
│   │   └── html_stripper_tag.h
│   ├── task_dispatcher.cpp
│   ├── task_dispatcher.h
│   ├── task_info.cpp
│   ├── task_info.h
│   ├── taskflushattrs.cpp
│   ├── taskflushattrs.h
│   ├── taskflushbinlog.cpp
│   ├── taskflushbinlog.h
│   ├── taskflushmutable.cpp
│   ├── taskflushmutable.h
│   ├── taskglobalidf.cpp
│   ├── taskglobalidf.h
│   ├── taskmalloctrim.cpp
│   ├── taskmalloctrim.h
│   ├── taskping.cpp
│   ├── taskping.h
│   ├── taskpreread.cpp
│   ├── taskpreread.h
│   ├── tasksavestate.cpp
│   ├── tasksavestate.h
│   ├── testrt.conf.in
│   ├── testrt.cpp
│   ├── tests.cpp
│   ├── threads_detached.cpp
│   ├── threadutils.cpp
│   ├── threadutils.h
│   ├── threadutils_impl.h
│   ├── timeout_queue.cpp
│   ├── timeout_queue.h
│   ├── tokenizer/
│   │   ├── CMakeLists.txt
│   │   ├── charset_definition_parser.cpp
│   │   ├── charset_definition_parser.h
│   │   ├── exceptions_trie.cpp
│   │   ├── exceptions_trie.h
│   │   ├── lowercaser.cpp
│   │   ├── lowercaser.h
│   │   ├── lowercaser_impl.h
│   │   ├── multiform_container.h
│   │   ├── remap_range.h
│   │   ├── tok_internals.h
│   │   ├── token_filter.h
│   │   ├── tokenizer.cpp
│   │   ├── tokenizer.h
│   │   ├── tokenizer_bigram.cpp
│   │   ├── tokenizer_multiform.cpp
│   │   ├── tokenizer_plugin.cpp
│   │   ├── tokenizer_utf8.cpp
│   │   ├── tokenizerbase.cpp
│   │   ├── tokenizerbase2.cpp
│   │   ├── tokenizerbase2_impl.h
│   │   └── tokenizerbase_impl.h
│   ├── tracer.cpp
│   ├── tracer.h
│   ├── udfexample.c
│   └── wordbreaker.cpp
├── stack.txt
├── test/
│   ├── .gitattributes
│   ├── CMakeLists.txt
│   ├── bench/
│   │   ├── FILTER-chart1.xml
│   │   ├── FILTER-chart2.xml
│   │   ├── FILTER-chart3.xml
│   │   ├── FILTER-chart4.xml
│   │   ├── filter.xml
│   │   ├── filter3.xml
│   │   ├── fullscan.php
│   │   ├── fullscan.xml
│   │   ├── killlist_filter.xml
│   │   ├── ljq1k.txt
│   │   ├── match-modes.xml
│   │   ├── rtmerge.xml
│   │   ├── sphinx.html
│   │   └── subtree_cache.xml
│   ├── bench-results/
│   │   └── stub.txt
│   ├── bench.php
│   ├── clean.cmd
│   ├── clean.sh
│   ├── clean_old.sh
│   ├── clt-tests/
│   │   ├── base/
│   │   │   ├── basic-initialization-manticore-kafka.recb
│   │   │   ├── dind/
│   │   │   │   ├── Dockerfile
│   │   │   │   └── init.recb
│   │   │   ├── kafka-reset-consumer-offsets.recb
│   │   │   ├── replication/
│   │   │   │   ├── create-cluster.recb
│   │   │   │   ├── join-cluster-on-all-nodes.recb
│   │   │   │   ├── start-searchd-precach.recb
│   │   │   │   └── stop-searchd.recb
│   │   │   ├── searchd-with-flexible-ports.conf
│   │   │   ├── start-kafka-kraft.recb
│   │   │   ├── start-searchd-with-buddy.recb
│   │   │   ├── start-searchd-with-cpustats.recb
│   │   │   └── start-searchd.recb
│   │   ├── buddy/
│   │   │   ├── test-buddy-protocol-validation.rec
│   │   │   ├── test-fuzzy-search-non-min-infix-len.rec
│   │   │   ├── test-log-level-buddy-sync.rec
│   │   │   ├── test-manticore-version-in-telemetry.rec
│   │   │   ├── test-show-version.rec
│   │   │   └── test-unserialize-error-absence-kafka-operations.rec
│   │   ├── buddy-plugins/
│   │   │   ├── test-enable-disable-buddy-plugin.rec
│   │   │   ├── test-facet-with-option-fuzzy.rec
│   │   │   ├── test-fuzzy-autocomplete-http.rec
│   │   │   ├── test-fuzzy-search-dist-table.rec
│   │   │   ├── test-fuzzy-search.rec
│   │   │   ├── test-fuzzy-trailing-semicolon.rec
│   │   │   ├── test-inconsistent-comunication-with-buddy.rec
│   │   │   ├── test-prometheus-exporter.rec
│   │   │   └── test-skipping-plugin-loading.rec
│   │   ├── bugs/
│   │   │   ├── 1335-test-issue.rec
│   │   │   ├── 3037-secondary-indexes-bug.rec
│   │   │   ├── 3247-rt-save-disk-chunk-race.rec
│   │   │   ├── 3428-test-having-total-found.rec
│   │   │   ├── 3481-http-update-distributed-table-wrong-cluster-crash.rec
│   │   │   ├── 3489-fuzzy-option-alias-bug.rec
│   │   │   ├── 3602-knn-dist-attribute-error.rec
│   │   │   ├── 3832-fuzzy-cli-json-multiquery.rec
│   │   │   ├── 3844-max-ft-field-crash.rec
│   │   │   ├── 3847-conflict-handling-verification.rec
│   │   │   ├── 4009-qcache-secondaryindex-bug.rec
│   │   │   ├── 4176-attach-rt-externals.rec
│   │   │   ├── 4176-rename-rt-externals.rec
│   │   │   ├── 567-fuzzy-search-skips-numeric-words.rec
│   │   │   ├── 569-fuzzy-single-letter-word-merge.rec
│   │   │   ├── 599-fuzzy-join-facet-no-such-table.rec
│   │   │   └── fuzzy-preserve-distance-exact-words.rec
│   │   ├── core/
│   │   │   ├── boolean-simplify.rec
│   │   │   ├── call-autocomplete-force-bigrams.rec
│   │   │   ├── call-suggest-force-bigrams.rec
│   │   │   ├── query-test-rt-table.rec
│   │   │   ├── test-alter-rebuild-knn.rec
│   │   │   ├── test-alter-rename-http.rec
│   │   │   ├── test-alter-rename.rec
│   │   │   ├── test-alter-table-distributed.rec
│   │   │   ├── test-alter-table.rec
│   │   │   ├── test-auto-schema.rec
│   │   │   ├── test-create-table-like-existing-table-with-data.rec
│   │   │   ├── test-expansion-phrase-limit.rec
│   │   │   ├── test-external-files-handling-ramchunk.rec
│   │   │   ├── test-external-files-handling.rec
│   │   │   ├── test-freeze-unfreeze-update.rec
│   │   │   ├── test-import-table.rec
│   │   │   ├── test-truncate-distributed-table.rec
│   │   │   ├── test-unfreeze-defrosts.rec
│   │   │   └── test-warning-wordlist-size-mismatch.rec
│   │   ├── data-manipulation/
│   │   │   ├── test-alter-rename-nightly.rec
│   │   │   ├── test-lock-tables-mysqldump-compat.rec
│   │   │   ├── test-lock-unlock-tables.rec
│   │   │   └── test-replace-into.rec
│   │   ├── expected-errors/
│   │   │   ├── buddy-plugin-backup.rec
│   │   │   ├── buddy-plugin-empty-string.rec
│   │   │   ├── buddy-plugin-select.rec
│   │   │   ├── buddy-plugin-show.rec
│   │   │   ├── start-searchd.recb
│   │   │   ├── test-character-transformation-when-sending-to-buddy.rec
│   │   │   ├── test-declaration-of-duplicate-attributes.rec
│   │   │   ├── test-declaration-of-duplicate-fields.rec
│   │   │   ├── test-errors-insert-for-distributed-missing-table.rec
│   │   │   ├── test-external-files-handling-negative.rec
│   │   │   ├── test-fuzzy-search-negative.rec
│   │   │   ├── test-fuzzy-sql-endpoint-negative.rec
│   │   │   ├── test-inconsistency-in-error-messages.rec
│   │   │   ├── test-lock-tables-errors.rec
│   │   │   └── test-system-variables-error-handling.rec
│   │   ├── fulltext-search/
│   │   │   └── test-name-of-fields-in-show-meta.rec
│   │   ├── http-interface/
│   │   │   ├── cli-endpoint.rec
│   │   │   ├── cli-json-endpoint.rec
│   │   │   ├── error-handling.rec
│   │   │   ├── multi-query.rec
│   │   │   ├── show-version-http.rec
│   │   │   ├── show-version-trailing-semicolon.rec
│   │   │   ├── sql-endpoint.rec
│   │   │   ├── sql-mode-raw-endpoint.rec
│   │   │   ├── test-concurrent-requests-to-buddy.rec
│   │   │   ├── test-content-type-header-daemon-only.rec
│   │   │   ├── test-content-type-header-with-buddy.rec
│   │   │   ├── test-distributed-inserts.rec
│   │   │   ├── test-fuzzy-search-sql-endpoint.rec
│   │   │   ├── test-inserts.rec
│   │   │   └── test-manticore-handling-id.rec
│   │   ├── indexer/
│   │   │   ├── indexer-latest-mysql-postgres/
│   │   │   │   ├── indexer-latest-mysql-postgres.rec
│   │   │   │   ├── min_mysql.conf
│   │   │   │   └── min_postgres.sql
│   │   │   ├── test-max-iops.rec
│   │   │   └── test-max-iosize.rec
│   │   ├── indexing-error/
│   │   │   ├── csv_crash.conf
│   │   │   ├── min_mysql.conf
│   │   │   ├── min_postgres.sql
│   │   │   ├── test-id-attribute-error-during-indexing.rec
│   │   │   ├── tsv_crash.conf
│   │   │   └── xml.conf
│   │   ├── installation/
│   │   │   ├── check-backup.recb
│   │   │   ├── check-searchd-process.recb
│   │   │   ├── check-version/
│   │   │   │   ├── comparison-version.recb
│   │   │   │   ├── export-current-version.recb
│   │   │   │   └── export-new-version.recb
│   │   │   ├── deb-dev-install.rec
│   │   │   ├── deb-dev-update.rec
│   │   │   ├── deb-release-install.rec
│   │   │   ├── ex-sw-wf.recb
│   │   │   ├── exceptions-stopwords-wordforms-validation-release-to-dev.rec
│   │   │   ├── manticore-and-packages-installation.recb
│   │   │   ├── rhel-dev-install.rec
│   │   │   ├── rhel-dev-update.rec
│   │   │   ├── rhel-release-install.rec
│   │   │   ├── rhel7-release-install.rec
│   │   │   ├── start-searchd-dev.recb
│   │   │   ├── start-searchd-release.recb
│   │   │   └── stop-searchd-dev.recb
│   │   ├── integrations/
│   │   │   ├── dbeaver/
│   │   │   │   └── test-integrations-dbeaver.rec
│   │   │   ├── filebeat/
│   │   │   │   ├── test-integrations-check-filebeat-versions.rec
│   │   │   │   ├── test-integrations-filebeat.rec
│   │   │   │   └── test-integrations-support-filebeat-versions.rec
│   │   │   ├── fluentbit/
│   │   │   │   └── test-integrations-fluentbit.rec
│   │   │   ├── grafana/
│   │   │   │   ├── test-integrations-check-grafana-versions.rec
│   │   │   │   ├── test-integrations-grafana.rec
│   │   │   │   └── test-integrations-test-grafana-versions.rec
│   │   │   ├── kafka/
│   │   │   │   ├── dump.json
│   │   │   │   ├── import.sh
│   │   │   │   ├── script_versions_kafka.sh
│   │   │   │   ├── test-integration-kafka-ms.rec
│   │   │   │   ├── test-integration-kafka-partition-based-ingestion.rec
│   │   │   │   ├── test-integration-kafka-version.rec
│   │   │   │   └── test-unserialize-error-absence-kafka-operations.rec
│   │   │   ├── logstash/
│   │   │   │   ├── test-integrations-check-logstash-versions.rec
│   │   │   │   ├── test-integrations-logstash.rec
│   │   │   │   └── test-integrations-test-logstash-versions.rec
│   │   │   └── vector/
│   │   │       └── test-integrations-vector.rec
│   │   ├── join/
│   │   │   ├── test-avg-select-join.rec
│   │   │   └── test-join-query-logging-completeness.rec
│   │   ├── kibana/
│   │   │   ├── test-kibana-log-to-test-script.rec
│   │   │   └── test-parameter-for-installing-the-kibana-version.rec
│   │   ├── mcl/
│   │   │   ├── auto-embeddings-backup-restore.rec
│   │   │   ├── auto-embeddings-concurrent.rec
│   │   │   ├── auto-embeddings-dml-test.rec
│   │   │   ├── auto-embeddings-duplicate-id.rec
│   │   │   ├── auto-embeddings-edge-cases.rec
│   │   │   ├── auto-embeddings-endpoints.rec
│   │   │   ├── auto-embeddings-error-handling.rec
│   │   │   ├── auto-embeddings-from-vector-check.rec
│   │   │   ├── auto-embeddings-hnsw-configs.rec
│   │   │   ├── auto-embeddings-jina-remote.rec
│   │   │   ├── auto-embeddings-json-api.rec
│   │   │   ├── auto-embeddings-knn-select-scenarios.rec
│   │   │   ├── auto-embeddings-openai-remote.rec
│   │   │   ├── auto-embeddings-qwen.rec
│   │   │   ├── auto-embeddings-syntax-check.rec
│   │   │   ├── auto-embeddings-voyage-remote.rec
│   │   │   └── base.recb
│   │   ├── migration-es-ms/
│   │   │   └── test-migration-es-ms.rec
│   │   ├── mysqldump/
│   │   │   ├── common/
│   │   │   │   ├── mcl-all-json.recb
│   │   │   │   ├── mcl-all-multi.recb
│   │   │   │   ├── mcl-all-multi64.recb
│   │   │   │   ├── mcl-id-json.recb
│   │   │   │   ├── mcl-id-multi.recb
│   │   │   │   ├── mcl-id-multi64.recb
│   │   │   │   ├── mcl-only-json.recb
│   │   │   │   ├── mcl-only-multi.recb
│   │   │   │   ├── mcl-only-multi64.recb
│   │   │   │   ├── no-mcl-json.recb
│   │   │   │   ├── no-mcl-multi.recb
│   │   │   │   ├── no-mcl-multi64.recb
│   │   │   │   ├── pq-table-mysqldump.recb
│   │   │   │   └── random-1m-dump-restore.recb
│   │   │   ├── dumps/
│   │   │   │   ├── mcl-all/
│   │   │   │   │   ├── json-batch-1.sql
│   │   │   │   │   ├── json-batch-2.sql
│   │   │   │   │   ├── json-batch-3.sql
│   │   │   │   │   ├── json.sql
│   │   │   │   │   ├── multi-batch-1.sql
│   │   │   │   │   ├── multi-batch-2.sql
│   │   │   │   │   ├── multi-batch-3.sql
│   │   │   │   │   ├── multi.sql
│   │   │   │   │   ├── multi64-batch-1.sql
│   │   │   │   │   ├── multi64-batch-2.sql
│   │   │   │   │   ├── multi64-batch-3.sql
│   │   │   │   │   └── multi64.sql
│   │   │   │   ├── mcl-id/
│   │   │   │   │   ├── json-batch-1.sql
│   │   │   │   │   ├── json-batch-2.sql
│   │   │   │   │   ├── json-batch-3.sql
│   │   │   │   │   ├── json.sql
│   │   │   │   │   ├── multi-batch-1.sql
│   │   │   │   │   ├── multi-batch-2.sql
│   │   │   │   │   ├── multi-batch-3.sql
│   │   │   │   │   ├── multi.sql
│   │   │   │   │   ├── multi64-batch-1.sql
│   │   │   │   │   ├── multi64-batch-2.sql
│   │   │   │   │   ├── multi64-batch-3.sql
│   │   │   │   │   └── multi64.sql
│   │   │   │   ├── mcl-only/
│   │   │   │   │   ├── json-batch-1.sql
│   │   │   │   │   ├── json-batch-2.sql
│   │   │   │   │   ├── json-batch-3.sql
│   │   │   │   │   ├── json.sql
│   │   │   │   │   ├── multi-batch-1.sql
│   │   │   │   │   ├── multi-batch-2.sql
│   │   │   │   │   ├── multi-batch-3.sql
│   │   │   │   │   ├── multi.sql
│   │   │   │   │   ├── multi64-batch-1.sql
│   │   │   │   │   ├── multi64-batch-2.sql
│   │   │   │   │   ├── multi64-batch-3.sql
│   │   │   │   │   └── multi64.sql
│   │   │   │   └── no-mcl/
│   │   │   │       ├── json-batch-1.sql
│   │   │   │       ├── json-batch-2.sql
│   │   │   │       ├── json-batch-3.sql
│   │   │   │       ├── json.sql
│   │   │   │       ├── multi-batch-1.sql
│   │   │   │       ├── multi-batch-2.sql
│   │   │   │       ├── multi-batch-3.sql
│   │   │   │       ├── multi.sql
│   │   │   │       ├── multi64-batch-1.sql
│   │   │   │       ├── multi64-batch-2.sql
│   │   │   │       ├── multi64-batch-3.sql
│   │   │   │       └── multi64.sql
│   │   │   ├── maria/
│   │   │   │   ├── init.recb
│   │   │   │   ├── mcl-all-json.rec
│   │   │   │   ├── mcl-all-multi.rec
│   │   │   │   ├── mcl-all-multi64.rec
│   │   │   │   ├── mcl-id-json.rec
│   │   │   │   ├── mcl-id-multi.rec
│   │   │   │   ├── mcl-id-multi64.rec
│   │   │   │   ├── mcl-only-json.rec
│   │   │   │   ├── mcl-only-multi.rec
│   │   │   │   ├── mcl-only-multi64.rec
│   │   │   │   ├── no-mcl-json.rec
│   │   │   │   ├── no-mcl-multi.rec
│   │   │   │   ├── no-mcl-multi64.rec
│   │   │   │   ├── pq-table-mysqldump.rec
│   │   │   │   └── random-1m-dump-restore.rec
│   │   │   ├── mysql/
│   │   │   │   ├── mcl-all-json.rec
│   │   │   │   ├── mcl-all-multi.rec
│   │   │   │   ├── mcl-all-multi64.rec
│   │   │   │   ├── mcl-id-json.rec
│   │   │   │   ├── mcl-id-multi.rec
│   │   │   │   ├── mcl-id-multi64.rec
│   │   │   │   ├── mcl-only-json.rec
│   │   │   │   ├── mcl-only-multi.rec
│   │   │   │   ├── mcl-only-multi64.rec
│   │   │   │   ├── no-mcl-json.rec
│   │   │   │   ├── no-mcl-multi.rec
│   │   │   │   ├── no-mcl-multi64.rec
│   │   │   │   ├── pq-table-mysqldump.rec
│   │   │   │   └── random-1m-dump-restore.rec
│   │   │   └── versions/
│   │   │       ├── mariadb/
│   │   │       │   ├── script_versions_mariadb.sh
│   │   │       │   └── test-supported-mysqldump-mariadb-versions.rec
│   │   │       └── mysql/
│   │   │           ├── script_versions_mysql.sh
│   │   │           └── test-supported-mysqldump-mysql-versions.rec
│   │   ├── performance/
│   │   │   ├── concurrent-load-search-stats-validation.rec
│   │   │   ├── test-json-disk_chunks.rec
│   │   │   ├── test-optimisation-and-update.rec
│   │   │   └── test-show-table-tbl-name-status.rec
│   │   ├── performance-nightly/
│   │   │   ├── test-comparison-overhead-json-sql.rec
│   │   │   └── test-performance-for-queries-with-multiple-disk-chunks.rec
│   │   ├── replication/
│   │   │   ├── fatal-invalid-port.rec
│   │   │   ├── test-auto-embeddings-replication.rec
│   │   │   ├── test-cluster-creation-without-replication.rec
│   │   │   ├── test-generation-of-document-auto-id-in-replication.rec
│   │   │   ├── test-ist-recovery-after-node-crash.rec
│   │   │   ├── test-lock-tables-replicated.rec
│   │   │   ├── test-replication-with-mysqldump.rec
│   │   │   ├── test-replication.rec
│   │   │   └── test-sst-progress.rec
│   │   ├── scripts/
│   │   │   ├── fnames.txt
│   │   │   ├── generate-1mln-records.sh
│   │   │   ├── generate-records-json.sh
│   │   │   ├── generate-records.sh
│   │   │   ├── issue-1335-dump.php
│   │   │   ├── load_names_attr.php
│   │   │   ├── names.txt
│   │   │   └── surnames.txt
│   │   ├── sharding/
│   │   │   ├── cluster/
│   │   │   │   ├── attach-table-while-joining-cluster.rec
│   │   │   │   ├── join-cluster-while-attaching-table.rec
│   │   │   │   ├── join-cluster-while-creating-another.rec
│   │   │   │   ├── join-cluster-while-joining-another.rec
│   │   │   │   ├── join-multiple-clusters-on-same-node.rec
│   │   │   │   ├── multiple-join-single-alter-cluster.rec
│   │   │   │   └── test-drop-sharded-clustering-table.rec
│   │   │   ├── drop/
│   │   │   │   └── test-drop-sharded-table.rec
│   │   │   ├── functional/
│   │   │   │   ├── functional-sharding-and-cluster-negative.rec
│   │   │   │   ├── functional-sharding-positive.rec
│   │   │   │   └── test-dist-table-shards-5000.rec
│   │   │   ├── replication/
│   │   │   │   ├── create-table-1-node-10-shards.rec
│   │   │   │   ├── create-table-2-nodes-4-shards.rec
│   │   │   │   ├── create-table-3-nodes-6-shards.rec
│   │   │   │   ├── create-table-5-nodes-60-shards.rec
│   │   │   │   ├── test-data-manipulation.rec
│   │   │   │   ├── test-distributed-inserts-with-replication.rec
│   │   │   │   └── test-multi-node-sharding-and-replication.rec
│   │   │   └── syntax/
│   │   │       ├── sharding-syntax-negative.rec
│   │   │       └── sharding-syntax-positive.rec
│   │   ├── tables-interaction/
│   │   │   └── test-tables-interaction.rec
│   │   ├── test-configuration/
│   │   │   ├── show-settings.rec
│   │   │   ├── show-threads.rec
│   │   │   ├── test-buddy-max-connections-configuration.rec
│   │   │   ├── test-buddy-requests-not-logged.rec
│   │   │   ├── test-default-config.rec
│   │   │   ├── test-update-with-query-log-min-msec.rec
│   │   │   ├── test-writing-binlog-during-parallel-queries.rec
│   │   │   └── timezone.rec
│   │   └── vector-knn/
│   │       ├── test-knn-id.rec
│   │       ├── test-knn-search-by-doc-id.rec
│   │       ├── test-knn-validation.rec
│   │       └── tets-insert-knn-errors.rec
│   ├── go_prepared_stmt/
│   │   ├── README.md
│   │   ├── go.mod
│   │   ├── go.sum
│   │   └── main.go
│   ├── helpers.inc
│   ├── helpers_rt.inc
│   ├── html_120.txt
│   ├── indextool/
│   │   ├── CMakeLists.txt
│   │   ├── indextool.conf
│   │   └── test.cmake
│   ├── mre.rec
│   ├── mysql_prepared_stmt.md
│   ├── mysql_prepared_stmt.php
│   ├── node_prepared_stmt/
│   │   ├── README.md
│   │   ├── index.js
│   │   └── package.json
│   ├── ql/
│   │   ├── README
│   │   ├── data/
│   │   │   ├── rt.kill
│   │   │   ├── rt.meta
│   │   │   └── rt.ram
│   │   ├── qltest.cs
│   │   ├── qltest.java
│   │   ├── qltest.php
│   │   ├── qltest.py
│   │   ├── qltest.rb
│   │   ├── sphinx.conf
│   │   ├── t.cmd
│   │   └── t2.cmd
│   ├── settings.inc
│   ├── sqlx_prepared_stmt/
│   │   ├── Cargo.toml
│   │   ├── README.md
│   │   └── src/
│   │       └── main.rs
│   ├── ssl_keys/
│   │   ├── server-cert.pem
│   │   └── server-key.pem
│   ├── stopwords.txt
│   ├── stopwords_121.txt
│   ├── synonyms.txt
│   ├── test-templates.xml
│   ├── test_001/
│   │   └── test.xml
│   ├── test_002/
│   │   └── test.xml
│   ├── test_003/
│   │   └── test.xml
│   ├── test_004/
│   │   └── test.xml
│   ├── test_005/
│   │   └── test.xml
│   ├── test_006/
│   │   └── test.xml
│   ├── test_007/
│   │   └── test.xml
│   ├── test_008/
│   │   └── test.xml
│   ├── test_009/
│   │   └── test.xml
│   ├── test_010/
│   │   └── test.xml
│   ├── test_011/
│   │   └── test.xml
│   ├── test_012/
│   │   └── test.xml
│   ├── test_013/
│   │   └── test.xml
│   ├── test_014/
│   │   └── test.xml
│   ├── test_015/
│   │   ├── stops.txt
│   │   └── test.xml
│   ├── test_016/
│   │   └── test.xml
│   ├── test_017/
│   │   └── test.xml
│   ├── test_018/
│   │   └── test.xml
│   ├── test_019/
│   │   └── test.xml
│   ├── test_020/
│   │   └── test.xml
│   ├── test_021/
│   │   └── test.xml
│   ├── test_022/
│   │   ├── test.xml
│   │   ├── wf_multi.txt
│   │   ├── wf_multi2.txt
│   │   ├── wf_multi3.txt
│   │   └── wf_num.txt
│   ├── test_023/
│   │   └── test.xml
│   ├── test_024/
│   │   └── test.xml
│   ├── test_025/
│   │   ├── s25.txt
│   │   └── test.xml
│   ├── test_026/
│   │   └── test.xml
│   ├── test_027/
│   │   └── test.xml
│   ├── test_028/
│   │   ├── model.aff
│   │   ├── model.dict
│   │   ├── model.spell
│   │   └── test.inc
│   ├── test_029/
│   │   └── test.xml
│   ├── test_030/
│   │   └── test.xml
│   ├── test_031/
│   │   └── test.xml
│   ├── test_032/
│   │   └── test.xml
│   ├── test_033/
│   │   └── test.xml
│   ├── test_034/
│   │   └── test.xml
│   ├── test_035/
│   │   └── test.xml
│   ├── test_036/
│   │   └── test.xml
│   ├── test_037/
│   │   └── test.xml
│   ├── test_038/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_039/
│   │   └── test.xml
│   ├── test_040/
│   │   └── test.xml
│   ├── test_041/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_042/
│   │   └── test.xml
│   ├── test_043/
│   │   └── test.xml
│   ├── test_044/
│   │   └── test.xml
│   ├── test_045/
│   │   └── test.xml
│   ├── test_046/
│   │   └── test.xml
│   ├── test_047/
│   │   ├── data1.csv
│   │   ├── data1.xml
│   │   └── test.xml
│   ├── test_048/
│   │   └── test.xml
│   ├── test_049/
│   │   └── test.xml
│   ├── test_050/
│   │   └── test.xml
│   ├── test_051/
│   │   └── test.xml
│   ├── test_052/
│   │   └── test.xml
│   ├── test_053/
│   │   └── test.xml
│   ├── test_054/
│   │   └── test.xml
│   ├── test_055/
│   │   └── test.xml
│   ├── test_056/
│   │   └── test.xml
│   ├── test_057/
│   │   └── test.xml
│   ├── test_058/
│   │   └── test.xml
│   ├── test_059/
│   │   └── test.xml
│   ├── test_060/
│   │   └── test.xml
│   ├── test_061/
│   │   └── test.xml
│   ├── test_062/
│   │   └── test.xml
│   ├── test_063/
│   │   ├── stop_blend.txt
│   │   └── test.xml
│   ├── test_064/
│   │   └── test.xml
│   ├── test_065/
│   │   └── test.xml
│   ├── test_066/
│   │   └── test.xml
│   ├── test_067/
│   │   └── test.xml
│   ├── test_068/
│   │   ├── data1.csv
│   │   ├── data1.tsv
│   │   ├── data1.xml
│   │   ├── data2.csv
│   │   ├── data2.xml
│   │   ├── data3.xml
│   │   ├── data51.xml
│   │   ├── data_embedded.xml
│   │   ├── data_embedded1.xml
│   │   ├── data_embedded2.xml
│   │   ├── data_large.xml
│   │   ├── data_spec.csv
│   │   ├── data_spec.tsv
│   │   ├── test.xml
│   │   └── test_kl.xml
│   ├── test_069/
│   │   └── test.xml
│   ├── test_070/
│   │   └── test.xml
│   ├── test_071/
│   │   └── test.xml
│   ├── test_072/
│   │   └── test.xml
│   ├── test_073/
│   │   └── test.xml
│   ├── test_074/
│   │   └── test.xml
│   ├── test_075/
│   │   └── test.xml
│   ├── test_076/
│   │   └── test.xml
│   ├── test_077/
│   │   └── test.xml
│   ├── test_078/
│   │   └── test.xml
│   ├── test_079/
│   │   └── test.xml
│   ├── test_080/
│   │   └── test.xml
│   ├── test_081/
│   │   ├── test.xml
│   │   ├── words1.txt
│   │   ├── words2.txt
│   │   └── words3.txt
│   ├── test_082/
│   │   ├── test.xml
│   │   ├── words_delta.txt
│   │   └── words_main.txt
│   ├── test_083/
│   │   └── test.xml
│   ├── test_084/
│   │   └── test.xml
│   ├── test_085/
│   │   └── test.xml
│   ├── test_086/
│   │   └── test.xml
│   ├── test_087/
│   │   └── test.xml
│   ├── test_088/
│   │   └── test.xml
│   ├── test_089/
│   │   └── test.xml
│   ├── test_090/
│   │   └── test.xml
│   ├── test_091/
│   │   └── test.xml
│   ├── test_092/
│   │   └── test.xml
│   ├── test_093/
│   │   └── test.xml
│   ├── test_094/
│   │   └── test.xml
│   ├── test_095/
│   │   └── test.xml
│   ├── test_096/
│   │   └── test.xml
│   ├── test_097/
│   │   └── test.xml
│   ├── test_098/
│   │   ├── test.xml
│   │   ├── wf3.txt
│   │   └── wordforms.txt
│   ├── test_099/
│   │   └── test.xml
│   ├── test_100/
│   │   └── test.xml
│   ├── test_101/
│   │   └── test.xml
│   ├── test_102/
│   │   └── test.xml
│   ├── test_103/
│   │   └── test.xml
│   ├── test_104/
│   │   └── test.xml
│   ├── test_105/
│   │   └── test.xml
│   ├── test_106/
│   │   └── test.xml
│   ├── test_107/
│   │   └── test.xml
│   ├── test_108/
│   │   ├── data.xml
│   │   ├── data2.xml
│   │   ├── data3.xml
│   │   └── test.xml
│   ├── test_109/
│   │   └── test.xml
│   ├── test_110/
│   │   └── test.xml
│   ├── test_111/
│   │   └── test.xml
│   ├── test_112/
│   │   └── test.xml
│   ├── test_113/
│   │   └── test.xml
│   ├── test_114/
│   │   └── test.xml
│   ├── test_115/
│   │   ├── test.xml
│   │   └── wf_multi.txt
│   ├── test_116/
│   │   └── test.xml
│   ├── test_117/
│   │   └── test.xml
│   ├── test_118/
│   │   └── test.xml
│   ├── test_119/
│   │   └── test.xml
│   ├── test_120/
│   │   └── test.xml
│   ├── test_121/
│   │   └── test.xml
│   ├── test_122/
│   │   └── test.xml
│   ├── test_123/
│   │   └── test.xml
│   ├── test_124/
│   │   ├── field_124_match.txt
│   │   └── test.xml
│   ├── test_125/
│   │   └── test.xml
│   ├── test_126/
│   │   └── test.xml
│   ├── test_127/
│   │   └── test.xml
│   ├── test_128/
│   │   └── test.xml
│   ├── test_129/
│   │   └── test.xml
│   ├── test_130/
│   │   ├── 512k.xml
│   │   ├── empty.txt
│   │   ├── load_file.txt
│   │   └── test.xml
│   ├── test_131/
│   │   └── test.xml
│   ├── test_132/
│   │   └── test.xml
│   ├── test_133/
│   │   └── test.xml
│   ├── test_134/
│   │   └── test.xml
│   ├── test_135/
│   │   └── test.xml
│   ├── test_136/
│   │   ├── exceptions.txt
│   │   └── test.xml
│   ├── test_137/
│   │   └── test.xml
│   ├── test_138/
│   │   └── test.xml
│   ├── test_139/
│   │   └── test.xml
│   ├── test_140/
│   │   └── test.xml
│   ├── test_141/
│   │   └── test.xml
│   ├── test_142/
│   │   └── test.xml
│   ├── test_143/
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   └── wordforms_multi_dest.txt
│   ├── test_144/
│   │   └── test.xml
│   ├── test_145/
│   │   ├── stop0.txt
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_146/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_147/
│   │   └── test.xml
│   ├── test_148/
│   │   ├── doc1.txt
│   │   ├── doc2.txt
│   │   ├── doc3.txt
│   │   └── test.xml
│   ├── test_149/
│   │   └── test.xml
│   ├── test_150/
│   │   └── test.xml
│   ├── test_151/
│   │   └── test.xml
│   ├── test_152/
│   │   └── test.xml
│   ├── test_153/
│   │   └── test.xml
│   ├── test_154/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_155/
│   │   └── test.xml
│   ├── test_156/
│   │   └── test.xml
│   ├── test_157/
│   │   └── test.xml
│   ├── test_158/
│   │   ├── test.xml
│   │   └── wf158.txt
│   ├── test_159/
│   │   └── test.xml
│   ├── test_160/
│   │   ├── multiwordorms.txt
│   │   └── test.xml
│   ├── test_161/
│   │   ├── data1.xml
│   │   └── test.xml
│   ├── test_162/
│   │   └── test.xml
│   ├── test_163/
│   │   └── test.xml
│   ├── test_164/
│   │   └── test.xml
│   ├── test_165/
│   │   ├── synonyms.txt
│   │   ├── synonyms2.txt
│   │   ├── synonyms3.txt
│   │   ├── synonyms4.txt
│   │   └── test.xml
│   ├── test_166/
│   │   └── test.xml
│   ├── test_167/
│   │   └── test.xml
│   ├── test_168/
│   │   ├── test.xml
│   │   ├── text1.txt
│   │   └── text2.txt
│   ├── test_169/
│   │   └── test.xml
│   ├── test_170/
│   │   └── test.xml
│   ├── test_171/
│   │   ├── data_mm.tsv
│   │   └── test.xml
│   ├── test_172/
│   │   └── test.xml
│   ├── test_173/
│   │   └── test.xml
│   ├── test_174/
│   │   ├── readme.txt
│   │   └── test.xml
│   ├── test_175/
│   │   ├── hits1.xml
│   │   └── test.xml
│   ├── test_176/
│   │   └── test.xml
│   ├── test_177/
│   │   └── test.xml
│   ├── test_178/
│   │   └── test.xml
│   ├── test_179/
│   │   └── test.xml
│   ├── test_180/
│   │   └── test.xml
│   ├── test_181/
│   │   └── test.xml
│   ├── test_182/
│   │   └── test.xml
│   ├── test_183/
│   │   ├── data_embedded.xml
│   │   └── test.xml
│   ├── test_184/
│   │   ├── data_ext.xml
│   │   ├── data_fields.xml
│   │   ├── data_int.xml
│   │   └── test.xml
│   ├── test_185/
│   │   └── test.xml
│   ├── test_186/
│   │   └── test.xml
│   ├── test_187/
│   │   └── test.xml
│   ├── test_188/
│   │   └── test.xml
│   ├── test_189/
│   │   └── test.xml
│   ├── test_190/
│   │   ├── refdata/
│   │   │   ├── agent1/
│   │   │   │   ├── allfiles/
│   │   │   │   │   ├── text1.txt
│   │   │   │   │   ├── text2.txt
│   │   │   │   │   ├── text3.txt
│   │   │   │   │   ├── text4.txt
│   │   │   │   │   ├── text5.txt
│   │   │   │   │   └── text6.txt
│   │   │   │   └── scatteredfiles/
│   │   │   │       ├── text3.txt
│   │   │   │       └── text4.txt
│   │   │   ├── agent2/
│   │   │   │   ├── allfiles/
│   │   │   │   │   ├── text1.txt
│   │   │   │   │   ├── text2.txt
│   │   │   │   │   ├── text3.txt
│   │   │   │   │   ├── text4.txt
│   │   │   │   │   ├── text5.txt
│   │   │   │   │   └── text6.txt
│   │   │   │   └── scatteredfiles/
│   │   │   │       ├── text5.txt
│   │   │   │       └── text6.txt
│   │   │   └── master/
│   │   │       ├── allfiles/
│   │   │       │   ├── text1.txt
│   │   │       │   ├── text2.txt
│   │   │       │   ├── text3.txt
│   │   │       │   ├── text4.txt
│   │   │       │   ├── text5.txt
│   │   │       │   └── text6.txt
│   │   │       └── scatteredfiles/
│   │   │           ├── text1.txt
│   │   │           └── text2.txt
│   │   └── test.xml
│   ├── test_191/
│   │   └── test.xml
│   ├── test_192/
│   │   ├── test.xml
│   │   ├── wordforms-12.txt
│   │   ├── wordforms-wb.txt
│   │   └── wordforms.txt
│   ├── test_193/
│   │   ├── stopwords.txt
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_194/
│   │   ├── file1.txt
│   │   ├── file2.txt
│   │   ├── file3.txt
│   │   └── test.xml
│   ├── test_195/
│   │   └── test.xml
│   ├── test_196/
│   │   ├── ex21.txt
│   │   ├── test.xml
│   │   ├── wf1.txt
│   │   ├── wf2.txt
│   │   ├── wf21.txt
│   │   ├── wf_pre.txt
│   │   ├── wordforms.txt
│   │   ├── words1.txt
│   │   └── words2.txt
│   ├── test_197/
│   │   └── test.xml
│   ├── test_198/
│   │   └── test.xml
│   ├── test_199/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_200/
│   │   └── test.xml
│   ├── test_201/
│   │   └── test.xml
│   ├── test_202/
│   │   └── test.xml
│   ├── test_203/
│   │   └── test.xml
│   ├── test_204/
│   │   └── test.xml
│   ├── test_205/
│   │   └── test.xml
│   ├── test_206/
│   │   └── test.xml
│   ├── test_207/
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   ├── wordforms2.txt
│   │   └── wordforms3.txt
│   ├── test_208/
│   │   └── test.xml
│   ├── test_209/
│   │   └── test.xml
│   ├── test_210/
│   │   ├── stopwords.txt
│   │   └── test.xml
│   ├── test_211/
│   │   └── test.xml
│   ├── test_212/
│   │   └── test.xml
│   ├── test_213/
│   │   └── test.xml
│   ├── test_214/
│   │   └── test.xml
│   ├── test_215/
│   │   └── test.xml
│   ├── test_216/
│   │   └── test.xml
│   ├── test_217/
│   │   └── test.xml
│   ├── test_218/
│   │   ├── data.xml
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_219/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_220/
│   │   └── test.xml
│   ├── test_221/
│   │   └── test.xml
│   ├── test_222/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_223/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_224/
│   │   └── test.xml
│   ├── test_225/
│   │   └── test.xml
│   ├── test_226/
│   │   └── test.xml
│   ├── test_227/
│   │   └── test.xml
│   ├── test_228/
│   │   └── test.xml
│   ├── test_229/
│   │   └── test.xml
│   ├── test_230/
│   │   └── test.xml
│   ├── test_231/
│   │   └── test.xml
│   ├── test_232/
│   │   └── test.xml
│   ├── test_233/
│   │   ├── data/
│   │   │   ├── reload.spa
│   │   │   ├── reload.spb
│   │   │   ├── reload.spd
│   │   │   ├── reload.spe
│   │   │   ├── reload.sph
│   │   │   ├── reload.spi
│   │   │   ├── reload.spm
│   │   │   ├── reload.spp
│   │   │   ├── reload.spt
│   │   │   ├── test.spa
│   │   │   ├── test.spb
│   │   │   ├── test.spd
│   │   │   ├── test.spe
│   │   │   ├── test.sph
│   │   │   ├── test.spi
│   │   │   ├── test.spm
│   │   │   ├── test.spp
│   │   │   └── test.spt
│   │   ├── reload_path/
│   │   │   └── .gitignore
│   │   └── test.xml
│   ├── test_234/
│   │   └── test.xml
│   ├── test_235/
│   │   └── test.xml
│   ├── test_236/
│   │   ├── data1.csv
│   │   ├── data1.tsv
│   │   ├── data1.xml
│   │   ├── data2.xml
│   │   ├── data3.xml
│   │   ├── data4.xml
│   │   └── test.xml
│   ├── test_237/
│   │   └── test.xml
│   ├── test_238/
│   │   └── test.xml
│   ├── test_239/
│   │   └── test.xml
│   ├── test_240/
│   │   └── test.xml
│   ├── test_241/
│   │   └── test.xml
│   ├── test_242/
│   │   └── test.xml
│   ├── test_243/
│   │   └── test.xml
│   ├── test_244/
│   │   └── test.xml
│   ├── test_245/
│   │   ├── data.xml
│   │   ├── data_rev.xml
│   │   └── test.xml
│   ├── test_246/
│   │   └── test.xml
│   ├── test_247/
│   │   └── test.xml
│   ├── test_248/
│   │   └── test.xml
│   ├── test_249/
│   │   └── test.xml
│   ├── test_250/
│   │   ├── data/
│   │   │   ├── plain2.spa
│   │   │   ├── plain2.spd
│   │   │   ├── plain2.spe
│   │   │   ├── plain2.sph
│   │   │   ├── plain2.spi
│   │   │   ├── plain2.spm
│   │   │   ├── plain2.spp
│   │   │   └── plain2.spt
│   │   └── test.xml
│   ├── test_251/
│   │   └── test.xml
│   ├── test_252/
│   │   └── test.xml
│   ├── test_253/
│   │   └── test.xml
│   ├── test_254/
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_255/
│   │   ├── test.xml
│   │   └── wf1.txt
│   ├── test_256/
│   │   └── test.xml
│   ├── test_257/
│   │   ├── data1.csv
│   │   ├── data1.tsv
│   │   ├── data1.xml
│   │   ├── data2.csv
│   │   ├── data3.csv
│   │   └── test.xml
│   ├── test_258/
│   │   └── test.xml
│   ├── test_259/
│   │   └── test.xml
│   ├── test_260/
│   │   └── test.xml
│   ├── test_261/
│   │   └── test.xml
│   ├── test_262/
│   │   └── test.xml
│   ├── test_263/
│   │   ├── test.csv
│   │   └── test.xml
│   ├── test_264/
│   │   └── test.xml
│   ├── test_265/
│   │   └── test.xml
│   ├── test_266/
│   │   └── test.xml
│   ├── test_267/
│   │   └── test.xml
│   ├── test_268/
│   │   └── test.xml
│   ├── test_269/
│   │   └── test.xml
│   ├── test_270/
│   │   ├── data1.tsv
│   │   └── test.xml
│   ├── test_271/
│   │   └── test.xml
│   ├── test_272/
│   │   └── test.xml
│   ├── test_273/
│   │   └── test.xml
│   ├── test_274/
│   │   └── test.xml
│   ├── test_275/
│   │   └── test.xml
│   ├── test_276/
│   │   └── test.xml
│   ├── test_277/
│   │   └── test.xml
│   ├── test_278/
│   │   └── test.xml
│   ├── test_279/
│   │   └── test.xml
│   ├── test_280/
│   │   └── test.xml
│   ├── test_281/
│   │   └── test.xml
│   ├── test_282/
│   │   └── test.xml
│   ├── test_283/
│   │   └── test.xml
│   ├── test_284/
│   │   └── test.xml
│   ├── test_285/
│   │   └── test.xml
│   ├── test_286/
│   │   └── test.xml
│   ├── test_287/
│   │   └── test.xml
│   ├── test_288/
│   │   └── test.xml
│   ├── test_289/
│   │   └── test.xml
│   ├── test_290/
│   │   └── test.xml
│   ├── test_291/
│   │   └── test.xml
│   ├── test_292/
│   │   └── test.xml
│   ├── test_293/
│   │   └── test.xml
│   ├── test_294/
│   │   └── test.xml
│   ├── test_295/
│   │   └── test.xml
│   ├── test_296/
│   │   └── test.xml
│   ├── test_297/
│   │   └── test.xml
│   ├── test_298/
│   │   └── test.xml
│   ├── test_299/
│   │   └── test.xml
│   ├── test_300/
│   │   ├── bug.py
│   │   └── test.xml
│   ├── test_301/
│   │   └── test.xml
│   ├── test_302/
│   │   └── test.xml
│   ├── test_303/
│   │   └── test.xml
│   ├── test_304/
│   │   └── test.xml
│   ├── test_305/
│   │   └── test.xml
│   ├── test_306/
│   │   └── test.xml
│   ├── test_307/
│   │   └── test.xml
│   ├── test_308/
│   │   └── test.xml
│   ├── test_309/
│   │   ├── jieba_user_dict.txt
│   │   └── test.xml
│   ├── test_310/
│   │   ├── data.xml
│   │   ├── jieba_user_dict.txt
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_311/
│   │   ├── data.xml
│   │   └── test.xml
│   ├── test_312/
│   │   └── test.xml
│   ├── test_313/
│   │   └── test.xml
│   ├── test_314/
│   │   └── test.xml
│   ├── test_315/
│   │   └── test.xml
│   ├── test_316/
│   │   └── test.xml
│   ├── test_317/
│   │   └── test.xml
│   ├── test_318/
│   │   └── test.xml
│   ├── test_319/
│   │   └── test.xml
│   ├── test_320/
│   │   └── test.xml
│   ├── test_321/
│   │   └── test.xml
│   ├── test_322/
│   │   └── test.xml
│   ├── test_323/
│   │   └── test.xml
│   ├── test_324/
│   │   └── test.xml
│   ├── test_325/
│   │   └── test.xml
│   ├── test_326/
│   │   └── test.xml
│   ├── test_327/
│   │   └── test.xml
│   ├── test_328/
│   │   └── test.xml
│   ├── test_329/
│   │   └── test.xml
│   ├── test_330/
│   │   └── test.xml
│   ├── test_331/
│   │   └── test.xml
│   ├── test_332/
│   │   └── test.xml
│   ├── test_333/
│   │   └── test.xml
│   ├── test_334/
│   │   ├── exc.txt
│   │   └── test.xml
│   ├── test_335/
│   │   └── test.xml
│   ├── test_336/
│   │   └── test.xml
│   ├── test_337/
│   │   └── test.xml
│   ├── test_338/
│   │   └── test.xml
│   ├── test_339/
│   │   └── test.xml
│   ├── test_340/
│   │   └── test.xml
│   ├── test_341/
│   │   └── test.xml
│   ├── test_342/
│   │   └── test.xml
│   ├── test_343/
│   │   └── test.xml
│   ├── test_344/
│   │   └── test.xml
│   ├── test_345/
│   │   └── test.xml
│   ├── test_346/
│   │   └── test.xml
│   ├── test_347/
│   │   └── test.xml
│   ├── test_348/
│   │   └── test.xml
│   ├── test_349/
│   │   └── test.xml
│   ├── test_350/
│   │   └── test.xml
│   ├── test_351/
│   │   └── test.xml
│   ├── test_352/
│   │   └── test.xml
│   ├── test_353/
│   │   └── test.xml
│   ├── test_354/
│   │   └── test.xml
│   ├── test_355/
│   │   └── test.xml
│   ├── test_356/
│   │   └── test.xml
│   ├── test_357/
│   │   └── test.xml
│   ├── test_358/
│   │   └── test.xml
│   ├── test_359/
│   │   └── test.xml
│   ├── test_360/
│   │   ├── stops.txt
│   │   └── test.xml
│   ├── test_361/
│   │   └── test.xml
│   ├── test_362/
│   │   └── test.xml
│   ├── test_363/
│   │   └── test.xml
│   ├── test_364/
│   │   └── test.xml
│   ├── test_365/
│   │   └── test.xml
│   ├── test_366/
│   │   └── test.xml
│   ├── test_367/
│   │   └── test.xml
│   ├── test_368/
│   │   └── test.xml
│   ├── test_369/
│   │   └── test.xml
│   ├── test_370/
│   │   └── test.xml
│   ├── test_371/
│   │   └── test.xml
│   ├── test_372/
│   │   └── test.xml
│   ├── test_373/
│   │   └── test.xml
│   ├── test_374/
│   │   └── test.xml
│   ├── test_375/
│   │   └── test.xml
│   ├── test_376/
│   │   └── test.xml
│   ├── test_377/
│   │   └── test.xml
│   ├── test_378/
│   │   └── test.xml
│   ├── test_379/
│   │   └── test.xml
│   ├── test_380/
│   │   └── test.xml
│   ├── test_381/
│   │   └── test.xml
│   ├── test_382/
│   │   └── test.xml
│   ├── test_383/
│   │   └── test.xml
│   ├── test_384/
│   │   └── test.xml
│   ├── test_385/
│   │   └── test.xml
│   ├── test_386/
│   │   └── test.xml
│   ├── test_387/
│   │   └── test.xml
│   ├── test_388/
│   │   └── test.xml
│   ├── test_389/
│   │   └── test.xml
│   ├── test_390/
│   │   └── test.xml
│   ├── test_391/
│   │   └── test.xml
│   ├── test_392/
│   │   └── test.xml
│   ├── test_393/
│   │   └── test.xml
│   ├── test_394/
│   │   └── test.xml
│   ├── test_395/
│   │   └── test.xml
│   ├── test_396/
│   │   └── test.xml
│   ├── test_397/
│   │   ├── stops.txt
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_398/
│   │   └── test.xml
│   ├── test_399/
│   │   └── test.xml
│   ├── test_400/
│   │   └── test.xml
│   ├── test_401/
│   │   ├── data.xml
│   │   └── test.xml
│   ├── test_402/
│   │   └── test.xml
│   ├── test_403/
│   │   ├── exc1.txt
│   │   ├── exceptions.txt
│   │   ├── stops.txt
│   │   ├── stops1.txt
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   └── wordforms2.txt
│   ├── test_404/
│   │   └── test.xml
│   ├── test_405/
│   │   ├── exc.txt
│   │   ├── stop.txt
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   └── wordforms1.txt
│   ├── test_406/
│   │   ├── data/
│   │   │   ├── index.0.spa
│   │   │   ├── index.0.spd
│   │   │   ├── index.0.spds
│   │   │   ├── index.0.spe
│   │   │   ├── index.0.sph
│   │   │   ├── index.0.sphi
│   │   │   ├── index.0.spi
│   │   │   ├── index.0.spm
│   │   │   ├── index.0.spp
│   │   │   ├── index.0.spt
│   │   │   ├── index.meta
│   │   │   ├── index.ram
│   │   │   ├── pq.meta
│   │   │   ├── rel320/
│   │   │   │   ├── idx320.meta
│   │   │   │   └── idx320.ram
│   │   │   └── rt67/
│   │   │       ├── hitless_words_chunk0_0.txt
│   │   │       ├── rt67.0.spa
│   │   │       ├── rt67.0.spd
│   │   │       ├── rt67.0.spds
│   │   │       ├── rt67.0.spe
│   │   │       ├── rt67.0.sph
│   │   │       ├── rt67.0.sphi
│   │   │       ├── rt67.0.spi
│   │   │       ├── rt67.0.spidx
│   │   │       ├── rt67.0.spm
│   │   │       ├── rt67.0.spp
│   │   │       ├── rt67.0.spt
│   │   │       ├── rt67.meta
│   │   │       └── rt67.settings
│   │   └── test.xml
│   ├── test_407/
│   │   └── test.xml
│   ├── test_408/
│   │   ├── test.xml
│   │   ├── word_a.txt
│   │   ├── words1.txt
│   │   ├── words2.txt
│   │   └── words3.txt
│   ├── test_409/
│   │   ├── ex1.txt
│   │   ├── hw1.txt
│   │   ├── hw3.txt
│   │   ├── stop1.txt
│   │   ├── stop2.txt
│   │   ├── test.xml
│   │   ├── wf1.txt
│   │   └── wf3.txt
│   ├── test_410/
│   │   └── test.xml
│   ├── test_411/
│   │   └── test.xml
│   ├── test_412/
│   │   └── test.xml
│   ├── test_413/
│   │   └── test.xml
│   ├── test_414/
│   │   └── test.xml
│   ├── test_415/
│   │   └── test.xml
│   ├── test_416/
│   │   └── test.xml
│   ├── test_417/
│   │   └── test.xml
│   ├── test_418/
│   │   ├── data1.xml
│   │   └── test.xml
│   ├── test_419/
│   │   └── test.xml
│   ├── test_420/
│   │   └── test.xml
│   ├── test_421/
│   │   └── test.xml
│   ├── test_422/
│   │   └── test.xml
│   ├── test_430/
│   │   └── test.xml
│   ├── test_431/
│   │   └── test.xml
│   ├── test_432/
│   │   ├── data1.csv
│   │   ├── data1.xml
│   │   └── test.xml
│   ├── test_433/
│   │   └── test.xml
│   ├── test_434/
│   │   └── test.xml
│   ├── test_435/
│   │   └── test.xml
│   ├── test_436/
│   │   └── test.xml
│   ├── test_437/
│   │   └── test.xml
│   ├── test_438/
│   │   └── test.xml
│   ├── test_439/
│   │   └── test.xml
│   ├── test_440/
│   │   └── test.xml
│   ├── test_441/
│   │   └── test.xml
│   ├── test_442/
│   │   └── test.xml
│   ├── test_443/
│   │   └── test.xml
│   ├── test_444/
│   │   └── test.xml
│   ├── test_445/
│   │   └── test.xml
│   ├── test_446/
│   │   └── test.xml
│   ├── test_447/
│   │   └── test.xml
│   ├── test_448/
│   │   └── test.xml
│   ├── test_449/
│   │   └── test.xml
│   ├── test_450/
│   │   └── test.xml
│   ├── test_451/
│   │   └── test.xml
│   ├── test_452/
│   │   └── test.xml
│   ├── test_453/
│   │   └── test.xml
│   ├── test_454/
│   │   └── test.xml
│   ├── test_455/
│   │   └── test.xml
│   ├── test_456/
│   │   └── test.xml
│   ├── test_457/
│   │   └── test.xml
│   ├── test_458/
│   │   └── test.xml
│   ├── test_459/
│   │   └── test.xml
│   ├── test_460/
│   │   └── test.xml
│   ├── test_461/
│   │   └── test.xml
│   ├── test_462/
│   │   └── test.xml
│   ├── test_463/
│   │   └── test.xml
│   ├── test_464/
│   │   ├── exceptions.txt
│   │   ├── stops.txt
│   │   ├── test.xml
│   │   └── wordforms.txt
│   ├── test_465/
│   │   └── test.xml
│   ├── test_466/
│   │   └── test.xml
│   ├── test_467/
│   │   └── test.xml
│   ├── test_468/
│   │   └── test.xml
│   ├── test_469/
│   │   └── test.xml
│   ├── test_470/
│   │   └── test.xml
│   ├── test_471/
│   │   ├── global.idf
│   │   ├── global_idf_src.txt
│   │   └── test.xml
│   ├── test_472/
│   │   ├── global.idf
│   │   ├── global2.idf
│   │   ├── global_idf2_src.txt
│   │   ├── global_idf_src.txt
│   │   └── test.xml
│   ├── test_473/
│   │   └── test.xml
│   ├── test_474/
│   │   └── test.xml
│   ├── test_475/
│   │   └── test.xml
│   ├── test_476/
│   │   └── test.xml
│   ├── test_477/
│   │   └── test.xml
│   ├── test_478/
│   │   └── test.xml
│   ├── test_479/
│   │   └── test.xml
│   ├── test_480/
│   │   ├── dummy.txt
│   │   ├── dummy_empty.txt
│   │   ├── exc1.txt
│   │   ├── hitless1.txt
│   │   ├── stops.txt
│   │   ├── stops_line.txt
│   │   ├── stops_mixed.txt
│   │   ├── test.xml
│   │   ├── wordforms.txt
│   │   └── wordforms2.txt
│   ├── test_481/
│   │   └── test.xml
│   ├── test_482/
│   │   └── test.xml
│   ├── test_483/
│   │   ├── data1.csv
│   │   ├── data2.csv
│   │   └── test.xml
│   ├── test_484/
│   │   └── test.xml
│   ├── test_485/
│   │   └── test.xml
│   ├── test_486/
│   │   └── test.xml
│   ├── test_487/
│   │   └── test.xml
│   ├── test_488/
│   │   └── test.xml
│   ├── test_columnar.conf
│   ├── test_icu.conf
│   ├── test_jieba.conf
│   ├── test_odbc.conf
│   ├── test_re.conf
│   ├── ubertest.php
│   ├── ubertest.php.in
│   ├── valgrind.supp
│   └── wordforms.txt
├── translator.config.yaml
├── translator.models.yaml
├── translator.role.tpl
└── valgrind
Download .txt
Showing preview only (1,079K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (10991 symbols across 594 files)

FILE: api/libsphinxclient/sphinxclient.c
  type st_filter (line 93) | struct st_filter
  type st_override (line 117) | struct st_override
  type st_sphinx_client (line 126) | struct st_sphinx_client
  function sphinx_client (line 206) | sphinx_client * sphinx_create ( sphinx_bool copy_args )
  function sphinx_free_results (line 292) | static void sphinx_free_results ( sphinx_client * client )
  function sphinx_cleanup (line 324) | void sphinx_cleanup ( sphinx_client * client )
  function sphinx_destroy (line 341) | void sphinx_destroy ( sphinx_client * client )
  function set_error (line 374) | static void set_error ( sphinx_client * client, const char * template, ....
  type st_memblock (line 392) | struct st_memblock
  type st_memblock (line 401) | struct st_memblock
  type st_memblock (line 406) | struct st_memblock
  type st_memblock (line 409) | struct st_memblock
  function unchain (line 431) | static void unchain ( sphinx_client * client, const void * ptr )
  function unchain_all (line 453) | static void unchain_all ( sphinx_client * client )
  function sphinx_bool (line 472) | sphinx_bool sphinx_set_server ( sphinx_client * client, const char * hos...
  function sphinx_bool (line 487) | sphinx_bool sphinx_set_connect_timeout ( sphinx_client * client, float s...
  function sphinx_bool (line 497) | sphinx_bool sphinx_set_limits ( sphinx_client * client, int offset, int ...
  function sphinx_bool (line 519) | sphinx_bool sphinx_set_max_query_time ( sphinx_client * client, int max_...
  function sphinx_bool (line 532) | sphinx_bool sphinx_set_match_mode ( sphinx_client * client, int mode )
  function sphinx_bool (line 547) | sphinx_bool sphinx_set_ranking_mode ( sphinx_client * client, int ranker...
  function sphinx_bool (line 561) | sphinx_bool sphinx_set_sort_mode ( sphinx_client * client, int mode, con...
  function sphinx_bool (line 590) | sphinx_bool sphinx_set_field_weights ( sphinx_client * client, int num_w...
  function sphinx_bool (line 623) | sphinx_bool sphinx_set_index_weights ( sphinx_client * client, int num_w...
  function sphinx_bool (line 656) | sphinx_bool sphinx_set_id_range ( sphinx_client * client, sphinx_uint64_...
  type st_filter (line 670) | struct st_filter
  type st_filter (line 676) | struct st_filter
  function sphinx_bool (line 688) | sphinx_bool sphinx_add_filter ( sphinx_client * client, const char * att...
  function sphinx_bool (line 714) | sphinx_bool sphinx_add_filter_string ( sphinx_client * client, const cha...
  function sphinx_bool (line 738) | sphinx_bool sphinx_add_filter_range ( sphinx_client * client, const char...
  function sphinx_bool (line 763) | sphinx_bool sphinx_add_filter_float_range ( sphinx_client * client, cons...
  function sphinx_bool (line 788) | sphinx_bool sphinx_set_geoanchor ( sphinx_client * client, const char * ...
  function sphinx_bool (line 808) | sphinx_bool sphinx_set_groupby ( sphinx_client * client, const char * at...
  function sphinx_bool (line 836) | sphinx_bool sphinx_set_groupby_distinct ( sphinx_client * client, const ...
  function sphinx_bool (line 851) | sphinx_bool sphinx_set_retries ( sphinx_client * client, int count, int ...
  function sphinx_bool (line 867) | sphinx_bool sphinx_add_override ( sphinx_client * client, const char * a...
  function sphinx_bool (line 899) | sphinx_bool sphinx_set_select ( sphinx_client * client, const char * sel...
  function set_bit (line 916) | void set_bit ( int * flags, int bit, sphinx_bool enable )
  function sphinx_bool (line 926) | sphinx_bool sphinx_set_query_flags ( sphinx_client * client, const char ...
  function sphinx_reset_query_flags (line 982) | void sphinx_reset_query_flags ( sphinx_client * client )
  function sphinx_bool (line 989) | sphinx_bool sphinx_set_outer_select ( sphinx_client * client, const char...
  function sphinx_reset_outer_select (line 1009) | void sphinx_reset_outer_select ( sphinx_client * client )
  function sphinx_reset_filters (line 1022) | void sphinx_reset_filters ( sphinx_client * client )
  function sphinx_reset_groupby (line 1048) | void sphinx_reset_groupby ( sphinx_client * client )
  function sphinx_dismiss_requests (line 1063) | static int sphinx_dismiss_requests ( sphinx_client * client )
  function sphinx_result (line 1073) | sphinx_result * sphinx_query ( sphinx_client * client, const char * quer...
  function safestrlen (line 1100) | static size_t safestrlen ( const char * s )
  function calc_req_len (line 1106) | static int calc_req_len ( sphinx_client * client, const char * query, co...
  function send_bytes (line 1168) | static void send_bytes ( char ** pp, const char * bytes, int len )
  function send_int (line 1181) | static void send_int ( char ** pp, unsigned int value )
  function send_word (line 1192) | static void send_word ( char ** pp, unsigned short value )
  function send_str (line 1201) | static void send_str ( char ** pp, const char * s )
  function send_qword (line 1210) | static void send_qword ( char ** pp, sphinx_uint64_t value )
  function send_float (line 1217) | static void send_float ( char ** pp, float value )
  function sphinx_add_query (line 1230) | int sphinx_add_query ( sphinx_client * client, const char * query, const...
  function sock_errno (line 1408) | static int sock_errno ()
  function sock_set_nonblocking (line 1418) | static int sock_set_nonblocking ( int sock )
  function sock_set_blocking (line 1429) | static int sock_set_blocking ( int sock )
  function sock_close (line 1440) | void sock_close ( int sock )
  function SPH_FD_SET (line 1457) | void SPH_FD_SET ( int fd, fd_set * fdset ) { FD_SET ( fd, fdset ); }
  function sphinx_bool (line 1465) | static sphinx_bool net_write ( int fd, const char * bytes, int len, sphi...
  function sphinx_bool (line 1490) | static sphinx_bool net_read ( int fd, char * buf, int len, sphinx_client...
  function net_create_inet_sock (line 1521) | static int net_create_inet_sock ( sphinx_client * client )
  function net_create_unix_sock (line 1584) | static int net_create_unix_sock ( sphinx_client * client )
  function net_connect_get (line 1644) | static int net_connect_get ( sphinx_client * client )
  function sphinx_bool (line 1722) | static sphinx_bool net_sock_eof ( int sock )
  function net_connect_ex (line 1757) | static int net_connect_ex ( sphinx_client * client )
  function unpack_short (line 1777) | static unsigned short unpack_short ( char ** cur )
  function unpack_int (line 1786) | static unsigned int unpack_int ( char ** cur )
  function sphinx_uint64_t (line 1808) | static sphinx_uint64_t unpack_qword ( char ** cur )
  function unpack_float (line 1817) | static float unpack_float ( char ** cur )
  function net_get_response (line 1829) | static void net_get_response ( int fd, sphinx_client * client )
  function sphinx_bool (line 1922) | sphinx_bool sphinx_open ( sphinx_client * client )
  function sphinx_bool (line 1952) | sphinx_bool sphinx_close ( sphinx_client * client )
  function sphinx_result (line 1985) | sphinx_result * sphinx_run_queries ( sphinx_client * client )
  function sphinx_get_num_results (line 2174) | int sphinx_get_num_results ( sphinx_client * client )
  function sphinx_uint64_t (line 2180) | sphinx_uint64_t sphinx_get_id ( sphinx_result * result, int match )
  function sphinx_get_weight (line 2186) | int sphinx_get_weight ( sphinx_result * result, int match )
  function sphinx_int64_t (line 2192) | sphinx_int64_t sphinx_get_int ( sphinx_result * result, int match, int a...
  function sphinx_get_float (line 2201) | float sphinx_get_float ( sphinx_result * result, int match, int attr )
  function sphinx_uint64_t (line 2218) | sphinx_uint64_t sphinx_get_mva64_value ( unsigned int * mva, int i )
  function sphinx_bool (line 2235) | static sphinx_bool net_simple_query ( sphinx_client * client, char * buf...
  function sphinx_init_excerpt_options (line 2261) | void sphinx_init_excerpt_options ( sphinx_excerpt_options * opts )
  function sphinx_update_attributes (line 2410) | int sphinx_update_attributes ( sphinx_client * client, const char * inde...
  function sphinx_update_attributes_mva (line 2476) | int sphinx_update_attributes_mva	( sphinx_client * client, const char * ...
  function sphinx_keyword_info (line 2535) | sphinx_keyword_info * sphinx_build_keywords ( sphinx_client * client, co...
  function sphinx_status_destroy (line 2668) | void sphinx_status_destroy ( char ** status, int num_rows, int num_cols )

FILE: api/libsphinxclient/sphinxclient.h
  type __int64 (line 115) | typedef __int64				sphinx_int64_t;
  type sphinx_uint64_t (line 116) | typedef unsigned __int64	sphinx_uint64_t;
  type sphinx_int64_t (line 118) | typedef long long			sphinx_int64_t;
  type sphinx_uint64_t (line 119) | typedef unsigned long long	sphinx_uint64_t;
  type sphinx_bool (line 123) | typedef int					sphinx_bool;
  type sphinx_client (line 129) | typedef struct st_sphinx_client	sphinx_client;
  type sphinx_wordinfo (line 131) | typedef struct st_sphinx_wordinfo
  type sphinx_result (line 139) | typedef struct st_sphinx_result
  type sphinx_excerpt_options (line 163) | typedef struct st_sphinx_excerpt_options
  type sphinx_keyword_info (line 187) | typedef struct st_sphinx_keyword_info

FILE: api/libsphinxclient/test.c
  function die (line 28) | void die ( const char * template, ... )
  function net_init (line 40) | void net_init ()
  function print_name (line 53) | void print_name (const char* szname )
  function test_query (line 58) | void test_query ( sphinx_client * client, const char * query, const char...
  function test_excerpt (line 129) | void test_excerpt ( sphinx_client * client )
  function test_excerpt_spz (line 165) | void test_excerpt_spz ( sphinx_client * client )
  function test_persist_work (line 217) | void test_persist_work ( sphinx_client * client )
  function test_update (line 286) | void test_update ( sphinx_client * client, sphinx_uint64_t id )
  function test_update_mva (line 303) | void test_update_mva ( sphinx_client * client )
  function test_keywords (line 322) | void test_keywords ( sphinx_client * client )
  function test_status (line 347) | void test_status ( sphinx_client * client )
  function test_group_by (line 390) | void test_group_by ( sphinx_client * client, const char * attr )
  function test_filter (line 399) | void test_filter ( sphinx_client * client )
  function title (line 419) | void title ( const char * name )
  function main (line 427) | int main ( int argc, char ** argv )

FILE: api/ruby/lib/sphinx.rb
  type Sphinx (line 5) | module Sphinx

FILE: api/ruby/lib/sphinx/client.rb
  type Sphinx (line 35) | module Sphinx
    class SphinxError (line 38) | class SphinxError < StandardError; end
    class SphinxArgumentError (line 39) | class SphinxArgumentError < SphinxError; end
    class SphinxConnectError (line 40) | class SphinxConnectError < SphinxError; end
    class SphinxResponseError (line 41) | class SphinxResponseError < SphinxError; end
    class SphinxInternalError (line 42) | class SphinxInternalError < SphinxError; end
    class SphinxTemporaryError (line 43) | class SphinxTemporaryError < SphinxError; end
    class SphinxUnknownError (line 44) | class SphinxUnknownError < SphinxError; end
    class Client (line 48) | class Client
      method initialize (line 182) | def initialize
      method GetLastError (line 223) | def GetLastError
      method GetLastWarning (line 228) | def GetLastWarning
      method SetServer (line 233) | def SetServer(host, port)
      method SetLimits (line 243) | def SetLimits(offset, limit, max = 0, cutoff = 0)
      method SetMaxQueryTime (line 259) | def SetMaxQueryTime(max)
      method SetMatchMode (line 266) | def SetMatchMode(mode)
      method SetRankingMode (line 280) | def SetRankingMode(ranker, rankexpr = '')
      method SetSortMode (line 296) | def SetSortMode(mode, sortby = '')
      method SetWeights (line 313) | def SetWeights(weights)
      method SetFieldWeights (line 328) | def SetFieldWeights(weights)
      method SetIndexWeights (line 339) | def SetIndexWeights(weights)
      method SetIDRange (line 352) | def SetIDRange(min, max)
      method SetFilter (line 365) | def SetFilter(attribute, values, exclude = false)
      method SetFilterRange (line 383) | def SetFilterRange(attribute, min, max, exclude = false)
      method SetFilterFloatRange (line 396) | def SetFilterFloatRange(attribute, min, max, exclude = false)
      method SetGeoAnchor (line 415) | def SetGeoAnchor(attrlat, attrlong, lat, long)
      method SetGroupBy (line 460) | def SetGroupBy(attribute, func, groupsort = '@group desc')
      method SetGroupDistinct (line 476) | def SetGroupDistinct(attribute)
      method SetRetries (line 482) | def SetRetries(count, delay = 0)
      method SetOverride (line 494) | def SetOverride(attrname, attrtype, values)
      method SetSelect (line 504) | def SetSelect(select)
      method ResetFilters (line 510) | def ResetFilters
      method ResetGroupBy (line 516) | def ResetGroupBy
      method ResetOverrides (line 524) | def ResetOverrides
      method Query (line 554) | def Query(query, index = '*', comment = '')
      method AddQuery (line 583) | def AddQuery(query, index = '*', comment = '')
      method RunQueries (line 703) | def RunQueries
      method BuildExcerpts (line 855) | def BuildExcerpts(docs, index, words, opts = {})
      method BuildKeywords (line 936) | def BuildKeywords(query, index, hits)
      method UpdateAttributes (line 985) | def UpdateAttributes(index, attrs, values, mva = false, ignoreexiste...
      method Connect (line 1046) | def Connect
      method GetResponse (line 1070) | def GetResponse(sock, client_version)
      method PerformRequest (line 1133) | def PerformRequest(command, request, additional = nil)
      method assert (line 1148) | def assert

FILE: api/ruby/lib/sphinx/request.rb
  type Sphinx (line 1) | module Sphinx
    class Request (line 4) | class Request
      method initialize (line 6) | def initialize
      method put_int (line 11) | def put_int(*ints)
      method put_int64 (line 16) | def put_int64(*ints)
      method put_string (line 21) | def put_string(*strings)
      method put_float (line 26) | def put_float(*floats)
      method put_int_array (line 35) | def put_int_array(arr)
      method put_int64_array (line 40) | def put_int64_array(arr)
      method to_s (line 46) | def to_s

FILE: api/ruby/lib/sphinx/response.rb
  type Sphinx (line 1) | module Sphinx
    class Response (line 4) | class Response
      method initialize (line 6) | def initialize(response)
      method position (line 13) | def position
      method size (line 18) | def size
      method eof? (line 23) | def eof?
      method get_int (line 28) | def get_int
      method get_int64 (line 36) | def get_int64
      method get_ints (line 44) | def get_ints(count)
      method get_string (line 53) | def get_string
      method get_float (line 62) | def get_float

FILE: api/ruby/spec/client_response_spec.rb
  function validate_results_wifi (line 75) | def validate_results_wifi(result)

FILE: api/ruby/spec/client_spec.rb
  class SphinxSpecError (line 3) | class SphinxSpecError < StandardError; end
  type SphinxFixtureHelper (line 5) | module SphinxFixtureHelper
    function sphinx_fixture (line 6) | def sphinx_fixture(name)
  type SphinxApiCall (line 11) | module SphinxApiCall
    function create_sphinx (line 12) | def create_sphinx
    function safe_call (line 20) | def safe_call

FILE: api/ruby/spec/fixtures/sphinxapi.php
  function sphPack64 (line 88) | function sphPack64 ( $v )
  function sphUnpack64 (line 134) | function sphUnpack64 ( $v )
  class SphinxClient (line 179) | class SphinxClient
    method SphinxClient (line 220) | function SphinxClient ()
    method GetLastError (line 260) | function GetLastError ()
    method GetLastWarning (line 266) | function GetLastWarning ()
    method SetServer (line 272) | function SetServer ( $host, $port )
    method _MBPush (line 283) | function _MBPush ()
    method _MBPop (line 294) | function _MBPop ()
    method _Connect (line 301) | function _Connect ()
    method _OldConnect (line 306) | function _OldConnect()
    method _GetResponse (line 330) | function _GetResponse ( $fp, $client_ver )
    method _OldGetResponse (line 335) | function _OldGetResponse ( $fp, $client_ver )
    method SetLimits (line 406) | function SetLimits ( $offset, $limit, $max=0, $cutoff=0 )
    method SetMaxQueryTime (line 423) | function SetMaxQueryTime ( $max )
    method SetMatchMode (line 431) | function SetMatchMode ( $mode )
    method SetRankingMode (line 444) | function SetRankingMode ( $ranker )
    method SetSortMode (line 455) | function SetSortMode ( $mode, $sortby="" )
    method SetWeights (line 473) | function SetWeights ( $weights )
    method SetFieldWeights (line 483) | function SetFieldWeights ( $weights )
    method SetIndexWeights (line 495) | function SetIndexWeights ( $weights )
    method SetIDRange (line 508) | function SetIDRange ( $min, $max )
    method SetFilter (line 519) | function SetFilter ( $attribute, $values, $exclude=false )
    method SetFilterRange (line 536) | function SetFilterRange ( $attribute, $min, $max, $exclude=false )
    method SetFilterFloatRange (line 548) | function SetFilterFloatRange ( $attribute, $min, $max, $exclude=false )
    method SetGeoAnchor (line 561) | function SetGeoAnchor ( $attrlat, $attrlong, $lat, $long )
    method SetGroupBy (line 572) | function SetGroupBy ( $attribute, $func, $groupsort="@group desc" )
    method SetGroupDistinct (line 589) | function SetGroupDistinct ( $attribute )
    method SetRetries (line 596) | function SetRetries ( $count, $delay=0 )
    method SetArrayResult (line 606) | function SetArrayResult ( $arrayresult )
    method SetOverride (line 615) | function SetOverride ( $attrname, $attrtype, $values )
    method SetSelect (line 625) | function SetSelect ( $select )
    method ResetFilters (line 634) | function ResetFilters ()
    method ResetGroupBy (line 641) | function ResetGroupBy ()
    method ResetOverrides (line 650) | function ResetOverrides ()
    method Query (line 659) | function Query ( $query, $index="*", $comment="" )
    method _PackFloat (line 678) | function _PackFloat ( $f )
    method AddQuery (line 687) | function AddQuery ( $query, $index="*", $comment="" )
    method RunQueries (line 800) | function RunQueries ()
    method BuildExcerpts (line 1003) | function BuildExcerpts ( $docs, $index, $words, $opts=array() )
    method BuildKeywords (line 1108) | function BuildKeywords ( $query, $index, $hits )
    method EscapeString (line 1185) | function EscapeString ( $string )
    method UpdateAttributes (line 1199) | function UpdateAttributes ( $index, $attrs, $values, $mva=false )

FILE: api/ruby/spec/sphinx/sphinx_test.sql
  type `links` (line 20) | CREATE TABLE `links` (
  type `tags` (line 34) | CREATE TABLE `tags` (
  type `links_tags` (line 44) | CREATE TABLE `links_tags` (
  type `links64` (line 54) | CREATE TABLE `links64` (

FILE: api/ruby/tasks/sphinx.rake
  function load_config (line 60) | def load_config

FILE: api/sphinxapi.php
  function sphPackI64 (line 151) | function sphPackI64 ( $v )
  function sphPackU64 (line 200) | function sphPackU64 ( $v )
  function sphUnpackU64 (line 259) | function sphUnpackU64 ( $v )
  function sphUnpackI64 (line 325) | function sphUnpackI64 ( $v )
  function sphFixUint (line 394) | function sphFixUint ( $value )
  function sphSetBit (line 409) | function sphSetBit ( $flag, $bit, $on )
  class SphinxClient (line 424) | class SphinxClient
    method __construct (line 479) | function __construct ()
    method __destruct (line 533) | function __destruct()
    method GetLastError (line 540) | function GetLastError ()
    method GetLastWarning (line 546) | function GetLastWarning ()
    method IsConnectError (line 552) | function IsConnectError()
    method SetServer (line 558) | function SetServer ( $host, $port = 0 )
    method SetConnectTimeout (line 580) | function SetConnectTimeout ( $timeout )
    method _Send (line 587) | function _Send ( $handle, $data, $length )
    method _MBPush (line 601) | function _MBPush ()
    method _MBPop (line 612) | function _MBPop ()
    method _Connect (line 619) | function _Connect ()
    method _GetResponse (line 690) | function _GetResponse ( $fp, $client_ver )
    method SetLimits (line 762) | function SetLimits ( $offset, $limit, $max=0, $cutoff=0 )
    method SetMaxQueryTime (line 779) | function SetMaxQueryTime ( $max )
    method SetMatchMode (line 787) | function SetMatchMode ( $mode )
    method SetRankingMode (line 801) | function SetRankingMode ( $ranker, $rankexpr="" )
    method SetSortMode (line 810) | function SetSortMode ( $mode, $sortby="" )
    method SetWeights (line 828) | function SetWeights ( $weights )
    method SetFieldWeights (line 834) | function SetFieldWeights ( $weights )
    method SetIndexWeights (line 846) | function SetIndexWeights ( $weights )
    method SetIDRange (line 859) | function SetIDRange ( $min, $max )
    method SetFilter (line 870) | function SetFilter ( $attribute, $values, $exclude=false )
    method SetFilterString (line 886) | function SetFilterString ( $attribute, $value, $exclude=false )
    method SetFilterStringList (line 894) | function SetFilterStringList ( $attribute, $value, $exclude=false )
    method SetFilterRange (line 908) | function SetFilterRange ( $attribute, $min, $max, $exclude=false )
    method SetFilterFloatRange (line 920) | function SetFilterFloatRange ( $attribute, $min, $max, $exclude=false )
    method SetGeoAnchor (line 933) | function SetGeoAnchor ( $attrlat, $attrlong, $lat, $long )
    method SetGroupBy (line 944) | function SetGroupBy ( $attribute, $func, $groupsort="@group desc" )
    method SetGroupDistinct (line 961) | function SetGroupDistinct ( $attribute )
    method SetRetries (line 968) | function SetRetries ( $count, $delay=0 )
    method SetArrayResult (line 978) | function SetArrayResult ( $arrayresult )
    method SetOverride (line 987) | function SetOverride ( $attrname, $attrtype, $values )
    method SetSelect (line 998) | function SetSelect ( $select )
    method SetQueryFlag (line 1004) | function SetQueryFlag ( $flag_name, $flag_value )
    method SetOuterSelect (line 1035) | function SetOuterSelect ( $orderby, $offset, $limit )
    method SetTokenFilter (line 1050) | function SetTokenFilter ( $library, $name, $opts="" )
    method ResetFilters (line 1064) | function ResetFilters ()
    method ResetGroupBy (line 1071) | function ResetGroupBy ()
    method ResetOverrides (line 1080) | function ResetOverrides ()
    method ResetQueryFlag (line 1085) | function ResetQueryFlag ()
    method ResetOuterSelect (line 1091) | function ResetOuterSelect ()
    method Query (line 1103) | function Query ( $query, $index="*", $comment="" )
    method _PackFloat (line 1123) | function _PackFloat ( $f )
    method AddQuery (line 1132) | function AddQuery ( $query, $index="*", $comment="" )
    method RunQueries (line 1274) | function RunQueries ()
    method _ParseSearchResponse (line 1312) | function _ParseSearchResponse ( $response, $nreqs )
    method BuildExcerpts (line 1496) | function BuildExcerpts ( $docs, $index, $words, $opts=array() )
    method BuildKeywords (line 1621) | function BuildKeywords ( $query, $index, $hits )
    method EscapeString (line 1698) | function EscapeString ( $string )
    method UpdateAttributes (line 1712) | function UpdateAttributes ( $index, $attrs, $values, $type=SPH_UPDATE_...
    method Open (line 1806) | function Open()
    method Close (line 1825) | function Close()
    method Status (line 1843) | function Status ($session=false)
    method FlushAttributes (line 1881) | function FlushAttributes ()

FILE: example.sql
  type test (line 2) | CREATE TABLE test.documents
  type test (line 19) | CREATE TABLE test.tags

FILE: misc/manticore_lldb.py
  class VecTraitsSynthProvider (line 7) | class VecTraitsSynthProvider:
    method __init__ (line 9) | def __init__(self, valobj, dict):
    method num_children (line 13) | def num_children(self):
    method num_children_impl (line 18) | def num_children_impl(self):
    method get_child_at_index (line 30) | def get_child_at_index(self, index):
    method update (line 41) | def update(self):
    method get_child_index (line 60) | def get_child_index(self, name):
    method has_children (line 66) | def has_children(self):
  function VecTraitsSummaryProvider (line 70) | def VecTraitsSummaryProvider(valobj, internal_dict):
  function VecSummaryProvider (line 79) | def VecSummaryProvider(valobj, internal_dict):
  function LocatorSummaryProvider (line 90) | def LocatorSummaryProvider(valobj, internal_dict):
  function JsonNodeValue (line 107) | def JsonNodeValue(valobj):
  function JsonNodeSummaryProvider (line 141) | def JsonNodeSummaryProvider(valobj, internal_dict):
  function __lldb_init_module (line 165) | def __lldb_init_module(debugger, unused):

FILE: misc/raminfo.py
  function get_dword (line 6) | def get_dword(f):
  function get_id (line 10) | def get_id(f, id64):
  function skip_vec (line 17) | def skip_vec(f, entry_size):
  function main (line 21) | def main(argv):

FILE: misc/resolve.py
  function myopen (line 11) | def myopen(name):

FILE: misc/search_json_pretty.php
  function print_json_row (line 35) | function print_json_row ( $j, $name )

FILE: misc/suggest/suggest.php
  function BuildTrigrams (line 15) | function BuildTrigrams ( $keyword )
  function BuildDictionarySQL (line 29) | function BuildDictionarySQL ( $out, $in )
  function MakeSuggestion (line 76) | function MakeSuggestion ( $keyword )

FILE: mysqlse/ha_sphinx.cc
  function T (line 85) | inline T sphUnalignedRead ( const T & tRef )
  function sphUnalignedWrite (line 91) | void sphUnalignedWrite ( void * pPtr, const T & tVal )
  function T (line 100) | inline T sphUnalignedRead ( const T & tRef )
  function sphUnalignedWrite (line 112) | void sphUnalignedWrite ( void * pPtr, const T & tVal )
  type ESphSortOrder (line 167) | enum ESphSortOrder
  type ESphMatchMode (line 180) | enum ESphMatchMode
  type ESphRankMode (line 194) | enum ESphRankMode
  type ESphGroupBy (line 211) | enum ESphGroupBy
  function SPH_DEBUG (line 253) | inline void SPH_DEBUG ( const char * format, ... )
  function SPH_DEBUG (line 263) | inline void SPH_DEBUG ( const char *, ... ) {}
  type CSphSEShare (line 289) | struct CSphSEShare
    method CSphSEShare (line 313) | CSphSEShare ()
    method ResetTable (line 343) | void ResetTable ()
  type CSphSEAttr (line 353) | struct CSphSEAttr
    method CSphSEAttr (line 359) | CSphSEAttr()
  type CSphSEWordStats (line 372) | struct CSphSEWordStats
    method CSphSEWordStats (line 378) | CSphSEWordStats ()
  type CSphSEStats (line 391) | struct CSphSEStats
    method CSphSEStats (line 402) | CSphSEStats()
    method Reset (line 408) | void Reset ()
  type CSphSEThreadTable (line 426) | struct CSphSEThreadTable
    method CSphSEThreadTable (line 451) | CSphSEThreadTable ( const ha_sphinx * pHandler )
  type CSphTLS (line 465) | struct CSphTLS
    method CSphTLS (line 469) | explicit CSphTLS ( const ha_sphinx * pHandler )
  type ESphFilter (line 488) | enum ESphFilter
  type CSphSEFilter (line 497) | struct CSphSEFilter
    method CSphSEFilter (line 511) | CSphSEFilter ()
  function uint32 (line 532) | inline uint32 sphF2DW ( float f )	{ union { float f; uint32 d; } u; u.f ...
  function sphDW2F (line 535) | inline float sphDW2F ( uint32 d )	{ union { float f; uint32 d; } u; u.d ...
  type CSphSEQuery (line 539) | struct CSphSEQuery
    type Override_t (line 592) | struct Override_t
    method SendWord (line 627) | void			SendWord ( short int v )		{ v = ntohs(v); SendBytes ( &v, sizeo...
    method SendInt (line 628) | void			SendInt ( int v )				{ v = ntohl(v); SendBytes ( &v, sizeof(v) ...
    method SendDword (line 629) | void			SendDword ( uint v )			{ v = ntohl(v) ;SendBytes ( &v, sizeof(v...
    method SendUint64 (line 630) | void			SendUint64 ( ulonglong v )		{ SendDword ( (uint)(v>>32) ); Send...
    method SendString (line 631) | void			SendString ( const char * v )	{ int iLen = strlen(v); SendDword...
    method SendFloat (line 632) | void			SendFloat ( float v )			{ SendDword ( sphF2DW(v) ); }
  type ha_panic_function (line 649) | enum ha_panic_function
  type ha_stat_type (line 650) | enum ha_stat_type
  function byte (line 715) | static byte * sphinx_get_key ( const byte * pSharePtr, GetKeyLength_t * ...
  function sphinx_init_func (line 725) | static int sphinx_init_func ( void * p )
  function sphinx_init_func_for_handlerton (line 752) | static bool sphinx_init_func_for_handlerton ()
  function sphinx_close_connection (line 761) | static int sphinx_close_connection ( handlerton * hton, THD * thd )
  function sphinx_done_func (line 773) | static int sphinx_done_func ( void * )
  function sphinx_panic (line 791) | static int sphinx_panic ( handlerton * hton, enum ha_panic_function )
  function sphinx_close_connection (line 798) | static int sphinx_close_connection ( THD * thd )
  type ha_stat_type (line 816) | enum ha_stat_type
  function sphinx_show_status (line 818) | bool sphinx_show_status ( THD * thd )
  function sphLogError (line 952) | static void sphLogError ( const char * sFmt, ... )
  function ParseUrl (line 998) | static bool ParseUrl ( CSphSEShare * share, TABLE * table, bool bCreate )
  function CSphSEShare (line 1178) | static CSphSEShare * get_share ( const char * table_name, TABLE * table )
    method CSphSEShare (line 313) | CSphSEShare ()
    method ResetTable (line 343) | void ResetTable ()
  function free_share (line 1238) | static int free_share ( CSphSEShare * pShare )
  function handler (line 1255) | static handler * sphinx_create_handler ( handlerton * hton, TABLE_SHARE ...
  function myisattr (line 1398) | static bool myisattr ( char c )
  function myismagic (line 1407) | static bool myismagic ( char c )
  type sockaddr_in (line 2127) | struct sockaddr_in
  type sockaddr_un (line 2129) | struct sockaddr_un
  type sockaddr (line 2134) | struct sockaddr
  type sockaddr (line 2142) | struct sockaddr
  type addrinfo (line 2158) | struct addrinfo
  type hostent (line 2167) | struct hostent
  type sockaddr_in (line 2187) | struct sockaddr_in
  type sockaddr (line 2199) | struct sockaddr
  type ha_extra_function (line 2300) | enum ha_extra_function
  function IsIntegerFieldType (line 2403) | static inline bool IsIntegerFieldType ( enum_field_types eType )
  function IsIDField (line 2409) | static inline bool IsIDField ( Field * pField )
  function uint32 (line 2504) | uint32 ha_sphinx::UnpackDword ()
  function Item (line 2726) | const Item * ha_sphinx::cond_push ( const Item *cond )
  function CSphSEThreadTable (line 2796) | CSphSEThreadTable * ha_sphinx::GetTls()
    method CSphSEThreadTable (line 451) | CSphSEThreadTable ( const ha_sphinx * pHandler )
  type ha_rkey_function (line 2836) | enum ha_rkey_function
  type ha_rkey_function (line 3013) | enum ha_rkey_function
  function THR_LOCK_DATA (line 3332) | THR_LOCK_DATA ** ha_sphinx::store_lock ( THD *, THR_LOCK_DATA ** to,
  function ha_rows (line 3371) | ha_rows ha_sphinx::records_in_range ( uint, key_range *, key_range * )
  function CSphSEStats (line 3523) | CSphSEStats * sphinx_get_stats ( THD * thd, SHOW_VAR * out )
    method CSphSEStats (line 402) | CSphSEStats()
    method Reset (line 408) | void Reset ()
  function sphinx_showfunc_total (line 3544) | int sphinx_showfunc_total ( THD * thd, SHOW_VAR * out, char * )
  function sphinx_showfunc_total_found (line 3555) | int sphinx_showfunc_total_found ( THD * thd, SHOW_VAR * out, char * )
  function sphinx_showfunc_time (line 3566) | int sphinx_showfunc_time ( THD * thd, SHOW_VAR * out, char * )
  function sphinx_showfunc_word_count (line 3577) | int sphinx_showfunc_word_count ( THD * thd, SHOW_VAR * out, char * )
  function sphinx_showfunc_error (line 3645) | int sphinx_showfunc_error ( THD * thd, SHOW_VAR * out, char * )
  type st_mysql_storage_engine (line 3657) | struct st_mysql_storage_engine
  type st_mysql_show_var (line 3662) | struct st_mysql_show_var

FILE: mysqlse/ha_sphinx.h
  type uchar (line 17) | typedef uchar byte;
  type CSphReqQuery (line 23) | struct CSphReqQuery
  type CSphSEShare (line 24) | struct CSphSEShare
  type CSphSEAttr (line 25) | struct CSphSEAttr
  type CSphSEStats (line 26) | struct CSphSEStats
  type CSphSEThreadTable (line 27) | struct CSphSEThreadTable
  function class (line 30) | class ha_sphinx : public handler

FILE: mysqlse/snippets_udf.cc
  function T (line 45) | inline T sphUnalignedRead ( const T & tRef )
  function sphUnalignedWrite (line 51) | void sphUnalignedWrite ( void * pPtr, const T & tVal )
  function T (line 60) | inline T sphUnalignedRead ( const T & tRef )
  function sphUnalignedWrite (line 72) | void sphUnalignedWrite ( void * pPtr, const T & tVal )
  function DWORD (line 91) | inline DWORD sphF2DW ( float f ) { union { float f; uint32 d; } u; u.f =...
  function sphShowErrno (line 107) | static inline void sphShowErrno ( const char * sCall )
  function sphSend (line 116) | static bool sphSend ( int iFd, const char * pBuffer, int iSize, bool bRe...
  function sphRecv (line 130) | static bool sphRecv ( int iFd, char * pBuffer, int iSize, bool bReportEr...
  class CSphBuffer (line 179) | class CSphBuffer
    method CSphBuffer (line 189) | explicit CSphBuffer ( const int iSize )
    method Finalize (line 206) | bool Finalize()
    method SendWord (line 213) | void SendWord ( short int v )					{ v = ntohs(v); SendBytes ( &v, size...
    method SendInt (line 214) | void SendInt ( int v )							{ v = ntohl(v); SendBytes ( &v, sizeof(v)...
    method SendDword (line 215) | void SendDword ( DWORD v )						{ v = ntohl(v) ;SendBytes ( &v, sizeof...
    method SendUint64 (line 216) | void SendUint64 ( ulonglong v )					{ SendDword ( uint ( v>>32 ) ); Se...
    method SendString (line 217) | void SendString ( const char * v )				{ SendString ( v, strlen(v) ); }
    method SendString (line 218) | void SendString ( const char * v, int iLen )	{ SendDword(iLen); SendBy...
    method SendFloat (line 219) | void SendFloat ( float v )						{ SendDword ( sphF2DW(v) ); }
  type CSphUrl (line 236) | struct CSphUrl
    method CSphUrl (line 247) | CSphUrl()
  type sockaddr_in (line 357) | struct sockaddr_in
  type sockaddr_un (line 359) | struct sockaddr_un
  type sockaddr (line 364) | struct sockaddr
  type sockaddr (line 372) | struct sockaddr
  type addrinfo (line 387) | struct addrinfo
  type hostent (line 396) | struct hostent
  type sockaddr (line 428) | struct sockaddr
  type CSphResponse (line 490) | struct CSphResponse
    method CSphResponse (line 495) | CSphResponse ()
    method CSphResponse (line 500) | explicit CSphResponse ( DWORD uSize )
  function CSphResponse (line 514) | CSphResponse *
    method CSphResponse (line 495) | CSphResponse ()
    method CSphResponse (line 500) | explicit CSphResponse ( DWORD uSize )
  type CSphSnippets (line 570) | struct CSphSnippets
    method CSphSnippets (line 587) | CSphSnippets()
  function my_bool (line 635) | my_bool sphinx_snippets_init ( UDF_INIT * pUDF, UDF_ARGS * pArgs, char *...
  function sphinx_snippets_deinit (line 806) | void sphinx_snippets_deinit ( UDF_INIT * pUDF )

FILE: src/accumulator.cpp
  function MakeReplicationCommand (line 21) | std::unique_ptr<ReplicationCommand_t> MakeReplicationCommand ( ReplCmd_e...
  function ReplicationCommand_t (line 30) | ReplicationCommand_t* RtAccum_t::AddCommand ( ReplCmd_e eCmd, CSphString...
  function BYTE (line 63) | const BYTE* RtAccum_t::GetPackedKeywords() const
  function RepackBlob (line 98) | static bool RepackBlob ( const CSphColumnInfo & tAttr, const CSphColumnI...
  function StoreEmbeddings (line 114) | static bool StoreEmbeddings ( const CSphSchema & tSchema, int iAttr, int...
  function ARRAY_FOREACH (line 160) | ARRAY_FOREACH ( i, dAttrsWithModels )
  function ARRAY_FOREACH (line 263) | ARRAY_FOREACH ( i, dResultIds )
  function ARRAY_FOREACH (line 298) | ARRAY_FOREACH ( i, dAttrsWithModels )
  function ARRAY_FOREACH (line 337) | ARRAY_FOREACH ( i, dAttrsWithModels )
  function ResetTailHit (line 451) | static void ResetTailHit ( CSphWordHit * pHit )
  function ConcatFromFields (line 483) | static CSphVector<char> ConcatFromFields ( const InsertDocData_c & tDoc,...
  function IsDefaultEmbedding (line 512) | static bool IsDefaultEmbedding ( const InsertDocData_c & tDoc, const CSp...
  function ARRAY_FOREACH (line 541) | ARRAY_FOREACH ( i, dAttrsWithModels )
  function DWORD (line 556) | static DWORD * SetupFieldLengths ( const RtIndex_i * pIndex, const CSphS...
  type AccumDocHits_t (line 793) | struct AccumDocHits_t
  function ARRAY_FOREACH (line 906) | ARRAY_FOREACH ( i, dRowMap )
  function RowID_t (line 971) | RowID_t RtAccum_t::GenerateRowID()

FILE: src/accumulator.h
  type StoredQueryDesc_t (line 22) | struct StoredQueryDesc_t
  function ReplCmd_e (line 40) | enum class ReplCmd_e {
  type ReplicatedCommand_t (line 89) | struct ReplicatedCommand_t
  type AttrWithModel_t (line 103) | struct AttrWithModel_t
  function class (line 114) | class RtAccum_t

FILE: src/aggregate.cpp
  class AggrFunc_Traits_T (line 19) | class AggrFunc_Traits_T : public AggrFunc_i
    method AggrFunc_Traits_T (line 22) | explicit		AggrFunc_Traits_T ( const CSphAttrLocator & tLocator ) : m_t...
  function DWORD (line 32) | inline DWORD AggrFunc_Traits_T<DWORD>::GetValue ( const CSphMatch & tRow )
  class AggrColumnar_Traits_T (line 80) | class AggrColumnar_Traits_T : public AggrFunc_Traits_T<T>
    method AggrColumnar_Traits_T (line 85) | AggrColumnar_Traits_T ( const CSphAttrLocator & tLoc, const CSphString...
    method SetColumnar (line 90) | void SetColumnar ( columnar::Columnar_i * pColumnar ) final
    method Setup (line 104) | void Setup ( CSphMatch & tDst, const CSphMatch & tSrc, bool bMerge ) f...
    method T (line 114) | inline T FetchValue ( const CSphMatch & tSrc, bool bMerge )
  class AggrSum_T (line 128) | class AggrSum_T final : public AggrFunc_Traits_T<T>
    method AggrSum_T (line 134) | explicit AggrSum_T ( const CSphAttrLocator & tLoc ) : AggrFunc_Traits_...
    method Update (line 137) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
  class AggrSumColumnar_T (line 148) | class AggrSumColumnar_T final : public AggrColumnar_Traits_T<T>
    method Update (line 154) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
  class AggrAvg_T (line 166) | class AggrAvg_T final : public AggrFunc_Traits_T<T>
    method AggrAvg_T (line 173) | AggrAvg_T ( const CSphAttrLocator & tLoc, const CSphAttrLocator & tCou...
    method Ungroup (line 177) | void Ungroup ( CSphMatch & tDst ) final
    method Update (line 182) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
    method Finalize (line 193) | void Finalize ( CSphMatch & tDst ) final
  class AggrAvgColumnar_T (line 202) | class AggrAvgColumnar_T final : public AggrColumnar_Traits_T<T>
    method AggrAvgColumnar_T (line 209) | AggrAvgColumnar_T ( const CSphAttrLocator & tLoc, const CSphString & s...
    method Ungroup (line 214) | void Ungroup ( CSphMatch & tDst ) final
    method Update (line 219) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
    method Finalize (line 230) | void Finalize ( CSphMatch & tDst ) final
  class AggrMax_T (line 243) | class AggrMax_T final : public AggrFunc_Traits_T<T>
    method Update (line 249) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
  class AggrMaxColumnar_T (line 259) | class AggrMaxColumnar_T final : public AggrColumnar_Traits_T<T>
    method Update (line 265) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
  class AggrMin_T (line 276) | class AggrMin_T final : public AggrFunc_Traits_T<T>
    method Update (line 282) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
  class AggrMinColumnar_T (line 292) | class AggrMinColumnar_T final : public AggrColumnar_Traits_T<T>
    method Update (line 298) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
  function BStream_c (line 356) | static BStream_c & operator<< ( BStream_c & dOut, const ByteBlob_t & tDa...
  function BStream_c (line 363) | static BStream_c & operator<< ( BStream_c & dOut, NUM iNum )
  function BStream_c (line 380) | static BStream_c & operator<< ( BStream_c & dOut, const VecTraits_T<BYTE...
  function ByteBlob_t (line 400) | static ByteBlob_t & operator>> ( ByteBlob_t & dIn, NUM & iNum )
  function ByteBlob_t (line 410) | static ByteBlob_t & operator>> ( ByteBlob_t & dIn, ByteBlob_t & tData )
  function ByteBlob_t (line 432) | static ByteBlob_t & operator>> ( ByteBlob_t & dIn, VecTraits_T<BYTE> & t...
  class AggrConcat_c (line 443) | class AggrConcat_c final : public AggrFunc_i
    method AggrConcat_c (line 448) | explicit AggrConcat_c ( const CSphColumnInfo & tCol )
    method Finalize (line 456) | void Finalize ( CSphMatch & tMatch ) final
    method Update (line 491) | void Update ( CSphMatch & tDst, const CSphMatch & tSrc, bool bGrouped,...
    method AppendStringToString (line 523) | static void AppendStringToString ( BStream_c & dOut, const ByteBlob_t ...
    method WriteCount (line 533) | static void WriteCount ( BStream_c& dOut, int iCount )
    method AppendBlobToBlob (line 543) | static void AppendBlobToBlob ( BStream_c& dOut, ByteBlob_t dInDst, Byt...
    method AppendBlobToString (line 591) | static void AppendBlobToString ( BStream_c & dOut, const ByteBlob_t & ...
  function GetColumnarCol (line 641) | static bool GetColumnarCol ( const CSphColumnInfo & tAttr, CSphString & ...
  function AggrFunc_i (line 653) | AggrFunc_i * CreateAggrSum ( const CSphColumnInfo & tAttr )
  function AggrFunc_i (line 689) | AggrFunc_i * CreateAggrAvg ( const CSphColumnInfo & tAttr, const CSphAtt...
  function AggrFunc_i (line 731) | AggrFunc_i * CreateAggrMin ( const CSphColumnInfo & tAttr )
  function AggrFunc_i (line 773) | AggrFunc_i * CreateAggrMax ( const CSphColumnInfo & tAttr )
  function AggrFunc_i (line 816) | AggrFunc_i * CreateAggrConcat ( const CSphColumnInfo & tAttr )

FILE: src/aggregate.h
  function class (line 19) | class AggrFunc_i

FILE: src/aggrexpr.cpp
  function uint64_t (line 25) | class AggrRangeExpr_T : public Expr_ArgVsSet_T<int>
  function ISphExpr (line 91) | ISphExpr * Clone() const final
  function ISphExpr (line 104) | ISphExpr * CreateExprRange ( ISphExpr * pAttr, const AggrRangeSetting_t ...
  function DumpRange (line 112) | static void DumpRange ( const RangeSetting_t & tRange, bool bFloat, Stri...
  function DumpRangeOpenLeft (line 120) | static void DumpRangeOpenLeft ( const RangeSetting_t & tRange, bool bFlo...
  function DumpRangeOpenRigth (line 128) | static void DumpRangeOpenRigth ( const RangeSetting_t & tRange, bool bFl...
  function DumpRange (line 136) | static void DumpRange ( int iItem, const AggrRangeSetting_t & tRanges, S...
  function CSphString (line 149) | static CSphString DumpAggrRange ( const CSphString & sCol, const AggrRan...
  function CSphString (line 163) | static CSphString DumpAggrRange ( const CSphString & sCol, const AggrDat...
  function ParseAggrRange (line 185) | bool ParseAggrRange ( const VecTraits_T< VecTraits_T < CSphNamedVariant ...
  function CSphString (line 330) | CSphString GetAggrName ( int iItem, const CSphString & sCol )
  function FormatKeyFloat (line 337) | static void FormatKeyFloat ( const RangeSetting_t & tRange, bool bHasFro...
  function FormatKeyInt (line 354) | static void FormatKeyInt ( const RangeSetting_t & tRange, bool bHasFrom,...
  function FormatDate (line 370) | static void FormatDate ( const CSphString & sVal, int iNow, CSphString &...
  function FormatDate (line 380) | static void FormatDate ( time_t tDate, char * sBuf, int iSize )
  function FormatDate (line 389) | void FormatDate ( time_t tDate, CSphString & sRes )
  function FormatDate (line 397) | void FormatDate ( time_t tDate, StringBuilder_c & sRes )
  function FormatKeyDate (line 404) | static void FormatKeyDate ( const DateRangeSetting_t & tRange, int iNow,...
  function GetRangeKeyNames (line 433) | void GetRangeKeyNames ( const AggrRangeSetting_t & tRanges, RangeNameHas...
  function GetRangeKeyNames (line 461) | void GetRangeKeyNames ( const AggrDateRangeSetting_t & tRanges, int iNow...
  function CSphString (line 471) | static CSphString DumpAggrHist ( const CSphString & sCol, const AggrHist...
  function CSphString (line 485) | static CSphString DumpAggrHist ( const CSphString & sCol, const AggrDate...
  function CSphString (line 497) | CSphString DumpAggr ( const CSphString & sCol, const AggrSettings_t & tA...
  function ConvertIntoFloat (line 510) | static void ConvertIntoFloat ( AggrBound_t & tVal )
  function FixFloat (line 516) | void FixFloat ( AggrHistSetting_t & tHist )
  function PromoteHistogramToFloat (line 529) | void PromoteHistogramToFloat ( AggrHistSetting_t & tHist )
  function SetValue (line 536) | static void SetValue ( const CSphNamedVariant & tPair, AggrBound_t & tVal )
  function ParseAggrHistogram (line 546) | bool ParseAggrHistogram ( const VecTraits_T < CSphNamedVariant > & dVari...
  function ParseAggrDateHistogram (line 571) | bool ParseAggrDateHistogram ( const VecTraits_T < CSphNamedVariant > & d...
  function uint64_t (line 608) | class AggrHistExpr_T : public Expr_ArgVsSet_T<int>
  function ISphExpr (line 657) | ISphExpr * Clone() const final
  function ISphExpr (line 670) | ISphExpr * CreateExprHistogram ( ISphExpr * pAttr, const AggrHistSetting...
  class AggrDateHistExpr_T (line 680) | class AggrDateHistExpr_T : public Expr_ArgVsSet_T<int>
    method AggrDateHistExpr_T (line 687) | AggrDateHistExpr_T ( ISphExpr * pAttr, const AggrDateHistSetting_t & t...
    method IntEval (line 699) | int IntEval ( const CSphMatch & tMatch ) const final
    method GetBucket (line 706) | int GetBucket ( const CSphMatch & tMatch ) const
    method GetHash (line 718) | uint64_t GetHash ( const ISphSchema & tSorterSchema, uint64_t uPrevHas...
    method ISphExpr (line 727) | ISphExpr * Clone() const final
    method AggrDateHistExpr_T (line 733) | AggrDateHistExpr_T ( const AggrDateHistExpr_T & rhs )
  function ISphExpr (line 742) | ISphExpr * CreateExprDateHistogram ( ISphExpr * pAttr, const AggrDateHis...

FILE: src/aggrexpr.h
  type RangeSetting_t (line 22) | struct RangeSetting_t
  type AggrRangeSetting_t (line 37) | struct AggrRangeSetting_t
  type AggrHistSetting_t (line 45) | struct AggrHistSetting_t
  type class (line 53) | enum class
  type DateRangeSetting_t (line 69) | struct DateRangeSetting_t
  type AggrDateRangeSetting_t (line 76) | struct AggrDateRangeSetting_t
  type AggrDateHistSetting_t (line 81) | struct AggrDateHistSetting_t
  type AggrSettings_t (line 88) | struct AggrSettings_t
  type RangeKeyDesc_t (line 103) | struct RangeKeyDesc_t

FILE: src/attr_embedding.cpp
  function AddAttrToIndex (line 20) | void AddAttrToIndex ( const SqlStmt_t & tStmt, CSphIndex * pIdx, CSphStr...
  function IsModelBackedEmbedding (line 93) | static bool IsModelBackedEmbedding ( const SqlStmt_t & tStmt )
  function RunEmbeddingPopulateLoop (line 98) | static bool RunEmbeddingPopulateLoop ( const CSphRefcountedPtr<const Ser...
  function HandleAlterAddColumn (line 180) | bool HandleAlterAddColumn ( const SqlStmt_t & tStmt, const CSphRefcounte...
  function HandleAlterRebuildEmbeddings (line 205) | bool HandleAlterRebuildEmbeddings ( const CSphString & sAttr, const CSph...

FILE: src/attr_embedding.h
  type SqlStmt_t (line 21) | struct SqlStmt_t

FILE: src/attribute.cpp
  function BYTE (line 34) | static BYTE CalcBlobRowFlags ( DWORD uTotalLen )
  function DWORD (line 46) | static DWORD RowFlagsToLen ( BYTE uFlags )
  class AttributePacker_i (line 60) | class AttributePacker_i
  class AttributePacker_c (line 69) | class AttributePacker_c : public AttributePacker_i
    method AttributePacker_c (line 72) | AttributePacker_c () = default;
    method AttributePacker_c (line 74) | explicit AttributePacker_c ( BlobAttrInput_e eExpectedInput )
    method SetData (line 77) | bool SetData ( const BYTE * pData, int iDataLen, BlobAttrInput_e eInpu...
  class AttributePacker_MVA_T (line 97) | class AttributePacker_MVA_T : public AttributePacker_c
    method AttributePacker_MVA_T (line 100) | AttributePacker_MVA_T ( bool bNeedSorting = false ) : m_bNeedSorting (...
    method SetData (line 102) | bool SetData ( const BYTE * pData, int iDataLen, BlobAttrInput_e eInpu...
  class AttributePacker_Json_c (line 173) | class AttributePacker_Json_c : public AttributePacker_c
    method SetData (line 176) | bool SetData ( const BYTE * pData, int iDataLen, BlobAttrInput_e eInpu...
  class BlobRowBuilder_Base_c (line 196) | class BlobRowBuilder_Base_c : public BlobRowBuilder_i
    method SetAttr (line 199) | bool	SetAttr ( int iAttr, const BYTE * pData, int iDataLen, BlobAttrIn...
  class BlobRowBuilder_File_c (line 206) | class BlobRowBuilder_File_c : public BlobRowBuilder_Base_c
  class BlobRowBuilder_Mem_c (line 349) | class BlobRowBuilder_Mem_c : public BlobRowBuilder_Base_c
    method Flush (line 356) | std::pair<SphOffset_t,SphOffset_t> Flush ( const BYTE * pOldRow ) over...
    method Done (line 357) | bool					Done ( CSphString & /*sError*/ ) override			{ return true; }
  class BlobRowBuilder_MemUpdate_c (line 452) | class BlobRowBuilder_MemUpdate_c : public BlobRowBuilder_Mem_c
  function sphCreateBlobRowBuilder (line 523) | std::unique_ptr<BlobRowBuilder_i> sphCreateBlobRowBuilder ( const ISphSc...
  function sphCreateBlobRowJsonBuilder (line 533) | std::unique_ptr<BlobRowBuilder_i> sphCreateBlobRowJsonBuilder ( const IS...
  function sphCreateBlobRowBuilder (line 543) | std::unique_ptr<BlobRowBuilder_i> sphCreateBlobRowBuilder ( const ISphSc...
  function sphCreateBlobRowBuilderUpdate (line 549) | std::unique_ptr<BlobRowBuilder_i> sphCreateBlobRowBuilderUpdate ( const ...
  function GetBlobRowOffset (line 556) | static int64_t GetBlobRowOffset ( const CSphRowitem * pDocinfo, int iBlo...
  function GetBlobRowOffset (line 561) | static int64_t GetBlobRowOffset ( const CSphMatch & tMatch, const CSphAt...
  function BYTE (line 568) | static const BYTE * GetBlobAttr ( int iBlobAttrId, int nBlobAttrs, const...
  function BYTE (line 579) | static const BYTE * GetBlobAttr ( const BYTE * pRow, int iBlobAttrId, in...
  function ByteBlob_t (line 596) | static ByteBlob_t GetBlobAttr ( int iBlobAttrId, int nBlobAttrs, const B...
  function ByteBlob_t (line 608) | static ByteBlob_t GetBlobAttr ( const BYTE * pRow, int iBlobAttrId, int ...
  function ByteBlob_t (line 624) | ByteBlob_t sphGetBlobAttr ( const BYTE * pBlobRow, const CSphAttrLocator...
  function BYTE (line 630) | const BYTE * sphGetBlobAttr ( const CSphMatch & tMatch, const CSphAttrLo...
  function ByteBlob_t (line 637) | ByteBlob_t sphGetBlobAttr ( const CSphMatch & tMatch, const CSphAttrLoca...
  function BYTE (line 644) | const BYTE * sphGetBlobAttr ( const CSphRowitem * pDocinfo, const CSphAt...
  function ByteBlob_t (line 651) | ByteBlob_t sphGetBlobAttr ( const CSphRowitem * pDocinfo, const CSphAttr...
  function GetBlobAttrLen (line 659) | static int GetBlobAttrLen ( int iBlobAttrId, const BYTE * pRow )
  function sphGetBlobAttrLen (line 670) | int sphGetBlobAttrLen ( const CSphMatch & tMatch, const CSphAttrLocator ...
  function GetBlobTotalLen (line 691) | static int GetBlobTotalLen ( const BYTE * pRow, int nBlobAttrs )
  function DWORD (line 698) | DWORD sphGetBlobTotalLen ( const BYTE * pRow, int nBlobAttrs )
  function sphCopyBlobRow (line 714) | int64_t sphCopyBlobRow ( CSphTightVector<BYTE> & dDstPool, const CSphTig...
  function AddAttrToBlobRowNoData (line 726) | static void AddAttrToBlobRowNoData ( const CSphRowitem * pDocinfo, CSphT...
  function AddAttrToBlobRowWithData (line 743) | static void AddAttrToBlobRowWithData ( const CSphRowitem * pDocinfo, CSp...
  function AddAttrToBlobRowFirst (line 811) | static void AddAttrToBlobRowFirst ( CSphTightVector<BYTE> & dBlobRow, co...
  function sphAddAttrToBlobRow (line 838) | void sphAddAttrToBlobRow ( const CSphRowitem * pDocinfo, CSphTightVector...
  function sphRemoveAttrFromBlobRow (line 854) | void sphRemoveAttrFromBlobRow ( const CSphRowitem * pDocinfo, CSphTightV...
  function CheckMVAValues (line 939) | static bool CheckMVAValues ( const T * pMVA, DWORD uLengthBytes, int iBl...
  function sphCheckBlobRow (line 959) | bool sphCheckBlobRow ( int64_t iOff, DebugCheckReader_i & tBlobs, const ...
  function CSphString (line 1088) | const CSphString & sphGetDocidStr()
  function sphIsBlobAttr (line 1094) | bool sphIsBlobAttr ( ESphAttr eAttr )
  function sphIsBlobAttr (line 1100) | bool sphIsBlobAttr ( const CSphColumnInfo & tAttr )
  function IsMvaAttr (line 1109) | bool IsMvaAttr ( ESphAttr eAttr )
  function IsBlobAttrEmpty (line 1114) | bool IsBlobAttrEmpty ( const ByteBlob_t & tAttr )
  function IsBlobAttrZero (line 1119) | bool IsBlobAttrZero ( const ByteBlob_t & tAttr, int iDims )
  function sphCalcPackedLength (line 1140) | int sphCalcPackedLength ( int iLengthBytes )
  function BYTE (line 1145) | BYTE * sphPackedBlob ( ByteBlob_t dBlob )
  function BYTE (line 1153) | BYTE * sphPackPtrAttr ( ByteBlob_t dBlob )
  function sphPackPtrAttr (line 1165) | int sphPackPtrAttr ( BYTE * pPrealloc, ByteBlob_t dBlob )
  function sphPackPtrAttrInPlace (line 1173) | void sphPackPtrAttrInPlace ( TightPackedVec_T<BYTE> & dAttr, int iSize )
  function BYTE (line 1185) | BYTE * sphPackPtrAttr ( int iLengthBytes, BYTE ** ppData )
  function ByteBlob_t (line 1195) | ByteBlob_t sphUnpackPtrAttr ( const BYTE * pData )
  function ESphAttr (line 1205) | ESphAttr sphPlainAttrToPtrAttr ( ESphAttr eAttrType )
  function sphIsDataPtrAttr (line 1220) | bool sphIsDataPtrAttr ( ESphAttr eAttr )
  function MVA2Str (line 1231) | static void MVA2Str ( const T * pMVA, int iLengthBytes, StringBuilder_c ...
  function FloatVec2Str (line 1249) | static void FloatVec2Str ( const float * pFloatVec, int iLengthBytes, St...
  function sphIsInternalAttr (line 1263) | bool sphIsInternalAttr ( const CSphString & sAttrName )
  function sphIsInternalAttr (line 1269) | bool sphIsInternalAttr ( const CSphColumnInfo & tCol )
  function sphMVA2Str (line 1275) | void sphMVA2Str ( ByteBlob_t dMVA, bool b64bit, StringBuilder_c & dStr )
  function sphPackedMVA2Str (line 1284) | void sphPackedMVA2Str ( const BYTE * pMVA, bool b64bit, StringBuilder_c ...
  function sphFloatVec2Str (line 1291) | void sphFloatVec2Str ( ByteBlob_t dFloatVec, StringBuilder_c & dStr )
  function sphPackedFloatVec2Str (line 1297) | void sphPackedFloatVec2Str ( const BYTE * pData, StringBuilder_c & dStr )
  function IsNotRealAttribute (line 1304) | bool IsNotRealAttribute ( const CSphColumnInfo & tColumn )

FILE: src/attribute.h
  type CSphAttrLocator (line 20) | struct CSphAttrLocator
  type ThrottleState_t (line 25) | struct ThrottleState_t
  type class (line 28) | enum class
  function class (line 35) | class BlobRowBuilder_i
  type TypedAttribute_t (line 46) | struct TypedAttribute_t
  function FORCE_INLINE (line 146) | FORCE_INLINE BYTE * sphCopyPackedAttr ( const BYTE * pData ) { return sp...
  function FORCE_INLINE (line 161) | FORCE_INLINE DocID_t sphGetDocID ( const CSphRowitem * pData )
  function FORCE_INLINE (line 171) | FORCE_INLINE void sphDeallocatePacked ( const BYTE* pBlob )

FILE: src/attrindex_builder.cpp
  function ARRAY_FOREACH (line 96) | ARRAY_FOREACH ( i, m_dIntAttrs )
  function ARRAY_FOREACH (line 104) | ARRAY_FOREACH ( i, m_dFloatAttrs )
  function ARRAY_FOREACH (line 122) | ARRAY_FOREACH ( i, m_dIntAttrs )
  function ARRAY_FOREACH (line 128) | ARRAY_FOREACH ( i, m_dFloatAttrs )
  function ARRAY_FOREACH (line 166) | ARRAY_FOREACH ( i, m_dIntAttrs )
  function ARRAY_FOREACH (line 174) | ARRAY_FOREACH ( i, m_dFloatAttrs )

FILE: src/attrindex_builder.h
  type CSphAttrLocator (line 19) | struct CSphAttrLocator
  function class (line 23) | class AttrIndexBuilder_c : ISphNoncopyable

FILE: src/attrindex_merge.cpp
  class AttrMerger_c::Impl_c (line 27) | class AttrMerger_c::Impl_c
    method CSphString (line 59) | CSphString GetTmpFilename ( const CSphIndex* pIdx, ESphExt eExt )
    method Impl_c (line 68) | Impl_c ( MergeCb_c & tMonitor, CSphString & sError, int64_t iTotalDocs...
  function ARRAY_FOREACH (line 203) | ARRAY_FOREACH ( i, dColumnarIterators )
  class SiBuilder_c (line 422) | class SiBuilder_c
    method StrVec_t (line 428) | StrVec_t	GetOldFiles() const { return m_dOldFiles; }
    method StrVec_t (line 429) | StrVec_t	GetNewFiles() const { return m_dNewFiles; }
  function SiRecreate (line 569) | bool SiRecreate ( MergeCb_c & tMonitor, const CSphIndex & tIndex, int64_...

FILE: src/attrindex_merge.h
  type BuildBufferSettings_t (line 18) | struct BuildBufferSettings_t
  function class (line 20) | class AttrMerger_c

FILE: src/binlog.cpp
  type Blop_e (line 33) | enum Blop_e : BYTE
  type BinlogIndexInfo_t (line 48) | struct BinlogIndexInfo_t
  type BinlogIndexReplayInfo_t (line 56) | struct BinlogIndexReplayInfo_t : BinlogIndexInfo_t
  type BinlogFileDesc_t (line 64) | struct BinlogFileDesc_t
  type BinlogReplayFileDesc_t (line 70) | struct BinlogReplayFileDesc_t
  class BinlogWriter_c (line 77) | class BinlogWriter_c final : public MemoryWriter2_c
    method BinlogWriter_c (line 80) | BinlogWriter_c() : MemoryWriter2_c(m_dBuf) {}
    method GetFilePos (line 87) | int64_t			GetFilePos() const noexcept			{ return m_iLastFilePos; }
    method CSphString (line 94) | const CSphString & GetError() const			{ return m_sError; }
    method HasUnwrittenData (line 96) | bool			HasUnwrittenData () const	{ return !m_dBuf.IsEmpty(); }
    method HasUnsyncedData (line 97) | bool			HasUnsyncedData () const	{ return m_iLastFsyncPos.load(std::mem...
    method IsOpen (line 99) | bool			IsOpen() const noexcept { return ( m_tFile.GetFD()!=-1 ); }
    method GetBuffPos (line 108) | inline int64_t GetBuffPos () const noexcept { return m_dBuf.GetLengthB...
  class BinlogReader_c (line 121) | class BinlogReader_c final : public CSphAutoreader
  class Binlog_c (line 135) | class Binlog_c
    method IsActive (line 215) | bool	IsActive () const { return !m_bDisabled; }
    method CSphString (line 223) | inline CSphString GetLogPath() const noexcept { return m_sLogPath; }
    type SaveMeta_e (line 265) | enum SaveMeta_e : bool { eNoForce, eForce }
  type FlushAction_e (line 137) | enum class FlushAction_e : BYTE
  type BinlogFileState_e (line 145) | enum class BinlogFileState_e
  class SingleBinlog_c (line 158) | class SingleBinlog_c final : public ISphRefcountedMT
    method SingleBinlog_c (line 172) | explicit SingleBinlog_c ( Binlog_c* pOwner ) noexcept
  class Binlog_c (line 202) | class Binlog_c : public ISphNoncopyable
    method IsActive (line 215) | bool	IsActive () const { return !m_bDisabled; }
    method CSphString (line 223) | inline CSphString GetLogPath() const noexcept { return m_sLogPath; }
    type SaveMeta_e (line 265) | enum SaveMeta_e : bool { eNoForce, eForce }
  class BinlogTransactionGuard_c (line 313) | class BinlogTransactionGuard_c final
    method BinlogTransactionGuard_c (line 318) | explicit BinlogTransactionGuard_c ( BinlogWriter_c & tWriter, bool bWr...
  class TransactionSizeGuard_c (line 337) | class TransactionSizeGuard_c final
    method TransactionSizeGuard_c (line 343) | explicit TransactionSizeGuard_c ( BinlogWriter_c & tWriter )
  function fsync (line 396) | int fsync ( int iFD )
  function CSphString (line 479) | CSphString BinlogWriter_c::GetFilename () const noexcept
  function ARRAY_FOREACH (line 661) | ARRAY_FOREACH ( iLog, m_dLogFiles )
  function SingleBinlog_c (line 977) | SingleBinlog_c* Binlog_c::GetWriteIndexBinlog ( const char* szIndexName,...
    method SingleBinlog_c (line 172) | explicit SingleBinlog_c ( Binlog_c* pOwner ) noexcept
  function SingleBinlog_c (line 1017) | SingleBinlog_c * Binlog_c::GetSingleWriteIndexBinlog ( bool bOpenNewLog ...
    method SingleBinlog_c (line 172) | explicit SingleBinlog_c ( Binlog_c* pOwner ) noexcept
  function SingleBinlog_c (line 1061) | SingleBinlog_c * Binlog_c::GetFlushIndexBinlog ( const char * szIndexNam...
    method SingleBinlog_c (line 172) | explicit SingleBinlog_c ( Binlog_c* pOwner ) noexcept
  function CSphString (line 1095) | CSphString Binlog_c::MakeBinlogName ( int iExt ) const noexcept
  function IntVec_t (line 1345) | IntVec_t Binlog_c::CollectBinlogFiles ()
  function IntVec_t (line 1352) | IntVec_t Binlog_c::CollectBinlogFilesUnlock ()
  function BinlogFileState_e (line 1539) | BinlogFileState_e Binlog_c::ReplayBinlog ( BinlogReplayFileDesc_t & tLog...
  function SkipBytes (line 1808) | void SkipBytes ( CSphAutoreader& tReader, DWORD uSize )
  function CSphString (line 1994) | CSphString Binlog::GetPath()

FILE: src/binlog.h
  function namespace (line 18) | namespace Binlog {
  type Shutdown_e (line 75) | enum Shutdown_e : bool { NoShutdown=false, Shutdown }
  type ForceSave_e (line 76) | enum ForceSave_e : BYTE { NoSave=0, ForceSave, DropTable }

FILE: src/binlog_defs.h
  function namespace (line 18) | namespace Binlog {

FILE: src/chunksearchctx.h
  type DiskChunkSearcherCtx_t (line 18) | struct DiskChunkSearcherCtx_t
  type DiskChunkSearcherCloneCtx_t (line 33) | struct DiskChunkSearcherCloneCtx_t

FILE: src/cjkpreprocessor.cpp
  function CreateFilterCJK (line 149) | std::unique_ptr<ISphFieldFilter> CreateFilterCJK ( std::unique_ptr<ISphF...
  function CheckTokenizerCJK (line 191) | bool CheckTokenizerCJK ( CSphIndexSettings & tSettings, const CSphTokeni...

FILE: src/cjkpreprocessor.h
  function class (line 18) | class CJKPreprocessor_c
  function class (line 69) | class FieldFilterCJK_c : public ISphFieldFilter

FILE: src/client_session.h
  type BinaryPreparedStmt_t (line 24) | struct BinaryPreparedStmt_t
  function class (line 25) | class PreparedStatements
  function CSphString (line 50) | CSphString m_sCurrentDbName { szManticore };

FILE: src/client_task_info.cpp
  function DEFINE_RENDER (line 18) | DEFINE_RENDER ( ClientTaskInfo_t )
  function MiniTaskInfo_t (line 38) | MiniTaskInfo_t* myinfo::HazardGetMini()
  function ClientTaskInfo_t (line 46) | ClientTaskInfo_t * HazardGetClient ()
  function ClientTaskInfo_t (line 51) | ClientTaskInfo_t & ClientTaskInfo_t::Info ( bool bStrict ) noexcept
  function ClientSession_c (line 76) | ClientSession_c* ClientTaskInfo_t::GetClientSession()
  function GetEffectiveDistThreads (line 102) | int GetEffectiveDistThreads ()
  function GetEffectiveBaseDispatcherTemplate (line 108) | Dispatcher::Template_t GetEffectiveBaseDispatcherTemplate()
  function GetEffectivePseudoShardingDispatcherTemplate (line 115) | Dispatcher::Template_t GetEffectivePseudoShardingDispatcherTemplate()

FILE: src/client_task_info.h
  type Profile_e (line 19) | enum Profile_e {
  function MiniTaskInfo_t (line 32) | struct ClientTaskInfo_t : public MiniTaskInfo_t
  function namespace (line 230) | namespace myinfo {

FILE: src/collation.cpp
  function UnpackStrings (line 22) | inline static void UnpackStrings ( ByteBlob_t& dStr1, ByteBlob_t& dStr2,...
  function CollateBinary (line 39) | static int CollateBinary ( ByteBlob_t dStr1, ByteBlob_t dStr2, bool bDat...
  function CollateLibcCI (line 48) | static int CollateLibcCI ( ByteBlob_t dStr1, ByteBlob_t dStr2, bool bDat...
  function CollateLibcCS (line 57) | static int CollateLibcCS ( ByteBlob_t dStr1, ByteBlob_t dStr2, bool bDat...
  function HashStrLen (line 241) | uint64_t HashStrLen ( const BYTE * pStr, int iLen )
  function sphCollationInit (line 250) | void sphCollationInit()
  function CollateUTF8CI (line 272) | static inline int CollateUTF8CI ( int iCode )
  function CollateUtf8GeneralCI (line 281) | static int CollateUtf8GeneralCI ( ByteBlob_t dStr1, ByteBlob_t dStr2, bo...
  function SphStringCmp_fn (line 313) | SphStringCmp_fn GetStringCmpFunc ( ESphCollation eCollation )
  function StrHashCalc_fn (line 393) | StrHashCalc_fn GetStringHashCalcFunc ( ESphCollation eCollation )
  function ESphCollation (line 404) | volatile ESphCollation& GlobalCollation()
  function ESphCollation (line 410) | ESphCollation sphCollationFromName ( const CSphString & sName, CSphStrin...
  function SetLocale (line 432) | void SetLocale ( const CSphString & sLocale, bool bSet )
  function IsGlobalLocaleSet (line 448) | bool IsGlobalLocaleSet()

FILE: src/collation.h
  function class (line 19) | class LibcCSHash_fn
  function class (line 26) | class LibcCIHash_fn
  function class (line 33) | class Utf8CIHash_fn
  function class (line 40) | class BinaryHash_fn
  type ESphCollation (line 48) | enum ESphCollation

FILE: src/columnarexpr.cpp
  class Expr_Columnar_MVAIn_T (line 19) | class Expr_Columnar_MVAIn_T : public Expr_ArgVsConstSet_T<int64_t>
    method ByteBlob_t (line 26) | ByteBlob_t	MvaEval ( const CSphMatch & ) const final { assert ( 0 && "...
    method ISphExpr (line 30) | ISphExpr *	Clone() const final { return new Expr_Columnar_MVAIn_T ( *t...
  class Expr_Columnar_StringIn_c (line 87) | class Expr_Columnar_StringIn_c : public Expr_ArgVsConstSet_T<int64_t>
    method ISphExpr (line 97) | ISphExpr *	Clone() const final { return new Expr_Columnar_StringIn_c (...
  class Expr_Columnar_StringLength_c (line 205) | class Expr_Columnar_StringLength_c : public ISphExpr
    method Expr_Columnar_StringLength_c (line 208) | Expr_Columnar_StringLength_c ( const CSphString & sName ) : m_sName ( ...
    method IntEval (line 210) | int			IntEval ( const CSphMatch & tMatch ) const override { return m_p...
    method Eval (line 212) | float		Eval ( const CSphMatch & tMatch ) const final { return (float)I...
    method FixupLocator (line 214) | void		FixupLocator ( const ISphSchema * /*pOldSchema*/, const ISphSche...
    method ISphExpr (line 215) | ISphExpr *	Clone() const override{ return new Expr_Columnar_StringLeng...
  class Expr_Columnar_MvaLength_T (line 247) | class Expr_Columnar_MvaLength_T : public Expr_Columnar_StringLength_c
    method IntEval (line 252) | int			IntEval ( const CSphMatch & tMatch ) const final { return m_pIte...
    method ISphExpr (line 254) | ISphExpr *	Clone() const final	{ return new Expr_Columnar_MvaLength_T(...
  class Expr_ColumnarMVAAggr_T (line 269) | class Expr_ColumnarMVAAggr_T : public Expr_NoLocator_c
    method Eval (line 275) | float		Eval ( const CSphMatch & tMatch ) const final { return (float)I...
    method IntEval (line 276) | int			IntEval ( const CSphMatch & tMatch ) const final { return (int)I...
    method ISphExpr (line 279) | ISphExpr *	Clone() const final	{ return new Expr_ColumnarMVAAggr_T ( *...
  class Expr_GetColumnar_Traits_c (line 344) | class Expr_GetColumnar_Traits_c : public ISphExpr
    method FixupLocator (line 350) | void		FixupLocator ( const ISphSchema * /*pOldSchema*/, const ISphSche...
    method CalcHash (line 359) | uint64_t CalcHash ( const char * szTag, const ISphSchema & tSorterSche...
  class Expr_GetColumnarInt_c (line 418) | class Expr_GetColumnarInt_c : public Expr_GetColumnar_Traits_c
    method Eval (line 423) | float		Eval ( const CSphMatch & tMatch ) const override		{ return (flo...
    method IntEval (line 424) | int			IntEval ( const CSphMatch & tMatch ) const override		{ return (i...
    method Int64Eval (line 425) | int64_t		Int64Eval ( const CSphMatch & tMatch ) const override	{ retur...
    method ISphExpr (line 427) | ISphExpr *	Clone() const override									{ return new Expr_GetColumna...
    method SphAttr_t (line 430) | inline SphAttr_t FetchValue ( const CSphMatch & tMatch ) const		{  ret...
  class Expr_GetColumnarFloat_c (line 442) | class Expr_GetColumnarFloat_c : public Expr_GetColumnarInt_c
    method Eval (line 447) | float	Eval ( const CSphMatch & tMatch ) const final		{ return sphDW2F ...
    method IntEval (line 448) | int		IntEval ( const CSphMatch & tMatch ) const final	{ return (int)sp...
    method Int64Eval (line 449) | int64_t	Int64Eval ( const CSphMatch & tMatch ) const final	{ return (i...
    method ISphExpr (line 450) | ISphExpr *	Clone() const final								{ return new Expr_GetColumnarFlo...
  class Expr_GetColumnarString_c (line 455) | class Expr_GetColumnarString_c : public Expr_GetColumnar_Traits_c
    method Eval (line 460) | float			Eval ( const CSphMatch & ) const final { assert ( 0 ); return ...
    method StringEval (line 461) | int				StringEval ( const CSphMatch & tMatch, const BYTE ** ppStr ) co...
    method BYTE (line 462) | const BYTE *	StringEvalPacked ( const CSphMatch & tMatch ) const final...
    method StringLenEval (line 463) | int				StringLenEval ( const CSphMatch & tMatch ) const final						{ r...
    method ISphExpr (line 465) | ISphExpr *		Clone() const final { return new Expr_GetColumnarString_c ...
  class Expr_GetColumnarMva_c (line 477) | class Expr_GetColumnarMva_c : public Expr_GetColumnar_Traits_c
    method Eval (line 482) | float		Eval ( const CSphMatch & ) const final { assert ( 0 ); return 0; }
    method Int64Eval (line 483) | int64_t		Int64Eval ( const CSphMatch & tMatch ) const final	{ return (...
    method ISphExpr (line 486) | ISphExpr *	Clone() const final { return new Expr_GetColumnarMva_c ( m_...
  function ByteBlob_t (line 490) | ByteBlob_t Expr_GetColumnarMva_c::MvaEval ( const CSphMatch & tMatch ) c...
  function ISphExpr (line 506) | ISphExpr * CreateExpr_ColumnarMva32In ( const CSphString & sName, ConstL...
  function ISphExpr (line 507) | ISphExpr * CreateExpr_ColumnarMva64In ( const CSphString & sName, ConstL...
  function ISphExpr (line 508) | ISphExpr * CreateExpr_ColumnarStringIn ( const CSphString & sName, Const...
  function ISphExpr (line 510) | ISphExpr * CreateExpr_ColumnarStringLength ( const CSphString & sName )	...
  function ISphExpr (line 511) | ISphExpr * CreateExpr_ColumnarMva32Length ( const CSphString & sName )	{...
  function ISphExpr (line 512) | ISphExpr * CreateExpr_ColumnarMva64Length ( const CSphString & sName )	{...
  function ISphExpr (line 514) | ISphExpr * CreateExpr_ColumnarMva32Aggr ( ISphExpr * pExpr, ESphAggrFunc...
  function ISphExpr (line 515) | ISphExpr * CreateExpr_ColumnarMva64Aggr ( ISphExpr * pExpr, ESphAggrFunc...
  function ISphExpr (line 517) | ISphExpr * CreateExpr_GetColumnarInt ( const CSphString & sName, bool bS...
  function ISphExpr (line 518) | ISphExpr * CreateExpr_GetColumnarFloat ( const CSphString & sName, bool ...
  function ISphExpr (line 519) | ISphExpr * CreateExpr_GetColumnarString ( const CSphString & sName, bool...
  function ISphExpr (line 520) | ISphExpr * CreateExpr_GetColumnarMva ( const CSphString & sName, bool bS...

FILE: src/columnarfilter.cpp
  class ColumnarFilter_c (line 17) | class ColumnarFilter_c : public ISphFilter
  function ByteBlob_t (line 57) | ByteBlob_t ColumnarFilter_c::GetValue ( RowID_t tRowID ) const
  class Filter_SingleValueColumnar_c (line 67) | class Filter_SingleValueColumnar_c : public ColumnarFilter_c
    method Eval (line 73) | bool	Eval ( const CSphMatch & tMatch ) const override			{ return m_pIt...
  class Filter_ValuesColumnar_c (line 98) | class Filter_ValuesColumnar_c : public ColumnarFilter_c
  class Filter_StringColumnar_T (line 224) | class Filter_StringColumnar_T : public ColumnarFilter_c
    method CanExclude (line 233) | bool		CanExclude() const final { return true; }
  class FilterStringCmpColumnar_c (line 340) | class FilterStringCmpColumnar_c : public ColumnarFilter_c
    method CanExclude (line 347) | bool		CanExclude() const final { return true; }
  class Filter_RangeColumnar_T (line 408) | class Filter_RangeColumnar_T : public ColumnarFilter_c
  function CreateColumnarRangeFilter (line 459) | static std::unique_ptr<ISphFilter> CreateColumnarRangeFilter ( const CSp...
  class Filter_SingleValueColumnar_MVA_T (line 485) | class Filter_SingleValueColumnar_MVA_T : public Filter_SingleValueColumn...
    method Eval (line 490) | bool Eval ( const CSphMatch & tMatch ) const final
  class Filter_ValuesColumnar_MVA_T (line 501) | class Filter_ValuesColumnar_MVA_T : public ColumnarFilter_c
  class Filter_RangeColumnar_MVA_T (line 547) | class Filter_RangeColumnar_MVA_T : public ColumnarFilter_c
  class Filter_NullColumnar_c (line 587) | class Filter_NullColumnar_c : public ISphFilter
    method Eval (line 590) | bool		Eval ( const CSphMatch & tMatch ) const final { return true; }
  function CreateColumnarMvaFilterValues (line 596) | static std::unique_ptr<ISphFilter> CreateColumnarMvaFilterValues ( const...
  function CreateColumnarMvaRangeFilter (line 606) | static std::unique_ptr<ISphFilter> CreateColumnarMvaRangeFilter ( const ...
  function CSphString (line 632) | static CSphString GetAttributeName ( int iAttr, const ISphSchema & tSche...
  function CreateColumnarFilterMVA (line 648) | static std::unique_ptr<ISphFilter> CreateColumnarFilterMVA ( int iAttr, ...
  function CreateColumnarFilterPlain (line 677) | static std::unique_ptr<ISphFilter> CreateColumnarFilterPlain ( int iAttr...
  function TryToCreateColumnarFilter (line 710) | std::unique_ptr<ISphFilter> TryToCreateColumnarFilter ( int iAttr, const...
  function ToColumnarFilterType (line 755) | static common::FilterType_e ToColumnarFilterType ( ESphFilter eType )
  function ToColumnarAggr (line 770) | static common::MvaAggr_e ToColumnarAggr ( ESphMvaFunc eAggr )
  function ToColumnarFilter (line 781) | bool ToColumnarFilter ( common::Filter_t & tFilter, const CSphFilterSett...
  function AddColumnarFilter (line 828) | bool AddColumnarFilter ( std::vector<common::Filter_t> & dDst, const CSp...
  function ToColumnarFilters (line 839) | void ToColumnarFilters ( VecTraits_T<const CSphFilterSettings> & dFilter...

FILE: src/columnargrouper.cpp
  function FetchMVAValues (line 17) | static inline void FetchMVAValues ( const std::unique_ptr<columnar::Iter...
  function NextSet (line 30) | bool NextSet ( CSphFixedVector<int> & dSet, const CSphFixedVector<CSphVe...
  class GrouperColumnarInt_c (line 50) | class GrouperColumnarInt_c : public CSphGrouper
    method GetLocator (line 56) | void			GetLocator ( CSphAttrLocator & tOut ) const final {}
    method ESphAttr (line 57) | ESphAttr		GetResultType () const final { return m_eAttrType; }
    method SphGroupKey_t (line 58) | SphGroupKey_t	KeyFromMatch ( const CSphMatch & tMatch ) const final { ...
    method SphGroupKey_t (line 59) | SphGroupKey_t	KeyFromValue ( SphAttr_t ) const final { assert(0); retu...
    method MultipleKeysFromMatch (line 60) | void			MultipleKeysFromMatch ( const CSphMatch & tMatch, CSphVector<Sp...
    method CSphGrouper (line 62) | CSphGrouper *	Clone() const final { return new GrouperColumnarInt_c(*t...
  class GrouperColumnarString_T (line 93) | class GrouperColumnarString_T : public CSphGrouper, public HASH
    method GetLocator (line 99) | void			GetLocator ( CSphAttrLocator & tOut ) const final {}
    method ESphAttr (line 100) | ESphAttr		GetResultType () const final { return SPH_ATTR_BIGINT; }
    method SphGroupKey_t (line 102) | SphGroupKey_t	KeyFromValue ( SphAttr_t ) const final { assert(0); retu...
    method MultipleKeysFromMatch (line 103) | void			MultipleKeysFromMatch ( const CSphMatch & tMatch, CSphVector<Sp...
  function SphGroupKey_t (line 127) | SphGroupKey_t GrouperColumnarString_T<HASH>::KeyFromMatch ( const CSphMa...
  function CSphGrouper (line 154) | CSphGrouper * GrouperColumnarString_T<HASH>::Clone() const
  class GrouperColumnarMVA_T (line 162) | class GrouperColumnarMVA_T : public CSphGrouper
    method GrouperColumnarMVA_T (line 165) | GrouperColumnarMVA_T ( const CSphString & sName ) : m_sAttrName ( sNam...
    method GrouperColumnarMVA_T (line 166) | GrouperColumnarMVA_T ( const GrouperColumnarMVA_T & rhs ) : m_sAttrNam...
    method GetLocator (line 168) | void			GetLocator ( CSphAttrLocator & tOut ) const final {}
    method ESphAttr (line 169) | ESphAttr		GetResultType () const final { return SPH_ATTR_BIGINT; }
    method SphGroupKey_t (line 170) | SphGroupKey_t	KeyFromMatch ( const CSphMatch & tMatch ) const final { ...
    method MultipleKeysFromMatch (line 171) | void			MultipleKeysFromMatch ( const CSphMatch & tMatch, CSphVector<Sp...
    method SphGroupKey_t (line 172) | SphGroupKey_t	KeyFromValue ( SphAttr_t ) const final { assert(0); retu...
    method CSphGrouper (line 174) | CSphGrouper *	Clone() const final { return new GrouperColumnarMVA_T(*t...
    method IsMultiValue (line 175) | bool			IsMultiValue() const final { return true; }
  class GrouperColumnarMulti (line 193) | class GrouperColumnarMulti final : public CSphGrouper, public HASH
    method CSphGrouper (line 200) | CSphGrouper *	Clone() const final { return new GrouperColumnarMulti<HA...
    method SphGroupKey_t (line 202) | SphGroupKey_t	KeyFromValue ( SphAttr_t ) const final { assert(0); retu...
    method GetLocator (line 203) | void			GetLocator ( CSphAttrLocator & ) const final { assert(0); }
    method ESphAttr (line 204) | ESphAttr		GetResultType() const final { return SPH_ATTR_BIGINT; }
  function SphGroupKey_t (line 228) | SphGroupKey_t GrouperColumnarMulti<HASH>::KeyFromMatch ( const CSphMatch...
  function SphGroupKey_t (line 311) | SphGroupKey_t GrouperColumnarMulti<HASH>::FetchStringHash ( int iAttr, c...
  function SphGroupKey_t (line 326) | SphGroupKey_t GrouperColumnarMulti<HASH>::FetchStringHash ( int iAttr, c...
  function ARRAY_FOREACH (line 347) | ARRAY_FOREACH ( i, m_dAttrs )
  function CSphGrouper (line 369) | CSphGrouper * CreateGrouperColumnarInt ( const CSphString & sName, ESphA...
  function CSphGrouper (line 375) | CSphGrouper * CreateGrouperColumnarString ( const CSphString & sName, ES...
  function CSphGrouper (line 387) | CSphGrouper * CreateGrouperColumnarMulti ( const CSphVector<CSphColumnIn...
  function CSphGrouper (line 399) | CSphGrouper * CreateGrouperColumnarMVA ( const CSphString & sName, ESphA...
  class DistinctFetcherColumnar_c (line 409) | class DistinctFetcherColumnar_c : public DistinctFetcher_i
    method DistinctFetcherColumnar_c (line 412) | DistinctFetcherColumnar_c ( const CSphString & sName ) : m_sName(sName...
    method SetBlobPool (line 414) | void	SetBlobPool ( const BYTE * pBlobPool ) override {}
    method FixupLocators (line 415) | void	FixupLocators ( const ISphSchema * pOldSchema, const ISphSchema *...
  class DistinctFetcherColumnarPlain_c (line 423) | class DistinctFetcherColumnarPlain_c : public DistinctFetcherColumnar_c
    method GetKeys (line 428) | void	GetKeys ( const CSphMatch & tMatch, CSphVector<SphAttr_t> & dKeys...
    method IsMultiValue (line 429) | bool	IsMultiValue() const override { return false; }
  class DistinctFetcherColumnarMulti_c (line 433) | class DistinctFetcherColumnarMulti_c : public DistinctFetcherColumnar_c
    method SphAttr_t (line 438) | SphAttr_t	GetKey ( const CSphMatch & tMatch ) const override { assert ...
    method IsMultiValue (line 439) | bool		IsMultiValue() const override { return true; }
  class DistinctFetcherColumnarInt_c (line 443) | class DistinctFetcherColumnarInt_c : public DistinctFetcherColumnarPlain_c
    method SphAttr_t (line 448) | SphAttr_t	GetKey ( const CSphMatch & tMatch ) const override { return ...
    method DistinctFetcher_i (line 450) | DistinctFetcher_i *	Clone() const override { return new DistinctFetche...
  class DistinctFetcherColumnarMva_T (line 464) | class DistinctFetcherColumnarMva_T : public DistinctFetcherColumnarMulti_c
    method DistinctFetcher_i (line 471) | DistinctFetcher_i *	Clone() const override { return new DistinctFetche...
  class DistinctFetcherColumnarString_T (line 498) | class DistinctFetcherColumnarString_T : public DistinctFetcherColumnarPl...
    method DistinctFetcher_i (line 505) | DistinctFetcher_i *	Clone() const override { return new DistinctFetche...
  function SphAttr_t (line 512) | SphAttr_t DistinctFetcherColumnarString_T<HASH>::GetKey ( const CSphMatc...
  function DistinctFetcher_i (line 540) | DistinctFetcher_i * CreateColumnarDistinctFetcher ( const CSphString & s...

FILE: src/columnarlib.cpp
  type col (line 18) | namespace col {
  function ToColumnarType (line 35) | common::AttrType_e ToColumnarType ( ESphAttr eAttrType, int iBitCount )
  function CreateColumnarStorageReader (line 57) | std::unique_ptr<columnar::Columnar_i> CreateColumnarStorageReader ( cons...
  function CreateColumnarBuilder (line 75) | std::unique_ptr<columnar::Builder_i> CreateColumnarBuilder ( const ISphS...
  function CheckColumnarStorage (line 116) | void CheckColumnarStorage ( const CSphString & sFile, DWORD uNumRows, st...
  function InitColumnar (line 130) | bool InitColumnar ( CSphString & sError )
  function ShutdownColumnar (line 181) | void ShutdownColumnar()
  function InitColumnar (line 188) | bool InitColumnar ( CSphString & sError )
  function ShutdownColumnar (line 194) | void ShutdownColumnar()
  function IsColumnarLibLoaded (line 209) | bool IsColumnarLibLoaded()
  function CreateColumnarIterator (line 215) | std::unique_ptr<columnar::Iterator_i> CreateColumnarIterator ( const col...

FILE: src/columnarmisc.cpp
  function CreateAllColumnarIterators (line 15) | CSphVector<ScopedTypedIterator_t> CreateAllColumnarIterators ( const col...
  function SphAttr_t (line 36) | SphAttr_t SetColumnarAttr ( int iAttr, ESphAttr eType, columnar::Builder...
  function SetDefaultColumnarAttr (line 82) | void SetDefaultColumnarAttr ( int iAttr, const CSphColumnInfo & tAttr, c...
  function CSphString (line 113) | CSphString ColumnarAttrType2Str ( common::AttrType_e eType )
  function SphAttr_t (line 143) | SphAttr_t PlainOrColumnar_t::Get ( RowID_t tRowID, const CSphRowitem * p...

FILE: src/columnarmisc.h
  type PlainOrColumnar_t (line 33) | struct PlainOrColumnar_t
  function namespace (line 46) | namespace SI

FILE: src/columnarrt.cpp
  function GetLengthOffset (line 20) | static std::pair<T,T> GetLengthOffset ( const CSphVector<T> & dLengths, ...
  function T (line 34) | static T GetLength ( const CSphVector<T> & dLengths, RowID_t tRowID )
  class ColumnarAttrRT_i (line 45) | class ColumnarAttrRT_i
  class ColumnarAttrRT_c (line 65) | class ColumnarAttrRT_c : public ColumnarAttrRT_i
    method ColumnarAttrRT_c (line 68) | ColumnarAttrRT_c ( ESphAttr eType ) : m_eType(eType) {}
    method AddDoc (line 70) | void	AddDoc ( SphAttr_t tAttr ) override						{ assert ( 0 && "Unsuppo...
    method AddDoc (line 71) | void	AddDoc ( const BYTE * pData, int iLength ) override		{ assert ( 0...
    method AddDoc (line 72) | void	AddDoc ( const int64_t * pData, int iLength	) override	{ assert (...
    method GetType (line 74) | common::AttrType_e GetType() const override { return ToColumnarType ( ...
  class ColumnarIterator_RT_c (line 81) | class ColumnarIterator_RT_c : public columnar::Iterator_i
    method Get (line 84) | int64_t		Get ( uint32_t tRowID ) override		{ assert ( 0 && "Unsupporte...
    method Fetch (line 85) | void		Fetch ( const util::Span_T<uint32_t> & dRowIDs, util::Span_T<int...
    method Get (line 87) | int			Get ( uint32_t tRowID, const uint8_t * & pData ) override { asse...
    method GetLength (line 89) | int			GetLength ( uint32_t tRowID ) override	{ assert ( 0 && "Unsuppor...
    method AddDesc (line 91) | void		AddDesc ( std::vector<common::IteratorDesc_t> & dDesc ) const ov...
  class ColumnarIterator_Int_T (line 97) | class ColumnarIterator_Int_T : public ColumnarIterator_RT_c
    method ColumnarIterator_Int_T (line 100) | ColumnarIterator_Int_T ( const CSphVector<T> & dValues ) : m_dValues (...
    method Get (line 102) | int64_t	Get ( uint32_t tRowID ) override { return m_dValues[tRowID]; }
  class ColumnarAttr_Int_T (line 122) | class ColumnarAttr_Int_T : public ColumnarAttrRT_c
    method AddDoc (line 127) | void	AddDoc ( SphAttr_t tAttr ) override			{ m_dValues.Add ( ( (T)tAtt...
    method Save (line 129) | void	Save ( MemoryWriter_c & tWriter ) const override	{ SaveData(tWrit...
    method Save (line 130) | void	Save ( Writer_i & tWriter ) const override	{ SaveData(tWriter); }
    method Load (line 131) | void	Load ( MemoryReader_c & tReader ) override	{ LoadData(tReader); }
    method Load (line 132) | void	Load ( CSphReader & tReader ) override		{ LoadData(tReader); }
    method AllocatedBytes (line 133) | int64_t	AllocatedBytes() const override				{ return m_dValues.GetLengt...
    method CreateIterator (line 135) | std::unique_ptr<columnar::Iterator_i> CreateIterator()	const override ...
  class ColumnarAttr_Bool_c (line 177) | class ColumnarAttr_Bool_c : public ColumnarAttr_Int_T<BYTE>
    method ColumnarAttr_Bool_c (line 182) | ColumnarAttr_Bool_c() : BASE ( SPH_ATTR_BOOL, 1 ) {}
    method AddDoc (line 184) | void	AddDoc ( SphAttr_t tAttr ) override { BASE::m_dValues.Add ( tAttr...
  class ColumnarIterator_String_c (line 189) | class ColumnarIterator_String_c : public ColumnarIterator_RT_c
    method ColumnarIterator_String_c (line 192) | ColumnarIterator_String_c ( const CSphVector<BYTE> & dData, const CSph...
    method GetLength (line 196) | int			GetLength ( uint32_t tRowID ) override	{ return (int)::GetLength...
  class ColumnarAttr_String_c (line 222) | class ColumnarAttr_String_c : public ColumnarAttrRT_c
    method ColumnarAttr_String_c (line 225) | ColumnarAttr_String_c() : ColumnarAttrRT_c ( SPH_ATTR_STRING ) {}
    method Save (line 229) | void	Save ( MemoryWriter_c & tWriter ) const override	{ SaveData(tWrit...
    method Save (line 230) | void	Save ( Writer_i & tWriter ) const override	{ SaveData(tWriter); }
    method Load (line 231) | void	Load ( MemoryReader_c & tReader ) override	{ LoadData(tReader); }
    method Load (line 232) | void	Load ( CSphReader & tReader ) override		{ LoadData(tReader); }
    method AllocatedBytes (line 233) | int64_t	AllocatedBytes() const override				{ return m_dData.GetLengthB...
    method CreateIterator (line 235) | std::unique_ptr<columnar::Iterator_i> CreateIterator()	const override ...
  class ColumnarIterator_MVA_T (line 279) | class ColumnarIterator_MVA_T : public ColumnarIterator_RT_c
    method ColumnarIterator_MVA_T (line 282) | ColumnarIterator_MVA_T ( const CSphVector<T> & dData, const CSphVector...
    method GetLength (line 286) | int			GetLength ( uint32_t tRowID ) override { return ::GetLength ( m_...
  class ColumnarAttr_MVA_T (line 317) | class ColumnarAttr_MVA_T : public ColumnarAttrRT_c
    method ColumnarAttr_MVA_T (line 320) | ColumnarAttr_MVA_T ( ESphAttr eType ) : ColumnarAttrRT_c ( eType ) {}
    method Save (line 324) | void	Save ( MemoryWriter_c & tWriter ) const override	{ SaveData(tWrit...
    method Save (line 325) | void	Save ( Writer_i & tWriter ) const override	{ SaveData(tWriter); }
    method AllocatedBytes (line 326) | int64_t	AllocatedBytes() const override				{ return m_dData.GetLengthB...
    method Load (line 327) | void	Load ( MemoryReader_c & tReader ) override	{ LoadData(tReader); }
    method Load (line 328) | void	Load ( CSphReader & tReader ) override		{ LoadData(tReader); }
    method CreateIterator (line 330) | std::unique_ptr<columnar::Iterator_i> CreateIterator()	const override ...
  function CreateColumnarAttrRT (line 376) | static std::unique_ptr<ColumnarAttrRT_i> CreateColumnarAttrRT ( ESphAttr...
  class ColumnarBuilderRT_c (line 401) | class ColumnarBuilderRT_c : public ColumnarBuilderRT_i
    method ColumnarBuilderRT_c (line 405) | explicit ColumnarBuilderRT_c ( MemoryReader_c & tReader ) { Load(tRead...
    method SetAttr (line 407) | void	SetAttr ( int iAttr, int64_t tAttr ) override						{ m_dAttrs[iAt...
    method SetAttr (line 408) | void	SetAttr ( int iAttr, const uint8_t * pData, int iLength ) overrid...
    method SetAttr (line 409) | void	SetAttr ( int iAttr, const int64_t * pData, int iLength ) overrid...
    method Done (line 410) | bool	Done ( std::string & sError ) override { return true; }
  class ColumnarRT_c (line 452) | class ColumnarRT_c : public ColumnarRT_i
    method CreateAnalyzerOrPrefilter (line 458) | std::vector<common::BlockIterator_i *>	CreateAnalyzerOrPrefilter ( con...
    method EstimateMinMax (line 459) | int64_t			EstimateMinMax ( const common::Filter_t & tFilter, const col...
    method EarlyReject (line 462) | bool			EarlyReject ( const std::vector<common::Filter_t> & dFilters, c...
    method IsFilterDegenerate (line 463) | bool			IsFilterDegenerate ( const common::Filter_t & tFilter ) const o...
  class LightColumnarRT_c (line 481) | class LightColumnarRT_c : public ColumnarRT_c
    method LightColumnarRT_c (line 484) | LightColumnarRT_c ( const CSphSchema& tSchema, const ColumnarBuilderRT...
  class FullColumnarRT_c (line 492) | class FullColumnarRT_c: public ColumnarRT_c
    method FullColumnarRT_c (line 495) | FullColumnarRT_c ( const CSphSchema& tSchema, ColumnarBuilderRT_i* pBu...
    method FullColumnarRT_c (line 502) | FullColumnarRT_c ( const CSphSchema& tSchema, CSphReader& tReader )
  function CreateColumnarBuilderRT (line 578) | std::unique_ptr<ColumnarBuilderRT_i> CreateColumnarBuilderRT ( MemoryRea...
  function CreateColumnarBuilderRT (line 584) | std::unique_ptr<ColumnarBuilderRT_i> CreateColumnarBuilderRT ( const CSp...
  function CreateLightColumnarRT (line 594) | std::unique_ptr<ColumnarRT_i> CreateLightColumnarRT ( const CSphSchema& ...
  function CreateColumnarRT (line 603) | std::unique_ptr<ColumnarRT_i> CreateColumnarRT ( const CSphSchema& tSche...
  function CreateColumnarRT (line 612) | std::unique_ptr<ColumnarRT_i> CreateColumnarRT ( const CSphSchema & tSch...
  function RemoveColumnarDuplicates (line 626) | void RemoveColumnarDuplicates ( std::unique_ptr<ColumnarBuilderRT_i> & p...

FILE: src/columnarrt.h
  function class (line 22) | class ColumnarRT_i : public columnar::Columnar_i
  function class (line 33) | class ColumnarBuilderRT_i : public columnar::Builder_i

FILE: src/columnarsort.cpp
  class CompareSingleError_fn (line 18) | class CompareSingleError_fn
    method FORCE_INLINE (line 21) | FORCE_INLINE static bool IsLess ( RowID_t tRowIdA, SphAttr_t a, RowID_...
  class CompareSingleInt_fn (line 29) | class CompareSingleInt_fn
    method FORCE_INLINE (line 32) | FORCE_INLINE static bool IsLess ( RowID_t tRowIdA, SphAttr_t a, RowID_...
  class CompareSingleFloat_fn (line 40) | class CompareSingleFloat_fn
    method FORCE_INLINE (line 43) | FORCE_INLINE static bool IsLess ( RowID_t tRowIdA, SphAttr_t a, RowID_...
  class CompareError_fn (line 54) | class CompareError_fn
    method FORCE_INLINE (line 57) | FORCE_INLINE static bool IsLess ( const CSphMatch & tMatchA, SphAttr_t...
  class CompareInt_fn (line 65) | class CompareInt_fn
    method FORCE_INLINE (line 68) | FORCE_INLINE static bool IsLess ( const CSphMatch & tMatchA, SphAttr_t...
  function FORCE_INLINE (line 76) | FORCE_INLINE bool CompareInt_fn<2>::IsLess ( const CSphMatch & tMatchA, ...
  function FORCE_INLINE (line 85) | FORCE_INLINE bool CompareInt_fn<3>::IsLess ( const CSphMatch & tMatchA, ...
  function FORCE_INLINE (line 95) | FORCE_INLINE bool CompareInt_fn<4>::IsLess ( const CSphMatch & tMatchA, ...
  function FORCE_INLINE (line 106) | FORCE_INLINE bool CompareInt_fn<5>::IsLess ( const CSphMatch & tMatchA, ...
  class CompareFloat_fn (line 127) | class CompareFloat_fn
    method FORCE_INLINE (line 130) | FORCE_INLINE static bool IsLess ( const CSphMatch & tMatchA, SphAttr_t...
  function FORCE_INLINE (line 138) | FORCE_INLINE bool CompareFloat_fn<2>::IsLess ( const CSphMatch & tMatchA...
  function FORCE_INLINE (line 147) | FORCE_INLINE bool CompareFloat_fn<3>::IsLess ( const CSphMatch & tMatchA...
  function FORCE_INLINE (line 157) | FORCE_INLINE bool CompareFloat_fn<4>::IsLess ( const CSphMatch & tMatchA...
  function FORCE_INLINE (line 168) | FORCE_INLINE bool CompareFloat_fn<5>::IsLess ( const CSphMatch & tMatchA...
  class Compare_fn (line 218) | class Compare_fn
    method FORCE_INLINE (line 221) | FORCE_INLINE static bool IsLess ( RowID_t tRowIdA, SphAttr_t a, RowID_...
    method FORCE_INLINE (line 227) | FORCE_INLINE static bool IsLess ( const CSphMatch & tMatchA, SphAttr_t...
  function FORCE_INLINE (line 235) | FORCE_INLINE bool Compare_fn<1>::IsLess ( const CSphMatch & tMatchA, Sph...
  function FORCE_INLINE (line 242) | FORCE_INLINE bool Compare_fn<2>::IsLess ( const CSphMatch & tMatchA, Sph...
  function FORCE_INLINE (line 250) | FORCE_INLINE bool Compare_fn<3>::IsLess ( const CSphMatch & tMatchA, Sph...
  function FORCE_INLINE (line 259) | FORCE_INLINE bool Compare_fn<4>::IsLess ( const CSphMatch & tMatchA, Sph...
  function FORCE_INLINE (line 269) | FORCE_INLINE bool Compare_fn<5>::IsLess ( const CSphMatch & tMatchA, Sph...
  class ColumnarProxySorter_T (line 282) | class ColumnarProxySorter_T : public ISphMatchSorter
    method Push (line 288) | bool	Push ( const CSphMatch & tEntry ) final							{ return PushMatch(...
    method Push (line 289) | void	Push ( const VecTraits_T<const CSphMatch> & dMatches ) override	{...
    method IsGroupby (line 291) | bool	IsGroupby() const override										{ return m_pSorter->IsGroupby...
    method PushGrouped (line 292) | bool	PushGrouped ( const CSphMatch & tEntry, bool bNewSet ) override	{...
    method ISphMatchSorter (line 298) | ISphMatchSorter * Clone() const override								{ return new ColumnarP...
    method CSphMatchComparatorState (line 302) | const CSphMatchComparatorState & GetState() const override				{ return...
    method ISphSchema (line 305) | const ISphSchema * GetSchema() const override							{ return m_pSchema; }
    method GetTotalCount (line 308) | int64_t	GetTotalCount() const override									{ return m_pSorter->Get...
    method SetFilteredAttrs (line 310) | void	SetFilteredAttrs ( const sph::StringSet & hAttrs, bool bAddDocid ...
    method IsRandom (line 313) | bool	IsRandom() const override 										{ return m_pSorter->IsRandom(...
    method SetRandom (line 314) | void	SetRandom ( bool bRandom ) override								{ m_pSorter->SetRandom...
    method GetMatchCapacity (line 316) | int		GetMatchCapacity() const override								{ return m_pSorter->GetM...
    method RowTagged_t (line 318) | RowTagged_t					GetJustPushed() const override						{ assert (0 && "No...
    method GetJustPopped (line 319) | VecTraits_T<RowTagged_t>	GetJustPopped() const override						{ assert ...
    method SetMerge (line 321) | void		SetMerge ( bool bMerge ) override							{}
    type IteratorWithLocator_t (line 324) | struct IteratorWithLocator_t
  function ARRAY_FOREACH (line 694) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 714) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 760) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 782) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 834) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 858) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 916) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 942) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 960) | ARRAY_FOREACH ( i, m_dIterators )
  function ARRAY_FOREACH (line 979) | ARRAY_FOREACH ( iMatch, dMatches )
  function ARRAY_FOREACH (line 1009) | ARRAY_FOREACH ( iMatch, dMatches )
  function CanCreateColumnarSorter (line 1084) | static bool CanCreateColumnarSorter ( const ISphSchema & tSchema, const ...
  function ISphMatchSorter (line 1139) | static ISphMatchSorter * CreateProxySorter ( ISphMatchSorter * pSorter, ...
  function ISphMatchSorter (line 1195) | ISphMatchSorter * CreateColumnarProxySorter ( ISphMatchSorter * pSorter,...

FILE: src/compressed_http.cpp
  function GzipDecompress (line 17) | bool GzipDecompress ( const ByteBlob_t sIn, CSphVector<BYTE> & dRes, CSp...
  function HasGzip (line 70) | bool HasGzip()

FILE: src/compressed_mysql_layer.cpp
  function DWORD (line 17) | DWORD MysqlCompressedSocket_c::ReadLSBSmallDword ( InputBuffer_c& tIn )

FILE: src/compressed_mysql_layer.h
  function class (line 19) | class MysqlCompressedSocket_c : public AsyncNetBuffer_c

FILE: src/compressed_zlib_mysql.cpp
  class ZlibCompressor (line 17) | class ZlibCompressor
    method csize_t (line 22) | inline static csize_t Common_compressBound ( csize_t uSize )
    method Common_compress (line 27) | inline static int Common_compress ( BYTE* pDest, csize_t* pDestLen, co...
    method Common_uncompress (line 32) | inline static bool Common_uncompress ( BYTE* pDest, csize_t* pDestLen,...
  function IsZlibCompressionAvailable (line 39) | bool IsZlibCompressionAvailable()
  function MakeZlibMysqlCompressedLayer (line 44) | void MakeZlibMysqlCompressedLayer ( std::unique_ptr<AsyncNetBuffer_c> & ...

FILE: src/compressed_zlib_mysql.h
  function IsZlibCompressionAvailable (line 24) | inline bool IsZlibCompressionAvailable() { return false; }
  function MakeZlibMysqlCompressedLayer (line 25) | inline void MakeZlibMysqlCompressedLayer ( std::unique_ptr<AsyncNetBuffe...

FILE: src/compressed_zstd_mysql.cpp
  function InitDynamicZstd (line 26) | static bool InitDynamicZstd()
  function ZstdCompressor (line 64) | ZstdCompressor()
  function csize_t (line 76) | inline csize_t Common_compressBound ( csize_t uSize )
  function Common_compress (line 81) | inline int Common_compress ( BYTE* pDest, csize_t* pDestLen, const BYTE*...
  function Common_uncompress (line 88) | inline bool Common_uncompress ( BYTE* pDest, csize_t* pDestLen, const BY...
  function SetLevel (line 98) | inline void SetLevel ( int iLevel )
  function IsZstdCompressionAvailable (line 104) | bool IsZstdCompressionAvailable()
  function MakeZstdMysqlCompressedLayer (line 113) | void MakeZstdMysqlCompressedLayer ( std::unique_ptr<AsyncNetBuffer_c>& p...

FILE: src/compressed_zstd_mysql.h
  function IsZstdCompressionAvailable (line 24) | inline bool IsZstdCompressionAvailable() { return false; }
  function MakeZstdMysqlCompressedLayer (line 25) | inline void MakeZstdMysqlCompressedLayer ( std::unique_ptr<AsyncNetBuffe...

FILE: src/config_reloader.cpp
  class ConfigReloader_c::Impl_c (line 22) | class ConfigReloader_c::Impl_c final
    method ExistsLocal (line 33) | bool ExistsLocal ( const CSphString& sIndex ) const
    method ExistsDistr (line 39) | bool ExistsDistr ( const CSphString& sIndex ) const
    method cServedIndexRefPtr_c (line 45) | inline cServedIndexRefPtr_c GetSnapServed ( const CSphString& sName ) ...
    method CopyExistingLocal (line 53) | bool CopyExistingLocal ( const CSphString& sIndex )
    method CopyExistingDistr (line 63) | bool CopyExistingDistr ( const CSphString& sIndex )
    method KeepExisting (line 73) | void KeepExisting ( const CSphString& sIndex )
    method AddDeferred (line 80) | void AddDeferred ( const CSphString& sIndex, ServedIndexRefPtr_c&& pSe...
    method LoadDistrFromConfig (line 88) | void LoadDistrFromConfig ( const CSphString& sIndex, const CSphConfigS...
    method LoadNewLocalFromConfig (line 102) | void LoadNewLocalFromConfig ( const CSphString& sIndex, const CSphConf...
    method PreparePlainRotationIfNeed (line 130) | void PreparePlainRotationIfNeed ( const CSphString& sIndex, const cSer...
    method ReconfigureIndex (line 146) | void ReconfigureIndex ( const CSphString& sIndex, const CSphConfigSect...
    method LoadLocalFromConfig (line 162) | void LoadLocalFromConfig ( const CSphString& sIndex, IndexType_e eType...
    method Impl_c (line 206) | explicit Impl_c ( HashOfServed_c& hDeferred )
    method LoadIndexFromConfig (line 217) | void LoadIndexFromConfig ( const CSphString& sIndex, IndexType_e eType...
    method IssuePlainOldRotation (line 234) | void IssuePlainOldRotation() noexcept

FILE: src/conversion.cpp
  function DWORD (line 19) | DWORD sphToDword ( const char * s )
  function sphToFloat (line 27) | float sphToFloat ( const char * s )
  function sphToInt64 (line 41) | int64_t sphToInt64 ( const char * szNumber, CSphString * pError )
  function sphToUInt64 (line 64) | uint64_t sphToUInt64 ( const char * szNumber, CSphString * pError )
  function StrToDocID (line 85) | uint64_t StrToDocID ( const char * szNumber, CSphString & sError )

FILE: src/conversion.h
  function FORCE_INLINE (line 24) | FORCE_INLINE DWORD sphF2DW ( float f )	{ union { float f; DWORD d; } u; ...
  function FORCE_INLINE (line 27) | FORCE_INLINE float sphDW2F ( DWORD d )	{ union { float f; DWORD d; } u; ...
  function FORCE_INLINE (line 30) | FORCE_INLINE uint64_t sphD2QW ( double f )	{ union { double f; uint64_t ...
  function FORCE_INLINE (line 33) | FORCE_INLINE double sphQW2D ( uint64_t d )	{ union { double f; uint64_t ...

FILE: src/coro_stack.cpp
  type Threads (line 21) | namespace Threads {
    function AlignStackSize (line 25) | inline size_t AlignStackSize ( size_t iSize )
    function CoroStack_t (line 30) | CoroStack_t AllocateStack ( size_t iStack )
    function CoroStack_t (line 51) | CoroStack_t MockedStack ( VecTraits_T<BYTE> dStack )
    function DeallocateStack (line 62) | void DeallocateStack ( CoroStack_t tStack )

FILE: src/coro_stack.h
  function namespace (line 24) | namespace Threads

FILE: src/coro_waker.h
  function namespace (line 23) | namespace detail
  function class (line 28) | class Waker_c

FILE: src/coroutine.cpp
  type Threads (line 23) | namespace Threads {
    function StackMockingAllowed (line 27) | bool StackMockingAllowed()
    class CoRoutine_c (line 43) | class CoRoutine_c
      type State_e (line 45) | enum class State_e
      method WorkerLowest (line 60) | void WorkerLowest ( Ctx_t tCtx )
      method YieldLowest (line 70) | void YieldLowest ()
      method CreateContext (line 75) | void CreateContext ( Handler fnHandler, CoroStack_t tStack )
      method CoRoutine_c (line 85) | CoRoutine_c ( Handler fnHandler, CoroStack_t tStack )
      method Run (line 95) | void Run ()
      method IsFinished (line 102) | bool IsFinished () const
      method IsMocked (line 107) | bool IsMocked () const noexcept
      method Yield_ (line 113) | void Yield_ ()
      method BYTE (line 122) | const BYTE* GetTopOfStack() const noexcept
      method GetStackSize (line 127) | int GetStackSize() const noexcept
    function StringBuilder_c (line 133) | StringBuilder_c & operator<< ( StringBuilder_c & dOut, CoRoutine_c::St...
    type CoroState_t (line 144) | struct CoroState_t
      type ESTATE (line 146) | enum ESTATE : DWORD
      method DWORD (line 155) | DWORD ResetFlags( DWORD uFlags )
      method DWORD (line 161) | DWORD SetFlags ( DWORD uFlags )
    type Coro (line 169) | namespace Coro {
      class Worker_c (line 171) | class Worker_c final: public details::SchedulerOperation_t
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Worker_c (line 546) | Worker_c* CurrentWorker() noexcept
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Worker_c (line 551) | Worker_c* Worker() noexcept
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Go (line 559) | void Go ( Handler&& fnHandler, Scheduler_i * pScheduler )
      function Co (line 569) | void Co ( Handler&& fnHandler, Waiter_t tSignaller )
      function Continue (line 580) | void Continue ( Handler&& fnHandler, int iStack )
      function YieldWith (line 593) | void YieldWith ( Handler fnHandler ) noexcept
      function MoveTo (line 599) | void MoveTo ( Scheduler_i * pScheduler ) noexcept
      function Yield_ (line 604) | void Yield_ () noexcept
      function Reschedule (line 609) | void Reschedule() noexcept
      function ID (line 616) | int ID() noexcept
      function RuntimeExceeded (line 621) | bool RuntimeExceeded() noexcept
      function RestartRuntime (line 631) | void RestartRuntime() noexcept
      function NumOfRestarts (line 636) | int NumOfRestarts() noexcept
      function ExecuteN (line 832) | void ExecuteN ( int iConcurrency, Threads::Handler&& fnWorker )
      function SetDefaultThrottlingPeriodMS (line 853) | void SetDefaultThrottlingPeriodMS ( int tmPeriodMs )
      function SetThrottlingPeriodMS (line 858) | void SetThrottlingPeriodMS ( int tmPeriodMs )
      function SetThrottlingPeriodUS (line 865) | void SetThrottlingPeriodUS ( int64_t tmPeriodUs )
      function GetThrottlingPeriodUS (line 871) | int64_t GetThrottlingPeriodUS ()
      function RescheduleAndKeepCrashQuery (line 876) | void RescheduleAndKeepCrashQuery ( bool bVip ) noexcept
      function fnResume (line 882) | inline void fnResume ( volatile Worker_c* pCtx )
      function SleepMsec (line 889) | void SleepMsec ( int iMsec )
      function DWORD (line 1170) | [[nodiscard]] DWORD ReadTableLock_c::GetReads() const noexcept
    function Resumer_fn (line 643) | Resumer_fn MakeCoroExecutor ( Handler fnHandler )
    function CallPlainCoroutine (line 649) | void CallPlainCoroutine ( Handler fnHandler, Scheduler_i* pScheduler )
    function ATTRIBUTE_NO_SANITIZE_ADDRESS (line 659) | ATTRIBUTE_NO_SANITIZE_ADDRESS void MockCallCoroutine ( VecTraits_T<BYT...
    function CallCoroutine (line 666) | void CallCoroutine ( Handler fnHandler )
    function CallCoroutineRes (line 684) | bool CallCoroutineRes ( Predicate fnHandler )
    function StartJob (line 692) | void StartJob ( Handler fnHandler, Scheduler_i * pScheduler )
    function Handler (line 702) | Handler CurrentRestarter ( bool bVip ) noexcept
    function CreateWaker (line 707) | Coro::Waker_c CreateWaker ( Coro::Worker_c* pWorker ) noexcept
    function Waiter_t (line 713) | Waiter_t DefferedRestarter () noexcept
    function Waiter_t (line 718) | Waiter_t DefferedContinuator () noexcept
    function WaitForDeffered (line 723) | void WaitForDeffered ( Waiter_t&& dWaiter ) noexcept
    function WaitForN (line 729) | int WaitForN ( DWORD uN, std::initializer_list<Handler> dTasks )
    function MyStackSize (line 780) | int MyStackSize()
    function IsIMocked (line 788) | bool IsIMocked ()
    function IsInsideCoroutine (line 807) | bool IsInsideCoroutine()
    function Scheduler_i (line 813) | Scheduler_i* Coro::CurrentScheduler()
    function NThreads (line 821) | int NThreads()
    type Coro (line 829) | namespace Coro
      class Worker_c (line 171) | class Worker_c final: public details::SchedulerOperation_t
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Worker_c (line 546) | Worker_c* CurrentWorker() noexcept
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Worker_c (line 551) | Worker_c* Worker() noexcept
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Go (line 559) | void Go ( Handler&& fnHandler, Scheduler_i * pScheduler )
      function Co (line 569) | void Co ( Handler&& fnHandler, Waiter_t tSignaller )
      function Continue (line 580) | void Continue ( Handler&& fnHandler, int iStack )
      function YieldWith (line 593) | void YieldWith ( Handler fnHandler ) noexcept
      function MoveTo (line 599) | void MoveTo ( Scheduler_i * pScheduler ) noexcept
      function Yield_ (line 604) | void Yield_ () noexcept
      function Reschedule (line 609) | void Reschedule() noexcept
      function ID (line 616) | int ID() noexcept
      function RuntimeExceeded (line 621) | bool RuntimeExceeded() noexcept
      function RestartRuntime (line 631) | void RestartRuntime() noexcept
      function NumOfRestarts (line 636) | int NumOfRestarts() noexcept
      function ExecuteN (line 832) | void ExecuteN ( int iConcurrency, Threads::Handler&& fnWorker )
      function SetDefaultThrottlingPeriodMS (line 853) | void SetDefaultThrottlingPeriodMS ( int tmPeriodMs )
      function SetThrottlingPeriodMS (line 858) | void SetThrottlingPeriodMS ( int tmPeriodMs )
      function SetThrottlingPeriodUS (line 865) | void SetThrottlingPeriodUS ( int64_t tmPeriodUs )
      function GetThrottlingPeriodUS (line 871) | int64_t GetThrottlingPeriodUS ()
      function RescheduleAndKeepCrashQuery (line 876) | void RescheduleAndKeepCrashQuery ( bool bVip ) noexcept
      function fnResume (line 882) | inline void fnResume ( volatile Worker_c* pCtx )
      function SleepMsec (line 889) | void SleepMsec ( int iMsec )
      function DWORD (line 1170) | [[nodiscard]] DWORD ReadTableLock_c::GetReads() const noexcept
  function sphTaskCpuTimer (line 761) | int64_t sphTaskCpuTimer()
  type Threads (line 770) | namespace Threads {
    function StackMockingAllowed (line 27) | bool StackMockingAllowed()
    class CoRoutine_c (line 43) | class CoRoutine_c
      type State_e (line 45) | enum class State_e
      method WorkerLowest (line 60) | void WorkerLowest ( Ctx_t tCtx )
      method YieldLowest (line 70) | void YieldLowest ()
      method CreateContext (line 75) | void CreateContext ( Handler fnHandler, CoroStack_t tStack )
      method CoRoutine_c (line 85) | CoRoutine_c ( Handler fnHandler, CoroStack_t tStack )
      method Run (line 95) | void Run ()
      method IsFinished (line 102) | bool IsFinished () const
      method IsMocked (line 107) | bool IsMocked () const noexcept
      method Yield_ (line 113) | void Yield_ ()
      method BYTE (line 122) | const BYTE* GetTopOfStack() const noexcept
      method GetStackSize (line 127) | int GetStackSize() const noexcept
    function StringBuilder_c (line 133) | StringBuilder_c & operator<< ( StringBuilder_c & dOut, CoRoutine_c::St...
    type CoroState_t (line 144) | struct CoroState_t
      type ESTATE (line 146) | enum ESTATE : DWORD
      method DWORD (line 155) | DWORD ResetFlags( DWORD uFlags )
      method DWORD (line 161) | DWORD SetFlags ( DWORD uFlags )
    type Coro (line 169) | namespace Coro {
      class Worker_c (line 171) | class Worker_c final: public details::SchedulerOperation_t
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Worker_c (line 546) | Worker_c* CurrentWorker() noexcept
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Worker_c (line 551) | Worker_c* Worker() noexcept
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Go (line 559) | void Go ( Handler&& fnHandler, Scheduler_i * pScheduler )
      function Co (line 569) | void Co ( Handler&& fnHandler, Waiter_t tSignaller )
      function Continue (line 580) | void Continue ( Handler&& fnHandler, int iStack )
      function YieldWith (line 593) | void YieldWith ( Handler fnHandler ) noexcept
      function MoveTo (line 599) | void MoveTo ( Scheduler_i * pScheduler ) noexcept
      function Yield_ (line 604) | void Yield_ () noexcept
      function Reschedule (line 609) | void Reschedule() noexcept
      function ID (line 616) | int ID() noexcept
      function RuntimeExceeded (line 621) | bool RuntimeExceeded() noexcept
      function RestartRuntime (line 631) | void RestartRuntime() noexcept
      function NumOfRestarts (line 636) | int NumOfRestarts() noexcept
      function ExecuteN (line 832) | void ExecuteN ( int iConcurrency, Threads::Handler&& fnWorker )
      function SetDefaultThrottlingPeriodMS (line 853) | void SetDefaultThrottlingPeriodMS ( int tmPeriodMs )
      function SetThrottlingPeriodMS (line 858) | void SetThrottlingPeriodMS ( int tmPeriodMs )
      function SetThrottlingPeriodUS (line 865) | void SetThrottlingPeriodUS ( int64_t tmPeriodUs )
      function GetThrottlingPeriodUS (line 871) | int64_t GetThrottlingPeriodUS ()
      function RescheduleAndKeepCrashQuery (line 876) | void RescheduleAndKeepCrashQuery ( bool bVip ) noexcept
      function fnResume (line 882) | inline void fnResume ( volatile Worker_c* pCtx )
      function SleepMsec (line 889) | void SleepMsec ( int iMsec )
      function DWORD (line 1170) | [[nodiscard]] DWORD ReadTableLock_c::GetReads() const noexcept
    function Resumer_fn (line 643) | Resumer_fn MakeCoroExecutor ( Handler fnHandler )
    function CallPlainCoroutine (line 649) | void CallPlainCoroutine ( Handler fnHandler, Scheduler_i* pScheduler )
    function ATTRIBUTE_NO_SANITIZE_ADDRESS (line 659) | ATTRIBUTE_NO_SANITIZE_ADDRESS void MockCallCoroutine ( VecTraits_T<BYT...
    function CallCoroutine (line 666) | void CallCoroutine ( Handler fnHandler )
    function CallCoroutineRes (line 684) | bool CallCoroutineRes ( Predicate fnHandler )
    function StartJob (line 692) | void StartJob ( Handler fnHandler, Scheduler_i * pScheduler )
    function Handler (line 702) | Handler CurrentRestarter ( bool bVip ) noexcept
    function CreateWaker (line 707) | Coro::Waker_c CreateWaker ( Coro::Worker_c* pWorker ) noexcept
    function Waiter_t (line 713) | Waiter_t DefferedRestarter () noexcept
    function Waiter_t (line 718) | Waiter_t DefferedContinuator () noexcept
    function WaitForDeffered (line 723) | void WaitForDeffered ( Waiter_t&& dWaiter ) noexcept
    function WaitForN (line 729) | int WaitForN ( DWORD uN, std::initializer_list<Handler> dTasks )
    function MyStackSize (line 780) | int MyStackSize()
    function IsIMocked (line 788) | bool IsIMocked ()
    function IsInsideCoroutine (line 807) | bool IsInsideCoroutine()
    function Scheduler_i (line 813) | Scheduler_i* Coro::CurrentScheduler()
    function NThreads (line 821) | int NThreads()
    type Coro (line 829) | namespace Coro
      class Worker_c (line 171) | class Worker_c final: public details::SchedulerOperation_t
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Worker_c (line 546) | Worker_c* CurrentWorker() noexcept
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Worker_c (line 551) | Worker_c* Worker() noexcept
        method InitWorkerID (line 202) | static uint64_t InitWorkerID()
        type TimePoint_e (line 208) | enum class TimePoint_e : bool { fromresume, realtime }
        method CheckEngageTimer (line 209) | inline void CheckEngageTimer ( TimePoint_e eKind )
        method CoroGuardEnter (line 218) | inline void CoroGuardEnter() noexcept
        method CoroGuardExit (line 229) | inline void CoroGuardExit()
        class CoroGuard_c (line 241) | class CoroGuard_c
          method CoroGuard_c (line 245) | explicit CoroGuard_c ( Worker_c* pWorker ) : m_pWorker { pWorker...
        method DoComplete (line 249) | static void DoComplete ( void* pOwner, SchedulerOperation_t* pBase )
        method Worker_c (line 262) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler )
        method Worker_c (line 274) | Worker_c ( Handler fnHandler, Scheduler_i* pScheduler, Waiter_t tT...
        method Worker_c (line 285) | Worker_c ( Handler fnHandler, VecTraits_T<BYTE> dStack )
        method ResetRunningAndReschedule (line 292) | inline void ResetRunningAndReschedule () noexcept
        method Run (line 308) | inline void Run() noexcept
        method Schedule (line 314) | inline void Schedule(bool bVip=false) noexcept
        method ScheduleContinuation (line 324) | inline void ScheduleContinuation () noexcept
        method StartPrimary (line 334) | static void StartPrimary ( Handler fnHandler, Scheduler_i* pSchedu...
        method StartOther (line 341) | static void StartOther ( Handler fnHandler, Scheduler_i * pSchedul...
        method StartCall (line 349) | static void StartCall ( Handler fnHandler, Scheduler_i* pScheduler...
        method StartContinuation (line 357) | static void StartContinuation ( Handler fnHandler, Scheduler_i * p...
        method ATTRIBUTE_NO_SANITIZE_ADDRESS (line 362) | ATTRIBUTE_NO_SANITIZE_ADDRESS static void MockRun ( Handler fnHand...
        method Worker_c (line 375) | Worker_c* MakeWorker ( Handler fnHandler ) const
        method Restart (line 380) | inline void Restart ( bool bVip = true ) noexcept
        method Continue (line 386) | inline void Continue () noexcept // continue previously run task. ...
        method Pause (line 392) | inline void Pause ( bool bVip = true ) noexcept
        method Reschedule (line 398) | inline void Reschedule ( bool bVip = true ) noexcept
        method Yield_ (line 405) | inline void Yield_ () noexcept
        method YieldWith (line 410) | inline void YieldWith ( Handler fnHandler ) noexcept
        method MoveTo (line 416) | inline void MoveTo ( Scheduler_i * pScheduler ) noexcept
        method Resume (line 425) | inline bool Resume () noexcept
        method Handler (line 439) | inline Handler Restarter ( bool bVip = true ) noexcept
        method Handler (line 444) | inline Handler Continuator () noexcept
        method BYTE (line 449) | const BYTE * GetTopOfStack () const noexcept
        method GetStackSize (line 454) | int GetStackSize () const noexcept
        method IsMocked (line 459) | bool IsMocked () const noexcept
        method Scheduler_i (line 464) | inline Scheduler_i * CurrentScheduler() const noexcept
        method GetCurrentCpuTimeBase (line 469) | inline int64_t GetCurrentCpuTimeBase() const noexcept
        method UID (line 474) | inline uint64_t UID() const noexcept
        method ID (line 479) | inline int ID() const noexcept
        method Worker_c (line 484) | inline static Worker_c* CurrentWorker() noexcept
        method Wake (line 489) | inline bool Wake ( size_t iExpectedEpoch, bool bVip ) noexcept
        method Waker_c (line 502) | inline Waker_c CreateWaker() noexcept
        method SetTimePeriodUS (line 508) | inline void SetTimePeriodUS ( int64_t tmTimePointPeriodUS )
        method GetTimePeriodUS (line 514) | inline int64_t GetTimePeriodUS() const noexcept
        method RuntimeExceeded (line 519) | inline bool RuntimeExceeded() const
        method GetRestPeriodUS (line 529) | inline int64_t GetRestPeriodUS() const noexcept
        method RestartRuntime (line 534) | inline void RestartRuntime() noexcept
        method NumOfRestarts (line 539) | inline int NumOfRestarts() const noexcept
      function Go (line 559) | void Go ( Handler&& fnHandler, Scheduler_i * pScheduler )
      function Co (line 569) | void Co ( Handler&& fnHandler, Waiter_t tSignaller )
      function Continue (line 580) | void Continue ( Handler&& fnHandler, int iStack )
      function YieldWith (line 593) | void YieldWith ( Handler fnHandler ) noexcept
      function MoveTo (line 599) | void MoveTo ( Scheduler_i * pScheduler ) noexcept
      function Yield_ (line 604) | void Yield_ () noexcept
      function Reschedule (line 609) | void Reschedule() noexcept
      function ID (line 616) | int ID() noexcept
      function RuntimeExceeded (line 621) | bool RuntimeExceeded() noexcept
      function RestartRuntime (line 631) | void RestartRuntime() noexcept
      function NumOfRestarts (line 636) | int NumOfRestarts() noexcept
      function ExecuteN (line 832) | void ExecuteN ( int iConcurrency, Threads::Handler&& fnWorker )
      function SetDefaultThrottlingPeriodMS (line 853) | void SetDefaultThrottlingPeriodMS ( int tmPeriodMs )
      function SetThrottlingPeriodMS (line 858) | void SetThrottlingPeriodMS ( int tmPeriodMs )
      function SetThrottlingPeriodUS (line 865) | void SetThrottlingPeriodUS ( int64_t tmPeriodUs )
      function GetThrottlingPeriodUS (line 871) | int64_t GetThrottlingPeriodUS ()
      function RescheduleAndKeepCrashQuery (line 876) | void RescheduleAndKeepCrashQuery ( bool bVip ) noexcept
      function fnResume (line 882) | inline void fnResume ( volatile Worker_c* pCtx )
      function SleepMsec (line 889) | void SleepMsec ( int iMsec )
      function DWORD (line 1170) | [[nodiscard]] DWORD ReadTableLock_c::GetReads() const noexcept

FILE: src/coroutine.h
  function Waiter_t (line 80) | Waiter_t DefferedRestarter() noexcept;
  function mutable (line 345) | mutable sph::Spinlock_c m_tInternalMutex {}
  function WaitQueue_c (line 346) | WaitQueue_c m_tWaitRQueue {}
  function WaitQueue_c (line 376) | WaitQueue_c m_tWaitQueue {}
  function Worker_c (line 377) | Worker_c* m_pOwner { nullptr };
  function class (line 389) | class ConditionVariableAny_c: public ISphNoncopyable
  function class (line 424) | class ConditionVariable_c: public ISphNoncopyable
  function T (line 446) | T m_tValue { 0 }
  function CheckAcquiredSched (line 522) | inline void CheckAcquiredSched ( SchedRole R ) ACQUIRE( R ) NO_THREAD_SA...
  function CheckAcquiredSched (line 528) | inline void CheckAcquiredSched ( RoledSchedulerSharedPtr_t& R ) ACQUIRE(...
  function CheckReleasedSched (line 534) | inline void CheckReleasedSched ( SchedRole R ) RELEASE( R ) NO_THREAD_SA...
  function CheckReleasedSched (line 538) | inline void CheckReleasedSched ( RoledSchedulerSharedPtr_t & R ) RELEASE...
  function class (line 542) | class SCOPED_CAPABILITY CheckRole_c

FILE: src/costestimate.cpp
  function EstimateFilterSelectivity (line 26) | int64_t EstimateFilterSelectivity ( const CSphFilterSettings & tSettings...
  class FilterSelectivityEstimator_c (line 43) | class FilterSelectivityEstimator_c
    method ClampEstimate (line 56) | int64_t		ClampEstimate ( int64_t iValue ) const	{ return std::clamp ( ...
  function EstimateFilterSelectivity (line 134) | int64_t EstimateFilterSelectivity ( const VecTraits_T<CSphFilterSettings...
  function EstimateMTCost (line 149) | static float EstimateMTCost ( float fCost, int iThreads, float fKPerf, f...
  function EstimateMTCost (line 176) | float EstimateMTCost ( float fCost, int iThreads )
  function EstimateMTCostCS (line 185) | float EstimateMTCostCS ( float fCost, int iThreads )
  function EstimateMTCostSI (line 194) | float EstimateMTCostSI ( float fCost, int iThreads )
  function EstimateMTCostSIFT (line 203) | float EstimateMTCostSIFT ( float fCost, int iThreads )
  class CostEstimate_c (line 213) | class CostEstimate_c : public CostEstimate_i
    method Cost_Filter (line 242) | static float	Cost_Filter ( int64_t iDocs, float fComplexity )		{ retur...
    method Cost_BlockFilter (line 243) | static float	Cost_BlockFilter ( int64_t iDocs, float fComplexity )	{ r...
    method Cost_ColumnarFilter (line 244) | static float	Cost_ColumnarFilter ( int64_t iDocs, float fComplexity ){...
    method Cost_Push (line 245) | static float	Cost_Push ( int64_t iDocs )								{ return COST_PUSH*iDo...
    method Cost_PushImplicitGroupby (line 246) | static float	Cost_PushImplicitGroupby ( int64_t iDocs )				{ return CO...
    method Cost_IndexReadSingle (line 248) | static float	Cost_IndexReadSingle ( int64_t iDocs )					{ return COST_...
    method Cost_IndexReadBitmap (line 249) | static float	Cost_IndexReadBitmap ( int64_t iDocs )					{ return COST_...
    method Cost_IndexUnionQueue (line 250) | static float	Cost_IndexUnionQueue ( int64_t iDocs )					{ return COST_...
    method Cost_LookupRead (line 251) | static float	Cost_LookupRead ( int64_t iDocs )						{ return COST_LOOK...
    method Cost_IndexIteratorInit (line 252) | static float	Cost_IndexIteratorInit ( int64_t iNumIterators )		{ retur...
    method CalcMTCost (line 261) | float	CalcMTCost ( float fCost ) const	{ return EstimateMTCost ( fCost...
    method CalcMTCostCS (line 262) | float	CalcMTCostCS ( float fCost ) const	{ return EstimateMTCostCS ( f...
    method CalcMTCostSI (line 263) | float	CalcMTCostSI ( float fCost ) const	{ return EstimateMTCostSI ( f...
    method GetNumIndexes (line 273) | int		GetNumIndexes() const								{ return m_dSIInfo.GetLength(); }
    method SecondaryIndexInfo_t (line 274) | const SecondaryIndexInfo_t & GetIndex ( int iIndex ) const	{ return m_...
    method CSphFilterSettings (line 275) | const CSphFilterSettings & GetFilter ( int iIndex ) const	{ return m_t...
  function CostEstimate_i (line 645) | CostEstimate_i * CreateCostEstimate ( const CSphVector<SecondaryIndexInf...
  function CalcFTIntersectCost (line 651) | float CalcFTIntersectCost ( const NodeEstimate_t & tEst1, const NodeEsti...

FILE: src/costestimate.h
  function class (line 16) | class CostEstimate_i
  type SecondaryIndexInfo_t (line 28) | struct SecondaryIndexInfo_t
  type SelectIteratorCtx_t (line 44) | struct SelectIteratorCtx_t
  type NodeEstimate_t (line 67) | struct NodeEstimate_t
  type CreateFilterContext_t (line 68) | struct CreateFilterContext_t

FILE: src/daemon/api_search.cpp
  function ParseMatch (line 333) | static void ParseMatch ( CSphMatch & tMatch, MemInputBuffer_c & tReq, co...
  function ParseSchema (line 443) | static void ParseSchema ( OneResultset_t & tRes, MemInputBuffer_c & tReq )
  function ParseSearchFilter (line 588) | static bool ParseSearchFilter ( CSphFilterSettings & tFilter, InputBuffe...
  function AddDocids (line 685) | static void AddDocids ( CSphVector<CSphQueryItem> & dItems )
  function PrepareQueryEmulation (line 703) | void PrepareQueryEmulation ( CSphQuery * pQuery )
  function FixupQuerySettings (line 750) | static void FixupQuerySettings ( CSphQuery & tQuery )
  function ParseSearchQuery (line 764) | bool ParseSearchQuery ( InputBuffer_c & tReq, ISphOutputBuffer & tOut, C...
  function SendDataPtrAttr (line 1147) | static void SendDataPtrAttr ( ISphOutputBuffer& tOut, const BYTE * pData )
  function SendJsonAsString (line 1156) | static void SendJsonAsString ( ISphOutputBuffer& tOut, const BYTE * pJSON )
  function SendJson (line 1171) | static void SendJson ( ISphOutputBuffer& tOut, const BYTE * pJSON, bool ...
  function SendJsonFieldAsString (line 1179) | static void SendJsonFieldAsString ( ISphOutputBuffer& tOut, const BYTE *...
  function SendJsonField (line 1196) | static void SendJsonField ( ISphOutputBuffer& tOut, const BYTE * pJSON, ...
  function SendMVA (line 1214) | static void SendMVA ( ISphOutputBuffer& tOut, const BYTE * pMVA, bool b6...
  function SendFloatVec (line 1246) | static void SendFloatVec ( ISphOutputBuffer & tOut, const BYTE * pData )
  function ESphAttr (line 1263) | static ESphAttr FixupAttrForNetwork ( const CSphColumnInfo & tCol, const...
  function SendSchema (line 1305) | static void SendSchema ( ISphOutputBuffer & tOut, const AggrResult_t & t...
  function SendAttribute (line 1326) | static void SendAttribute ( ISphOutputBuffer & tOut, const CSphMatch & t...
  function SendResult (line 1393) | void SendResult ( int iVer, ISphOutputBuffer & tOut, const AggrResult_t&...
  function HandleCommandSearch (line 1507) | void HandleCommandSearch ( ISphOutputBuffer & tOut, WORD uVer, InputBuff...

FILE: src/daemon/api_search.h
  function explicit (line 41) | explicit SearchReplyParser_c ( int iResults )
  function iQueryResult (line 48) | struct cSearchResult final : iQueryResult

FILE: src/daemon/crash_logger.cpp
  type QueryCopyState_t (line 62) | struct QueryCopyState_t
  function sphCopyEncodedBase64 (line 77) | static bool sphCopyEncodedBase64 ( QueryCopyState_t & tEnc )
  function sphCopySphinxQL (line 131) | static bool sphCopySphinxQL ( QueryCopyState_t & tState )
  function sphCopySphinxHttp (line 157) | static bool sphCopySphinxHttp ( QueryCopyState_t & tState )
  class FixedStreamBuf (line 173) | class FixedStreamBuf : public std::streambuf
    method FixedStreamBuf (line 176) | FixedStreamBuf ( char * pBuf, int iSize )
    method GetPos (line 182) | int GetPos() const { return (int)( pptr()-pbase() ); }
    method overflow (line 185) | int overflow ( int c ) override
    method xsputn (line 196) | std::streamsize xsputn ( const char * sBuf, std::streamsize iBufSize )...
  type sigaction (line 442) | struct sigaction

FILE: src/daemon/crash_logger.h
  function namespace (line 15) | namespace CrashLogger

FILE: src/daemon/daemon_log.cpp
  function LogTimeZoneStartup (line 39) | void LogTimeZoneStartup ( const CSphString & sWarning )
  function GetDaemonLogBufSize (line 52) | int GetDaemonLogBufSize () noexcept
  function SetLogFilter (line 58) | void SetLogFilter ( const CSphString & sFilter ) noexcept
  function GetActiveLogFD (line 68) | int GetActiveLogFD () noexcept
  function GetDaemonLogFD (line 74) | int GetDaemonLogFD () noexcept
  function ForceLogStdout (line 80) | bool ForceLogStdout () noexcept
  function StopLogStdout (line 86) | void StopLogStdout () noexcept
  function SetLogFileMode (line 92) | void SetLogFileMode ( int iMode ) noexcept
  function CSphString (line 98) | const CSphString & sphGetLogFile () noexcept
  function RefreshIsAtty (line 104) | void RefreshIsAtty () noexcept
  function sphLogEntry (line 112) | static void sphLogEntry ( ESphLogLevel eLevel, char * sBuf, char * sTtyB...
  function sphLog (line 141) | void sphLog ( ESphLogLevel eLevel, const char * sFmt, va_list ap )
  function ReopenDaemonLog (line 252) | void ReopenDaemonLog ()
  function ChangeLogFileMode (line 272) | void ChangeLogFileMode ( int iFile ) noexcept
  function SetDaemonLog (line 283) | void SetDaemonLog ( CSphString && sLog, bool bCloseIfOpened )
  function DisableLogSyslog (line 321) | void DisableLogSyslog () noexcept
  function LogSyslogEnabled (line 326) | bool LogSyslogEnabled () noexcept

FILE: src/daemon/failures_log.cpp
  function CmpString (line 17) | static int CmpString ( const CSphString & a, const CSphString & b )
  function ReportIndexesName (line 43) | void ReportIndexesName ( int iSpanStart, int iSpandEnd, const CSphVector...

FILE: src/daemon/failures_log.h
  type SearchFailure_t (line 18) | struct SearchFailure_t
  function class (line 25) | class SearchFailuresLog_c

FILE: src/daemon/http_log.cpp
  function HttpLogEnabled (line 24) | bool HttpLogEnabled () noexcept
  function ReopenHttpLog (line 29) | void ReopenHttpLog ()
  function SetupHttpLog (line 48) | void SetupHttpLog ( CSphString sHttpLog )
  function logRec (line 61) | static void logRec ( const StringBuilder_c& sData )
  function logHttpOutput (line 67) | void logHttpOutput ( VecTraits_T<BYTE> dData, int iReqID )
  function logHttpInput (line 85) | void logHttpInput ( VecTraits_T<BYTE> sData, int iReqID, int64_t iTimest...

FILE: src/daemon/logger.h
  type ESphLogLevel (line 19) | enum ESphLogLevel
  type class (line 47) | enum class
  type SqlStmt_e (line 53) | enum SqlStmt_e
  function LOG_FORMAT (line 56) | LOG_FORMAT LogFormat () noexcept;
  type class (line 83) | enum class

FILE: src/daemon/match_iterator.cpp
  class MatchTagSortAccessor_c (line 16) | class MatchTagSortAccessor_c
    method MatchTagSortAccessor_c (line 20) | explicit MatchTagSortAccessor_c ( const VecTraits_T<CSphMatch> & dTagO...
    method MEDIAN_TYPE (line 23) | static MEDIAN_TYPE Key ( T * a ) { return a->m_iTag; }
    method Swap (line 24) | static void Swap ( T * a, T * b ) noexcept { ::Swap ( a->m_iTag, b->m_...
    method T (line 25) | static T * Add ( T * p, int i ) noexcept { return p+i; }
    method Sub (line 26) | static int Sub ( T * b, T * a ) noexcept { return (int)(b-a); }
    method CopyKey (line 27) | static void CopyKey ( MEDIAN_TYPE * pMed, CSphMatch * pVal ) noexcept ...
    method IsLess (line 29) | bool IsLess ( int a, int b ) const noexcept

FILE: src/daemon/match_iterator.h
  function class (line 33) | class MatchIterator_c

FILE: src/daemon/minimize_aggr_result.cpp
  function MinimizeSchema (line 23) | static bool MinimizeSchema ( CSphSchema & tDst, const ISphSchema & tSrc )
  function RemapResult (line 116) | static void RemapResult ( AggrResult_t & dResult )
  function GetIndexSchemaItems (line 183) | static bool GetIndexSchemaItems ( const ISphSchema & tSchema, const CSph...
  function IsJoinedWeight (line 202) | static bool IsJoinedWeight ( const CSphString & sAttr, const CSphQuery &...
  function GetItemsLeftInSchema (line 217) | static bool GetItemsLeftInSchema ( const ISphSchema & tSchema, const CSp...
  type AttrSort_fn (line 242) | struct AttrSort_fn
    method AttrSort_fn (line 246) | explicit AttrSort_fn ( const ISphSchema & tSchema )
    method IsLess (line 250) | bool IsLess ( int iA, int iB ) const
  function DoExpansion (line 289) | static void DoExpansion ( const ISphSchema & tSchema, const CSphVector<i...
  function KillPlainDupes (line 341) | static int KillPlainDupes ( ISphMatchSorter * pSorter, AggrResult_t & tR...
  function KillGroupbyDupes (line 387) | static int KillGroupbyDupes ( ISphMatchSorter * pSorter, AggrResult_t & ...
  function SortTagsAndDocstores (line 410) | static void SortTagsAndDocstores ( AggrResult_t & tRes, const VecTraits_...
  function KillDupesAndFlatten (line 425) | static int KillDupesAndFlatten ( ISphMatchSorter * pSorter, AggrResult_t...
  function RecoverAggregateFunctions (line 468) | static void RecoverAggregateFunctions ( const CSphQuery & tQuery, const ...
  type GenericMatchSort_fn (line 487) | struct GenericMatchSort_fn : CSphMatchComparatorState
    method IsLess (line 489) | bool IsLess ( const CSphMatch * a, const CSphMatch * b ) const
  function ExtractPostlimit (line 542) | static void ExtractPostlimit ( const ISphSchema & tSchema, bool bMaster,...
  function GetUniqueTagsWithDocstores (line 553) | static CSphVector<int> GetUniqueTagsWithDocstores ( const AggrResult_t &...
  function SetupPostlimitExprs (line 578) | static void SetupPostlimitExprs ( const DocstoreReader_i * pDocstore, co...
  function EvalPostlimitExprs (line 589) | static void EvalPostlimitExprs ( CSphMatch & tMatch, const CSphColumnInf...
  function ProcessMultiPostlimit (line 624) | static void ProcessMultiPostlimit ( AggrResult_t & tRes, VecTraits_T<con...
  function ProcessSinglePostlimit (line 663) | static void ProcessSinglePostlimit ( OneResultset_t & tRes, VecTraits_T<...
  function ProcessLocalPostlimit (line 686) | static void ProcessLocalPostlimit ( AggrResult_t & tRes, const CSphQuery...
  function MinimizeSchemas (line 720) | static bool MinimizeSchemas ( AggrResult_t & tRes )
  function MergeAllMatches (line 752) | static bool MergeAllMatches ( AggrResult_t & tRes, const CSphQuery & tQu...
  function ApplyOuterOrder (line 842) | static bool ApplyOuterOrder ( AggrResult_t & tRes, const CSphQuery & tQu...
  function ComputePostlimit (line 864) | static void ComputePostlimit ( AggrResult_t & tRes, const CSphQuery & tQ...
  function MinimizeAggrResult (line 888) | bool MinimizeAggrResult ( AggrResult_t & tRes, const CSphQuery & tQuery,...

FILE: src/daemon/query_log.cpp
  function SlowTimeExceeded (line 41) | bool SlowTimeExceeded ( int iTimeMs ) noexcept
  function SetLogFormat (line 47) | void SetLogFormat ( LOG_FORMAT eFormat ) noexcept
  function LOG_FORMAT (line 53) | LOG_FORMAT LogFormat () noexcept
  function SetLogCompact (line 59) | void SetLogCompact ( bool bCompact ) noexcept
  function SetLogStatsFlags (line 65) | void SetLogStatsFlags ( bool bIOStats, bool bCPUStats ) noexcept
  function SetupQueryLogDrain (line 72) | void SetupQueryLogDrain ( CSphString sQueryLog )
  function ReopenQueryLog (line 89) | void ReopenQueryLog ()
  function RedirectQueryLogToDaemonLog (line 108) | void RedirectQueryLogToDaemonLog ()
  function OpenSyslogIfNecessary (line 116) | void OpenSyslogIfNecessary ()
  function WriteQuery (line 129) | static void WriteQuery ( const StringBuilder_c & tBuf )
  function LogQueryPlain (line 135) | static void LogQueryPlain ( const CSphQuery & tQuery, const CSphQueryRes...
  function CSphString (line 238) | CSphString RemoveBackQuotes ( const char * pSrc )
  function FormatOrderBy (line 271) | static void FormatOrderBy ( StringBuilder_c * pBuf, const char * sPrefix...
  function FormatOption (line 306) | static void FormatOption ( const CSphQuery & tQuery, StringBuilder_c & t...
  function AppendHint (line 413) | static void AppendHint ( const IndexHint_t & tHint, const StrVec_t & dIn...
  function FormatIndexHints (line 422) | static void FormatIndexHints ( const CSphQuery & tQuery, StringBuilder_c...
  function VacuumSpacesFromJson (line 453) | void VacuumSpacesFromJson ( const char* szJson, StringBuilder_c & tBuf )...
  function LogQueryJson (line 511) | static void LogQueryJson ( const CSphQuery & q, StringBuilder_c & tBuf )
  function FormatTimeConnClient (line 525) | static void FormatTimeConnClient ( StringBuilder_c & tBuf )
  function FormatSphinxql (line 543) | void FormatSphinxql ( const CSphQuery & q, const CSphQuery & tJoinOption...
  function LogQuerySphinxql (line 658) | static void LogQuerySphinxql ( const CSphQuery & q, const CSphQuery & tJ...
  function LogQuery (line 742) | void LogQuery ( const CSphQuery & q, const CSphQuery & tJoinOptions, con...
  function LogSphinxqlError (line 760) | void LogSphinxqlError ( const char * szStmt, const Str_t & sError )
  function LogSphinxqlError (line 765) | void LogSphinxqlError ( const Str_t & sStmt, const Str_t & sError )
  function LogBuddyQuery (line 788) | void LogBuddyQuery ( Str_t sQuery, BuddyQuery_e tType )
  function LogFilterStatementSphinxql (line 822) | static int64_t LogFilterStatementSphinxql ( Str_t sQuery, SqlStmt_e eStmt )
  function ConfigureQueryLogCommands (line 836) | void ConfigureQueryLogCommands ( const CSphString & sMode )
  function LogSphinxqlClause (line 901) | void LogSphinxqlClause ( Str_t sQuery, int iRealTime )
  function LogQueryToSphinxlLog (line 915) | void LogQueryToSphinxlLog (const CSphString& sQuery, const CSphString& s...

FILE: src/daemon/search_handler.cpp
  class RetireQueriesVec_c (line 95) | class RetireQueriesVec_c
    method OneQueryDeleted (line 100) | void OneQueryDeleted()
    method Delete (line 109) | static void Delete ( void * pArg )
    method EngageRetiring (line 121) | void EngageRetiring ( CSphFixedVector<CSphQuery> dQueries, CSphVector<...
  function cServedIndexRefPtr_c (line 167) | cServedIndexRefPtr_c KeepCollection_c::Get ( const CSphString & sName ) ...
  function ARRAY_FOREACH (line 258) | ARRAY_FOREACH ( i, m_dQueries )
  function StrVec_t (line 284) | static StrVec_t GetDefaultSchema ( const CSphIndex* pIndex )
  function GetMaxMatches (line 314) | static int GetMaxMatches ( int iQueryMaxMatches, const CSphIndex * pIndex )
  function SphQueueSettings_t (line 323) | SphQueueSettings_t SearchHandler_c::MakeQueueSettings ( const CSphIndex ...
  type LocalSearchRef_t (line 414) | struct LocalSearchRef_t
    method LocalSearchRef_t (line 422) | LocalSearchRef_t ( ExprHook_c & tHook, StrVec_t* pExtra, VecTraits_T<S...
    method MergeChild (line 430) | void MergeChild ( LocalSearchRef_t dChild ) const
    method IsClonable (line 475) | inline static bool IsClonable()
  type LocalSearchClone_t (line 481) | struct LocalSearchClone_t
    method LocalSearchClone_t (line 490) | explicit LocalSearchClone_t ( const LocalSearchRef_t & dParent)
  function cServedIndexRefPtr_c (line 521) | cServedIndexRefPtr_c SearchHandler_c::CheckIndexSelectable ( const CSphS...
  function ARRAY_FOREACH (line 574) | ARRAY_FOREACH ( i, m_dNQueries )
  function ARRAY_FOREACH (line 609) | ARRAY_FOREACH ( i, dErrors )
  function ARRAY_FOREACH (line 625) | ARRAY_FOREACH ( iLocal, m_dLocal )
  function ARRAY_FOREACH (line 684) | ARRAY_FOREACH ( iLocal, m_dLocal )
  class AssignTag_c (line 726) | class AssignTag_c final: public MatchProcessor_i
    method AssignTag_c (line 729) | explicit AssignTag_c ( int iTag )
    method Process (line 733) | void Process ( CSphMatch * pMatch ) 			{ ProcessMatch(pMatch); }
    method ProcessInRowIdOrder (line 734) | bool ProcessInRowIdOrder() const 				{ return false;	}
    method Process (line 735) | void Process ( VecTraits_T<CSphMatch *> & dMatches )  { dMatches.for_e...
    method ProcessMatch (line 739) | void ProcessMatch ( CSphMatch * pMatch )		{ pMatch->m_iTag = m_iTag; }
  class GlobalSorters_c (line 743) | class GlobalSorters_c final
    method GlobalSorters_c (line 746) | GlobalSorters_c ( const VecTraits_T<CSphQuery> & dQueries, const CSphV...
    method StoreSorter (line 788) | bool StoreSorter ( int iQuery, int iIndex, ISphMatchSorter * & pSorter...
    method NeedGlobalSorters (line 802) | bool NeedGlobalSorters() const
    method MergeResults (line 807) | void MergeResults ( VecTraits_T<AggrResult_t> & dResults )
    type SorterData_t (line 851) | struct SorterData_t
  function ARRAY_FOREACH_COND (line 1190) | ARRAY_FOREACH_COND ( i, tFirstQueryItems, bSameItems )
  type IndexSettings_t (line 1217) | struct IndexSettings_t
  function ARRAY_FOREACH_COND (line 1231) | ARRAY_FOREACH_COND ( i, m_dLocal, bGlobalIDF )
  function ARRAY_FOREACH (line 1276) | ARRAY_FOREACH ( i, m_dLocal )
  function ARRAY_FOREACH (line 1289) | ARRAY_FOREACH ( i, dLocal )
  function GetIndexWeight (line 1343) | static int GetIndexWeight ( const CSphString& sName, const CSphVector<CS...
  function CalculateMass (line 1356) | uint64_t CalculateMass ( const CSphIndexStatus & dStats )
  function GetIndexMass (line 1366) | static uint64_t GetIndexMass ( const CSphString & sName )
  function FixupSystemTableW (line 1373) | static void FixupSystemTableW ( StrVec_t & dNames, CSphQuery & tQuery ) ...
  function ARRAY_FOREACH (line 1624) | ARRAY_FOREACH ( iLocal, m_dLocal )
  function CollectAllLocalIndexes (line 1685) | static CSphVector<LocalIndex_t> CollectAllLocalIndexes ( const CSphVecto...
  function CheckExpansion (line 1810) | static void CheckExpansion ( CSphQueryResultMeta & tMeta )
  type QueryInfo_t (line 1834) | struct QueryInfo_t : TaskInfo_t
  function DEFINE_RENDER (line 1843) | DEFINE_RENDER ( QueryInfo_t )
  function FillupFacetError (line 1853) | static void FillupFacetError ( int iQueries, const VecTraits_T<CSphQuery...
  function ARRAY_FOREACH (line 2033) | ARRAY_FOREACH ( iAgent, dRemotes )
  function ESphAggrFunc (line 2254) | static ESphAggrFunc GetAggr ( Aggr_e eAggrFunc )
  function AddCompositeItems (line 2267) | void AddCompositeItems ( const CSphString & sCol, CSphVector<CSphQueryIt...
  function SearchHandler_c (line 2290) | SearchHandler_c CreateMsearchHandler ( std::unique_ptr<QueryParser_i> pQ...

FILE: src/daemon/search_handler.h
  type QueryStat_t (line 22) | struct QueryStat_t
  type StatsPerQuery_t (line 30) | struct StatsPerQuery_t
  function StatsPerQuery_t (line 35) | struct DistrServedByAgent_t : StatsPerQuery_t
  function class (line 47) | class KeepCollection_c final
  type LocalIndex_t (line 62) | struct LocalIndex_t
  type JoinedIndexes_t (line 71) | struct JoinedIndexes_t
  type LocalSearchRef_t (line 77) | struct LocalSearchRef_t
  function SetJoinQueryOptions (line 92) | void							SetJoinQueryOptions ( int iQuery, const CSphQuery & tJoinQuer...
  function SetFederatedUser (line 94) | void							SetFederatedUser () { m_bFederatedUser = true; }
  type IndexPSInfo_t (line 146) | struct IndexPSInfo_t
  type JoinedServedIndex_t (line 157) | struct JoinedServedIndex_t

FILE: src/daemon/system_tables.cpp
  function ParseSystem (line 28) | static bool ParseSystem ( TableFeeder_fn & fnFeed, const CSphString & sN...
  function ParseInformationSchema (line 48) | static bool ParseInformationSchema ( TableFeeder_fn & fnFeed, const CSph...
  function ParseSubkeys (line 58) | static bool ParseSubkeys ( TableFeeder_fn & fnFeed, const CSphString & s...

FILE: src/daemon/winservice.cpp
  function WinService (line 16) | bool WinService () noexcept
  function StopWinService (line 39) | bool StopWinService () noexcept
  function MySetServiceStatus (line 45) | void MySetServiceStatus ( DWORD dwCurrentState, DWORD dwWin32ExitCode, D...
  function ServiceControl (line 67) | void WINAPI ServiceControl ( DWORD dwControlCode )
  function SC_HANDLE (line 100) | SC_HANDLE ServiceOpenManager ()
  function AppendArg (line 114) | void AppendArg ( char * sBuf, int iBufLimit, const char * sArg )
  function ServiceInstall (line 166) | void ServiceInstall ( int argc, char ** argv )
  function ServiceDelete (line 222) | void ServiceDelete ()
  function EventLogEntry (line 251) | void EventLogEntry ( ESphLogLevel eLevel, char * sBuf, char * sTtyBuf )
  function BOOL (line 289) | BOOL WINAPI CtrlHandler ( DWORD )
  function WinSetConsoleCtrlHandler (line 296) | void WinSetConsoleCtrlHandler () noexcept
  function ParseArgsAndStartWinService (line 304) | bool ParseArgsAndStartWinService ( int argc, char ** argv, void * Servic...
  function SetupWinService (line 339) | void SetupWinService ( int& argc, char **& argv )
  function SetWinServiceStopped (line 369) | void SetWinServiceStopped ()
  function SetWinServiceRunning (line 374) | void SetWinServiceRunning ()
  function CloseWinPipe (line 381) | void CloseWinPipe ()
  function CheckWinSignals (line 387) | void CheckWinSignals ()
  function WinStopOrWaitAnother (line 416) | int WinStopOrWaitAnother(int iPid, int iWaitTimeout)

FILE: src/daemon/winservice.h
  type ESphLogLevel (line 26) | enum ESphLogLevel

FILE: src/datareader.cpp
  function ESphQueryState (line 17) | inline static ESphQueryState StateByKind ( DataReaderFactory_c::Kind_e e...
  class FileBlockReader_c (line 29) | class FileBlockReader_c : public FileBlockReader_i
    method FileBlockReader_c (line 32) | explicit FileBlockReader_c ( const char * szFileName )
    method RowID_t (line 36) | RowID_t		UnzipRowid() override { return UnzipInt (); }
    method SphWordID_t (line 37) | SphWordID_t	UnzipWordid() override { return UnzipOffset (); }
  class ThinMMapReader_c (line 46) | class ThinMMapReader_c final : public FileBlockReader_c
    method SphOffset_t (line 49) | SphOffset_t GetPos () const final
    method SeekTo (line 58) | void SeekTo ( SphOffset_t iPos, int /*iSizeHint*/ ) final
    method Reset (line 71) | void Reset () final
    method ThinMMapReader_c (line 86) | ThinMMapReader_c ( const BYTE * pArena, SphOffset_t iSize, const char ...
    method BYTE (line 93) | BYTE GetByte() override
  function DWORD (line 137) | DWORD ThinMMapReader_c::GetDword()
  function SphOffset_t (line 145) | SphOffset_t	ThinMMapReader_c::GetOffset()
  function DWORD (line 153) | DWORD ThinMMapReader_c::UnzipInt()
  class DirectFileReader_c (line 166) | class DirectFileReader_c final : public FileBlockReader_c, protected Fil...
    method SeekTo (line 171) | void		SeekTo ( SphOffset_t iPos, int iSizeHint ) final		{ FileReader_c...
    method GetBytes (line 172) | void		GetBytes ( BYTE * pData, int iSize ) final				{ FileReader_c::Ge...
    method GetBytesZerocopy (line 173) | int 		GetBytesZerocopy ( const BYTE *& pData, int iMax ) final { retur...
    method SphOffset_t (line 174) | SphOffset_t GetPos () const final	{ return FileReader_c::GetPos(); }
    method BYTE (line 175) | BYTE		GetByte() final			{ return FileReader_c::GetByte(); }
    method DWORD (line 176) | DWORD		GetDword () final		{ return FileReader_c::GetDword(); }
    method SphOffset_t (line 177) | SphOffset_t	GetOffset() final		{ return FileReader_c::GetOffset(); }
    method DWORD (line 178) | DWORD		UnzipInt() final		{ return FileReader_c::UnzipInt(); }
    method UnzipOffset (line 179) | uint64_t	UnzipOffset() final		{ return FileReader_c::UnzipOffset(); }
    method Reset (line 180) | void		Reset() final			{ FileReader_c::Reset(); }
    method DirectFileReader_c (line 183) | explicit DirectFileReader_c ( BYTE * pBuf, int iSize, const char * szF...
  class DirectFactory_c (line 194) | class DirectFactory_c final : public DataReaderFactory_c
    method DirectFactory_c (line 197) | DirectFactory_c ( const CSphString & sFile, CSphString & sError, ESphQ...
    method GetMappedsize (line 205) | uint64_t GetMappedsize () const final
    method GetCoresize (line 210) | uint64_t GetCoresize () const final
    method SphOffset_t (line 215) | SphOffset_t GetFilesize () const final
    method SphOffset_t (line 220) | SphOffset_t GetPos () const final
    method SeekTo (line 225) | void SeekTo ( SphOffset_t iPos ) final
    method FileBlockReader_c (line 231) | FileBlockReader_c * MakeReader ( BYTE * pBuf, int iSize ) final
    method SetProfile (line 244) | void SetProfile ( QueryProfile_c * pProfile ) final
  class MMapFactory_c (line 263) | class MMapFactory_c final : public DataReaderFactory_c
    method MMapFactory_c (line 266) | MMapFactory_c ( const CSphString & sFile, CSphString & sError, FileAcc...
    method GetMappedsize (line 273) | uint64_t GetMappedsize () const final
    method GetCoresize (line 278) | uint64_t GetCoresize () const final
    method SphOffset_t (line 283) | SphOffset_t GetFilesize () const final
    method SphOffset_t (line 288) | SphOffset_t GetPos () const final
    method SeekTo (line 293) | void SeekTo ( SphOffset_t iPos ) final
    method FileBlockReader_c (line 299) | FileBlockReader_c * MakeReader ( BYTE *, int ) final
  function DataReaderFactory_c (line 318) | DataReaderFactory_c * NewProxyReader ( const CSphString & sFile, CSphStr...

FILE: src/datareader.h
  function class (line 20) | class FileBlockReader_i : public ISphRefcountedMT
  function class (line 42) | class DataReaderFactory_c : public ISphRefcountedMT

FILE: src/datetime.cpp
  function CheckForUTC (line 23) | static void CheckForUTC()
  function CSphString (line 29) | static CSphString DetermineLocalTimeZoneName ( CSphString & sWarning )
  function CSphString (line 105) | static CSphString FixupZoneName ( const CSphString & sName )
  function SetTimeZoneLocal (line 114) | static void SetTimeZoneLocal ( StrVec_t & dWarnings )
  function InitTimeZones (line 147) | void InitTimeZones ( StrVec_t & dWarnings )
  function SetTimeZone (line 155) | bool SetTimeZone ( const char * szTZ, CSphString & sError )
  function IsTimeZoneSet (line 170) | bool IsTimeZoneSet()
  function CSphString (line 176) | CSphString GetTimeZoneName()
  function CSphString (line 185) | CSphString GetLocalTimeZoneName()
  function ConvertTime (line 194) | cctz::civil_second ConvertTime ( time_t tTime )
  function ConvertTimeLocal (line 200) | cctz::civil_second ConvertTimeLocal ( time_t tTime )
  function ConvertTimeUTC (line 206) | cctz::civil_second ConvertTimeUTC ( time_t tTime )
  function time_t (line 212) | time_t ConvertTime ( const cctz::civil_second & tCS )
  function time_t (line 218) | time_t PackLocalTimeAsUTC ( time_t tTime )
  function GetWeekDay (line 231) | int GetWeekDay ( const cctz::civil_second & tTime, bool bSundayFirst )
  function GetYearDay (line 245) | int GetYearDay ( const cctz::civil_second & tTime )
  function GetQuarter (line 251) | int GetQuarter ( const cctz::civil_second & tTime )
  function FORCE_INLINE (line 257) | static FORCE_INLINE bool IsLeapYear ( int iYear )
  function IsLeapYear (line 263) | bool IsLeapYear ( const cctz::civil_second & tTime )
  function CalcNumYearDays (line 269) | int	CalcNumYearDays ( const cctz::civil_second & tTime )
  function CSphString (line 275) | CSphString FormatTime ( time_t tTime, const char * szFmt )
  function CalcYearMonth (line 282) | int CalcYearMonth ( const cctz::civil_second & tTime )
  function CalcYearMonthDay (line 288) | int CalcYearMonthDay ( const cctz::civil_second & tTime )
  function CalcYearWeek (line 294) | int CalcYearWeek ( const cctz::civil_second & tTime )
  function CalcDayNumber (line 311) | static int CalcDayNumber ( const cctz::civil_day & tTime )
  type WeekFlags_e (line 318) | enum WeekFlags_e : uint32_t
  function FixupWeekFlags (line 326) | static uint32_t FixupWeekFlags ( uint32_t uFlags )
  function CalcWeekNumber (line 336) | int CalcWeekNumber ( const cctz::civil_second & tTime, uint32_t uFlags )
  function ParseAsLocalTime (line 379) | bool ParseAsLocalTime ( const char * szFmt, const CSphString & sTime, ti...

FILE: src/datetime.h
  type class (line 18) | enum class

FILE: src/debug_cmds.cpp
  type DebugCmd (line 28) | namespace DebugCmd {
    type Traits_e (line 29) | enum Traits_e : BYTE
    type CmdNotice_t (line 38) | struct CmdNotice_t
  function SetShutdownToken (line 84) | void SetShutdownToken ( CSphString sToken ) noexcept
  function CSphString (line 90) | inline static CSphString strSHA1 ( const CSphString& sLine )
  function HandleMysqlOptimizeManual (line 95) | void HandleMysqlOptimizeManual ( RowBuffer_i & tOut, const DebugCmd::Deb...
  function HandleMysqlDropManual (line 123) | void HandleMysqlDropManual ( RowBuffer_i & tOut, const DebugCmd::DebugCo...
  function HandleMysqlCompress (line 148) | void HandleMysqlCompress ( RowBuffer_i & tOut, const DebugCmd::DebugComm...
  function HandleMysqlDedup (line 173) | void HandleMysqlDedup ( RowBuffer_i& tOut, const DebugCmd::DebugCommand_...
  function HandleMysqlSplit (line 199) | void HandleMysqlSplit ( RowBuffer_i & tOut, const DebugCmd::DebugCommand...
  function HandleMysqlDebugMeta (line 241) | void HandleMysqlDebugMeta ( RowBuffer_i & tOut, const DebugCmd::DebugCom...
  function HandleMysqlfiles (line 251) | void HandleMysqlfiles ( RowBuffer_i & tOut, const DebugCmd::DebugCommand...
  function HandleMysqlclose (line 281) | void HandleMysqlclose ( RowBuffer_i & tOut )
  function HandleShutdownCrash (line 289) | void HandleShutdownCrash ( RowBuffer_i & tOut, const CSphString & sPassw...
  function HandleProcDump (line 318) | void HandleProcDump ( RowBuffer_i & tOut )
  function HandleGdbStatus (line 332) | void HandleGdbStatus ( RowBuffer_i & tOut )
  function HandleSetGdb (line 348) | void HandleSetGdb ( RowBuffer_i & tOut, bool bParam )
  function HandleWait (line 370) | void HandleWait ( RowBuffer_i& tOutBuf, const DebugCmd::DebugCommand_t& ...
  function HandleWaitStatus (line 385) | void HandleWaitStatus ( RowBuffer_i& tOutBuf, const DebugCmd::DebugComma...
  function HandleTrace (line 406) | void HandleTrace ( RowBuffer_i& tOut, const DebugCmd::DebugCommand_t& tC...
  function HandleToken (line 427) | void HandleToken ( RowBuffer_i & tOut, const CSphString & sParam )
  function HandleCurl (line 435) | void HandleCurl ( RowBuffer_i & tOut, const CSphString & sParam )
  function HandlePause (line 444) | void HandlePause ( RowBuffer_i & tOut, const DebugCmd::DebugCommand_t & ...
  function HandleMallocStats (line 454) | void HandleMallocStats ( RowBuffer_i & tOut, const CSphString& sParam )
  function HandleMallocTrim (line 470) | void HandleMallocTrim ( RowBuffer_i & tOut )
  function HandleSleep (line 480) | void HandleSleep ( RowBuffer_i & tOut, int64_t iParam )
  function HandleTasks (line 493) | void HandleTasks ( RowBuffer_i & tOut )
  function HandleSched (line 518) | void HandleSched ( RowBuffer_i & tOut )
  function HandleMysqlDebug (line 533) | void HandleMysqlDebug ( RowBuffer_i &tOut, const DebugCmd::DebugCommand_...

FILE: src/detail/coroutine_impl.h
  function namespace (line 15) | namespace Threads
  function ScopedScheduler_c (line 210) | inline ScopedScheduler_c::ScopedScheduler_c ( SchedRole pRole )
  function ScopedScheduler_c (line 220) | inline ScopedScheduler_c::ScopedScheduler_c ( RoledSchedulerSharedPtr_t&...
  function ScopedScheduler_c (line 230) | inline ScopedScheduler_c::~ScopedScheduler_c()
  function namespace (line 237) | namespace Coro

FILE: src/detail/expmeter.h
  function class (line 17) | class ExpMeter_c

FILE: src/detail/indexlink.cpp
  function WriteLinkFile (line 21) | bool WriteLinkFile ( const CSphString& sBase, const CSphString& sNewPath...
  function CSphString (line 51) | CSphString RedirectToRealPath ( CSphString sBase )

FILE: src/dict/aggregate_hit.h
  type AggregateHit_t (line 19) | struct AggregateHit_t
  function SphWordID_t (line 22) | SphWordID_t m_uWordID { 0 }
  function BYTE (line 23) | const BYTE* m_szKeyword {
Copy disabled (too large) Download .json
Condensed preview — 3231 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (52,753K chars).
[
  {
    "path": ".clt/checkers/contains",
    "chars": 1285,
    "preview": "#!/usr/bin/env bash\n\n# Check if two arguments are provided\nif [ $# -ne 2 ]; then\n\techo \"Usage: $0 <patterns_file> <targe"
  },
  {
    "path": ".clt/checkers/ignore",
    "chars": 149,
    "preview": "#!/usr/bin/env bash\n\n# Check if two arguments are provided\nif [ $# -ne 2 ]; then\n\techo \"Usage: $0 <patterns_file> <targe"
  },
  {
    "path": ".clt/checkers/something",
    "chars": 635,
    "preview": "#!/usr/bin/env bash\n\n# Check if two arguments are provided\nif [ $# -ne 2 ]; then\n\techo \"Usage: $0 <patterns_file> <targe"
  },
  {
    "path": ".clt/patterns",
    "chars": 398,
    "preview": "LLDATETIME [A-Za-z]{3}\\s+[0-9]{1,2}\\s[0-9]{2}:[0-9]{2}\nLLFILESIZE \\s*[0-9]+(K|B|G)?\nCOMMITDATE [a-z0-9]{7,9}@[0-9]{6,8}\n"
  },
  {
    "path": ".cursorignore",
    "chars": 156,
    "preview": "# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)\n\nbuild*\n.translation-cache*\nmanual/chi"
  },
  {
    "path": ".editorconfig",
    "chars": 304,
    "preview": "root = true\n\n[*]\nindent_style = tab\nindent_size = 4\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\nins"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 50,
    "preview": "custom: [\"https://www.paypal.me/manticoresearch\"]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 2248,
    "preview": "name: 🐞 Bug Report\ndescription: Submit a bug report for Manticore Search\nlabels: bug\nbody:\n  - type: markdown\n    attrib"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 547,
    "preview": "contact_links:\n  - name: \"Manticore Search quick start guide\"\n    about: \"Get help with setting up and using Manticore S"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "chars": 1428,
    "preview": "name: 🌟 Feature Request\ndescription: Submit a proposal for a new Manticore Search feature or enhancement\nbody:\n  - type:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/support_request.yml",
    "chars": 1720,
    "preview": "name: ❓ Support Request\ndescription: Need help with Manticore Search? Submit your questions here!\nbody:\n  - type: checkb"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 295,
    "preview": "<!--\nBefore submitting a pull request, please ensure you've read the Contributing guide located at CONTRIBUTING.md in th"
  },
  {
    "path": ".github/stale.yml",
    "chars": 884,
    "preview": "# Number of days of inactivity before an issue becomes stale\ndaysUntilStale: 30\n# Number of days of inactivity before a "
  },
  {
    "path": ".github/workflows/build_template.yml",
    "chars": 4259,
    "preview": "name: Build Template\n\non:\n  workflow_call:\n    inputs:\n      arch:\n        required: false\n        type: string\n        "
  },
  {
    "path": ".github/workflows/check_docs.yml",
    "chars": 5992,
    "preview": "name: 📖 Check docs\nrun-name: 📖 Check docs ${{ github.sha }}\n\non:\n  workflow_call:\n  workflow_run:\n    workflows: \n      "
  },
  {
    "path": ".github/workflows/checklist_validator.yml",
    "chars": 338,
    "preview": "name: 📝 Checklist Validator\nrun-name: 📝 Checklist Validator for issue ${{ github.event.issue.number }}\n\non:\n  issues:\n  "
  },
  {
    "path": ".github/workflows/clt_nightly.yml",
    "chars": 10521,
    "preview": "name: Nightly tests\nrun-name: 🌙 Nightly tests ${{ github.sha }}\n\non:\n  schedule:\n    - cron: '00 20 * * *'\n  pull_reques"
  },
  {
    "path": ".github/workflows/clt_tests.yml",
    "chars": 4523,
    "preview": "name: CLT tests \non:\n  workflow_call:\n    inputs:\n      docker_image:\n        required: true\n        type: string\n      "
  },
  {
    "path": ".github/workflows/coverage.yml",
    "chars": 1547,
    "preview": "name: 📊 Code coverage test\nrun-name: 📊 Code coverage test ${{ github.sha }}\n\non:\n #workflow_run:\n #  workflows: [ 🔬 Test"
  },
  {
    "path": ".github/workflows/deploy_docs.yml",
    "chars": 3352,
    "preview": "name: 📖 Deploy docs\nrun-name: 📖 Deploy docs ${{ github.sha }}\n\non:\n  push:\n    paths:\n      - 'manual/**'\n    branches:\n"
  },
  {
    "path": ".github/workflows/nightly_dumps.yml",
    "chars": 2635,
    "preview": "name: Nightly testing of supported versions of mysqldump and elasticdump\nrun-name: 🌙 Nightly tests of mysqldump and elas"
  },
  {
    "path": ".github/workflows/nightly_fuzzer.yml",
    "chars": 6519,
    "preview": "name: Nightly Fuzz Testing\nrun-name: 🌙 Nightly Fuzz Testing ${{ github.sha }}\n\non:\n  # 📅 Run this workflow every day at "
  },
  {
    "path": ".github/workflows/nightly_integration.yml",
    "chars": 7835,
    "preview": "name: Nightly integration tests\nrun-name: 🌙 Nightly integration tests ${{ github.sha }}\n\non:\n  schedule:\n    - cron: '00"
  },
  {
    "path": ".github/workflows/nightly_memleaks.yml",
    "chars": 1455,
    "preview": "name: Nightly valgrind checks\nrun-name: 🌙 Nightly valgrind checks ${{ github.sha }}\n\non:\n  schedule:\n    - cron: '00 20 "
  },
  {
    "path": ".github/workflows/pack_publish.yml",
    "chars": 25044,
    "preview": "name: 📦 Pack and publish\nrun-name: 📦 Pack and publish ${{ github.sha }}\n\n#on: workflow_call\non:\n  workflow_run:\n    work"
  },
  {
    "path": ".github/workflows/pack_publish_galera.yml",
    "chars": 7137,
    "preview": "name: 📦 Pack and publish Galera\nrun-name: 📦 Pack and publish Galera ${{ github.sha }}\n\n# See galera_packaging/README.md "
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 28306,
    "preview": "name: 🔬 Test\nrun-name: 🔬 Test ${{ github.sha }}\n\n#on: workflow_call\n\non:\n  push:\n    branches:\n      - master\n      - ma"
  },
  {
    "path": ".github/workflows/test_template.yml",
    "chars": 6240,
    "preview": "name: Test Template\n\non:\n  workflow_call:\n    inputs:\n      WITH_COVERAGE:\n        required: false\n        type: number\n"
  },
  {
    "path": ".github/workflows/trigger_docs_check.yml",
    "chars": 996,
    "preview": "name: 📖 Trigger doc check\nrun-name: 📖 Trigger doc check ${{ github.sha }}\n\n# We use this intermediate workflow to workar"
  },
  {
    "path": ".github/workflows/win_test_template.yml",
    "chars": 6003,
    "preview": "name: Windows Test Template\n\non:\n  workflow_call:\n    inputs:\n      CTEST_START:\n        required: false\n        type: n"
  },
  {
    "path": ".gitignore",
    "chars": 1396,
    "preview": "# /\n/Makefile\n/config.status\n/config.log\n/sphinx-min.conf.dist\n/sphinx.conf.dist\n/bin\n/junk\n/*.suo\n/*.ncb\n/*.sdf\n/*.open"
  },
  {
    "path": ".gitlab-ci.yml",
    "chars": 7288,
    "preview": "workflow:\n  rules:\n    - if: $CI_MERGE_REQUEST_ID\n    - if: $CI_COMMIT_TAG\n    - if: $CI_COMMIT_BRANCH == \"master\"\n    -"
  },
  {
    "path": ".gitmodules",
    "chars": 103,
    "preview": "[submodule \"translator\"]\n\tpath = translator\n\turl = https://github.com/manticoresoftware/translator.git\n"
  },
  {
    "path": ".noindex",
    "chars": 24,
    "preview": "/test/**\n/translator/**\n"
  },
  {
    "path": ".translation-cache/Changelog.md.json",
    "chars": 2862950,
    "preview": "{\n    \"5167106ef1f5f57ff52f6e69322d9f7f584b44f21770d796e9df1fe8cdd6dfb6\": {\n        \"original\": \"**Starting with version"
  },
  {
    "path": ".translation-cache/Connecting_to_the_server/HTTP.md.json",
    "chars": 156509,
    "preview": "{\n    \"b86fe0533dac8fed37811e51a77cd3761796c57127a9b1cff6350e51299402e0\": {\n        \"original\": \"While the `/sql` endpoi"
  },
  {
    "path": ".translation-cache/Connecting_to_the_server/MySQL_protocol.md.json",
    "chars": 409043,
    "preview": "{\n    \"a9ea9b4a6c6e18fdf779a62f34c83aafef5b5ca48df43683c1ec41f80c2decf4\": {\n        \"original\": \"# MySQL protocol\\n\\nMan"
  },
  {
    "path": ".translation-cache/Connecting_to_the_server.md.json",
    "chars": 12226,
    "preview": "{\n    \"fce431e476653b223fd96e578f84420034ed8de62b8e0b3ac12be07b4feb49cf\": {\n        \"original\": \"# Connecting to the ser"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Adding_a_new_node.md.json",
    "chars": 3731,
    "preview": "{\n    \"c4fd76417f38c6ced30f4b7edbc6868d26ebaf38015f5a9b514efc18503ee20f\": {\n        \"original\": \"# Adding a new node\\n\\n"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Creating_a_cluster.md.json",
    "chars": 6931,
    "preview": "{\n    \"9adcc36abec9262bb8a023fd8f6750052adb687f02551b1c2e98bc8d0a3f1c2c\": {\n        \"original\": \"# Manticore cluster\\n\\n"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Remote_nodes/Load_balancing.md.json",
    "chars": 47401,
    "preview": "{\n    \"a81401714279f51352c3d72bc76842740c17d965f801d225afde5f086051be82\": {\n        \"original\": \"# Load balancing\\n\\nLoa"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Remote_nodes/Mirroring.md.json",
    "chars": 20746,
    "preview": "{\n    \"e2a7390ff873f557c1f0de13c03e88d9855990b600e0d05cd12186b8cab3b9b0\": {\n        \"original\": \"# Mirroring\\n\\n[Agent]("
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Remote_nodes.md.json",
    "chars": 20444,
    "preview": "{\n    \"9067d572995f740235bc4357aa577e9ceb7a5670457346c6b0898a51e0a5d9e5\": {\n        \"original\": \"# Adding a distributed "
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Adding_and_removing_a_table_from_a_replication_cluster.md.json",
    "chars": 29281,
    "preview": "{\n    \"36ab19f5920c99507af3487cd60146533a30cf5a9b97d2fa8a7404ae32c13b07\": {\n        \"original\": \"# Adding and removing a"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Cluster_recovery.md.json",
    "chars": 66143,
    "preview": "{\n    \"c9bc3f7d09185f7836e850afefb58c5287e23970ad1a4a22ab86f30221f2e4af\": {\n        \"original\": \"Split-brain can cause t"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Creating_a_replication_cluster.md.json",
    "chars": 21452,
    "preview": "{\n    \"f04f31662c193a6d41ca05f2188383f31494e6b97e5180d2c5ef71c6b83975ae\": {\n        \"original\": \"# Creating a replicatio"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Deleting_a_replication_cluster.md.json",
    "chars": 11876,
    "preview": "{\n    \"218658ac95b6cf34d68c2e34ed911e303e5a21f985017b8be4517362cad91877\": {\n        \"original\": \"# Deleting a replicatio"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Joining_a_replication_cluster.md.json",
    "chars": 60231,
    "preview": "{\n    \"d82df0e36a9e072c125dc5b0179e6d26e8c9c1ec85cd5e2328b3cc9456a2844f\": {\n        \"original\": \"# Joining a replication"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Managing_replication_nodes.md.json",
    "chars": 32248,
    "preview": "{\n    \"3b93d259f0eaef9e6a80ca931d5288137ff85b44bae31bc0356d08de4014e89a\": {\n        \"original\": \"# Managing replication "
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Replication_cluster_status.md.json",
    "chars": 40643,
    "preview": "{\n    \"3fdc058a1fdaa2b3d129709cf32524da8f94a839fbec247799881b2953cbc2b2\": {\n        \"original\": \"# Replication cluster s"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Restarting_a_cluster.md.json",
    "chars": 12328,
    "preview": "{\n    \"551df5adc8e9412f2b994dfe73da2988a4ede0ebed8b8f75ffac836e0e82e1ce\": {\n        \"original\": \"# Restarting a cluster\\"
  },
  {
    "path": ".translation-cache/Creating_a_cluster/Setting_up_replication/Setting_up_replication.md.json",
    "chars": 120072,
    "preview": "{\n    \"c410e4e16168cf71bf714969d982e29b1825f0ab05d0b8a5904f5c9149d7e46b\": {\n        \"original\": \"<!-- request Python-asy"
  },
  {
    "path": ".translation-cache/Creating_a_table/Creating_a_distributed_table/Creating_a_distributed_table.md.json",
    "chars": 20451,
    "preview": "{\n    \"033500901d28a799a9599ceae5287a1f2c086c2d9874ec6871f37324f7607349\": {\n        \"original\": \"# Creating a distribute"
  },
  {
    "path": ".translation-cache/Creating_a_table/Creating_a_distributed_table/Creating_a_local_distributed_table.md.json",
    "chars": 13752,
    "preview": "{\n    \"8a34d9ccb3b411136212727cb2f92ed2333e5eecfd278546787123a05624a9a1\": {\n        \"original\": \"# Creating a local dist"
  },
  {
    "path": ".translation-cache/Creating_a_table/Creating_a_distributed_table/Remote_tables.md.json",
    "chars": 129176,
    "preview": "{\n    \"ae84fce951e4fb63805f4cfa9b3cc69d38f73bfd8d731fb02ed0c0c3315d3443\": {\n        \"original\": \"The `listen_tfo` option"
  },
  {
    "path": ".translation-cache/Creating_a_table/Data_types.md.json",
    "chars": 1057204,
    "preview": "{\n    \"79c245e8372abc19754ba09018a1bbb778992cf02251579bbf84ca8fd221c778\": {\n        \"original\": \"CODE_BLOCK_225\\n<!-- in"
  },
  {
    "path": ".translation-cache/Creating_a_table/Local_tables/Percolate_table.md.json",
    "chars": 48856,
    "preview": "{\n    \"c0d97d681aee7aa8efbfebfe91172a0535f7531f31d11871adca271eeadde903\": {\n        \"original\": \"# Percolate table\\n\\n<!"
  },
  {
    "path": ".translation-cache/Creating_a_table/Local_tables/Plain_and_real-time_table_settings.md.json",
    "chars": 788500,
    "preview": "{\n    \"48b87c47101c3c4df21c5d037b21410df5dba8b362f7a1ea7f4c1ef829e51022\": {\n        \"original\": \"### Natural language pr"
  },
  {
    "path": ".translation-cache/Creating_a_table/Local_tables/Plain_table.md.json",
    "chars": 44398,
    "preview": "{\n    \"73d0ddf87781fc56d26829c0964d2a367de8f7cabe6f41e3e3524715752962c6\": {\n        \"original\": \"| Extension | Descripti"
  },
  {
    "path": ".translation-cache/Creating_a_table/Local_tables/Real-time_table.md.json",
    "chars": 77477,
    "preview": "{\n    \"ac79b103eb9c7561a297b08c0122b4ebffc0747271df78a7c2a5a603a7428241\": {\n        \"original\": \"### \\u26d4 What you can"
  },
  {
    "path": ".translation-cache/Creating_a_table/Local_tables/Template_table.md.json",
    "chars": 13088,
    "preview": "{\n    \"26a5767a0a98e1badb8941d3fb19ac3ef81b76314ed919dd2c99795101542319\": {\n        \"original\": \"# Template table\\n\\n<!-"
  },
  {
    "path": ".translation-cache/Creating_a_table/Local_tables.md.json",
    "chars": 25014,
    "preview": "{\n    \"a6176ae45440cf2032193f04a9844b11516c5a9df4b45fb4dca53a32e6bb0c53\": {\n        \"original\": \"# Creating a local tabl"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Advanced_HTML_tokenization.md.json",
    "chars": 120102,
    "preview": "{\n    \"b3b91ff33f11f2922f4eef63b0ad8d3b245b5df7c078e8e60c26bc92dce82228\": {\n        \"original\": \"* Question marks (?) an"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Data_tokenization.md.json",
    "chars": 27390,
    "preview": "{\n    \"9af0fb9cb042dc34e426a6f9efc61865ee8b3227f7c0e1a832e4eef27e2249a2\": {\n        \"original\": \"# Data tokenization\\n\\n"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Exceptions.md.json",
    "chars": 70106,
    "preview": "{\n    \"4dd6d5e92bf656af9c1dc9ba53fe06f80b7abb1d1a58c741c770e179899171e6\": {\n        \"original\": \"# Exceptions\\n\\nExcepti"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Ignoring_stop-words.md.json",
    "chars": 161343,
    "preview": "{\n    \"28dd00dfa4b76123bf90bda4858ab50b47d688a665009cccb5346ac548c10bc4\": {\n        \"original\": \"CODE_BLOCK_31\\n\\n<!-- e"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Languages_with_continuous_scripts.md.json",
    "chars": 45861,
    "preview": "{\n    \"04175168ceef92ee0998ba0f567f9f0553a059f29de3f8183f2aab8a6a3b9dd5\": {\n        \"original\": \"# Chinese, Japanese and"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md.json",
    "chars": 637552,
    "preview": "{\n    \"c3036e96a7ab544d7c683d336680186f8cbe51306ca19cbb9864cc1523c488aa\": {\n        \"original\": \"<!-- example regexp_fil"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Morphology.md.json",
    "chars": 116047,
    "preview": "{\n    \"c1aae9046eeffaa4eb4faaa2e1301ff553e7c1ab80b226c67f6d8324a7f44e38\": {\n        \"original\": \"<!-- intro -->\\n##### J"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Supported_languages.md.json",
    "chars": 70225,
    "preview": "{\n    \"cd07b30f03ec0dabe1bc2160fe551c85881475c2a30728d5133c87cac77d469b\": {\n        \"original\": \"# Supported languages\\n"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Wildcard_searching_settings.md.json",
    "chars": 170308,
    "preview": "{\n    \"68ac21cd312b85cf1b63c7d365e917d5a805e3876b3073ead1155c21f7f6ae6b\": {\n        \"original\": \"CODE_BLOCK_41\\n\\nMaximu"
  },
  {
    "path": ".translation-cache/Creating_a_table/NLP_and_tokenization/Wordforms.md.json",
    "chars": 138215,
    "preview": "{\n    \"10195ea64441de7f5f4cecae3c2249e510ba4f9d1267dbb76f13dd671c0d9ade\": {\n        \"original\": \"# Word forms\\n\\nWord fo"
  },
  {
    "path": ".translation-cache/Creating_a_table.md.json",
    "chars": 15964,
    "preview": "{\n    \"eb2618b18b066b4eec4ae36f82c7d0f988db2c32a9939481afcff4cf610b7db5\": {\n        \"original\": \"# Creating a table\\n<!-"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Adding_data_to_tables/Attaching_one_table_to_another.md.json",
    "chars": 56759,
    "preview": "{\n    \"44ce0bf7c49c06addba38de9ae9d1d1502b86123eb2cd4089bfb73b9472a4281\": {\n        \"original\": \"# Attaching one table t"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Adding_data_to_tables/Importing_table.md.json",
    "chars": 14370,
    "preview": "{\n    \"9bd1127a58c8ee92192052639fb36b3f91630e8ca379f7775cea5741934a3ed2\": {\n        \"original\": \"# Importing table\\n\\nIf"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Adding_data_to_tables/Killlist_in_plain_tables.md.json",
    "chars": 68209,
    "preview": "{\n    \"9e68edf7298ab2962f56477d27f98057bfddbccc1c1516db71c55c5a797824e8\": {\n        \"original\": \"# Killlist in plain tab"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Adding_data_to_tables/Merging_tables.md.json",
    "chars": 18738,
    "preview": "{\n    \"a6f7803a328fbb4ad4d7298afe6a9f0e8c363ef240eb069ec2c8c0d63c66471c\": {\n        \"original\": \"# Merging tables\\n\\nMer"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_CSV,TSV.md.json",
    "chars": 59263,
    "preview": "{\n    \"6cbc41d5756e39f53526db37b7e500f9f7f7efd7c4adc64a0b78faa65b557a64\": {\n        \"original\": \"# Fetching from TSV,CSV"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_XML_streams.md.json",
    "chars": 53833,
    "preview": "{\n    \"5cfdee1b401a14980cb92459c311fa2c8b3e2df20abd132932b222e5430b79a4\": {\n        \"original\": \"Under certain occasions"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Database_connection.md.json",
    "chars": 69006,
    "preview": "{\n    \"eb59c94ad91199efe04baa8dbeaf40b5af87e418903af28ada08f1e8b3697b54\": {\n        \"original\": \"# Database connection\\n"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Execution_of_fetch_queries.md.json",
    "chars": 39703,
    "preview": "{\n    \"ba4f93265520944908afb753ae38c3a79d3a34c48715ab9e49838c464944ce48\": {\n        \"original\": \"# Execution of fetch qu"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Introduction.md.json",
    "chars": 7203,
    "preview": "{\n    \"13a2bba92c25c6720b7f0ece131a61d611f5d1fa217bc6e44c3515175069a05e\": {\n        \"original\": \"# Introduction\\n\\nManti"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Processing_fetched_data.md.json",
    "chars": 140344,
    "preview": "{\n    \"43317a8cfe21e08ae4ccd128a9ff1f1b05813648b9c66aa0541862107db5cc33\": {\n        \"original\": \"**Joined fields** let y"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Ranged_queries.md.json",
    "chars": 33995,
    "preview": "{\n    \"982d9916e1f91d91c7e9f89c251c479519322e01b09d7d327d088398d463ab4b\": {\n        \"original\": \"# Ranged queries\\n\\n\\nM"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Main_delta.md.json",
    "chars": 41480,
    "preview": "{\n    \"03b51fc9d36b793e19d7c7bfb4258b70c27ab2a1b28857347f35ddb55f341667\": {\n        \"original\": \"# Main+delta schema\\n\\n"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Plain_tables_creation.md.json",
    "chars": 203069,
    "preview": "{\n    \"d885bd4f02b49acc8aafbdf1099151500ca6aa7401b24268f3a7475114e1452f\": {\n        \"original\": \"Plain table building RA"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages/Rotating_a_table.md.json",
    "chars": 55605,
    "preview": "{\n    \"99aa2083f2efb5e3256fa83ec588139f131026a40b06228dda7f9e4c91c5c1ad\": {\n        \"original\": \"With seamless rotate en"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_data_from_external_storages.md.json",
    "chars": 4810,
    "preview": "{\n    \"8635c34a0f6413b5cf65a686e28f12c7938bbd0574acb5cee167f7091d951e7d\": {\n        \"original\": \"# Adding data from exte"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_documents_to_a_table/Adding_documents_to_a_real-time_table.md.json",
    "chars": 219519,
    "preview": "{\n    \"2772d1b50109310d3361b0e95e7695c0c26a5d78b364995d90a76a1ca86b5cdc\": {\n        \"original\": \"The `/bulk` endpoint su"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Adding_documents_to_a_table/Adding_rules_to_a_percolate_table.md.json",
    "chars": 56479,
    "preview": "{\n    \"7c064fce6e47d03e10c71923fb4e226dbb0fc2d9cf2109cc0ad1251de4659eef\": {\n        \"original\": \"# Adding rules to a per"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Data_creation_and_modification.md.json",
    "chars": 6191,
    "preview": "{\n    \"dbb71472e229d8f9a70f713a07022ae0b37cb88a8697718cfcc8ab5d0adb1158\": {\n        \"original\": \"# Data creation and mod"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Deleting_documents.md.json",
    "chars": 96621,
    "preview": "{\n    \"7a8844b7f3299bbb67c48d26b45f78606493a733915686f1f4036afa2262ccfd\": {\n        \"original\": \"<!-- response C# -->\\nC"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Transactions.md.json",
    "chars": 63615,
    "preview": "{\n    \"99b03c1208f7f255cea104ab74824c2de75039d0aae69e8748b0bc299995a49c\": {\n        \"original\": \"# Transactions\\n\\nManti"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Updating_documents/REPLACE.md.json",
    "chars": 102153,
    "preview": "{\n    \"b41e5e1557d493ccae739e7e8bfa8cd9866f892368d578648d7b4920ce189407\": {\n        \"original\": \"# REPLACE\\n\\n<!-- examp"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Updating_documents/REPLACE_vs_UPDATE.md.json",
    "chars": 12794,
    "preview": "{\n    \"860024ba47e1ce8bc3e51be4ff07a228da904fc514a513d0e42e7c74fcacdc73\": {\n        \"original\": \"# REPLACE vs UPDATE\\n\\n"
  },
  {
    "path": ".translation-cache/Data_creation_and_modification/Updating_documents/UPDATE.md.json",
    "chars": 217043,
    "preview": "{\n    \"2e09996588808cfd0998e093ea97ff256b3d8da924bb4c694756d46330b59b3a\": {\n        \"original\": \"<!-- response Python-as"
  },
  {
    "path": ".translation-cache/Deleting_a_table.md.json",
    "chars": 18723,
    "preview": "{\n    \"e2f4f0b2bee857082bf6df296404e5979331aa34c614ad0660aa476fc29a63ba\": {\n        \"original\": \"# Deleting a table\\n\\n<"
  },
  {
    "path": ".translation-cache/Emptying_a_table.md.json",
    "chars": 24849,
    "preview": "{\n    \"96d1fde17437626f4417f1ab993e1c7ac87cf1e40e3b3ab98c046d5e86645cce\": {\n        \"original\": \"# Emptying a table\\n\\n<"
  },
  {
    "path": ".translation-cache/Extensions/FEDERATED.md.json",
    "chars": 44353,
    "preview": "{\n    \"07b35c46eeeb8143a7fa584cdace3d6f79eb7f70502cf6f5b247206e3285ddfa\": {\n        \"original\": \"# FEDERATED\\n\\nWith the"
  },
  {
    "path": ".translation-cache/Extensions/SphinxSE.md.json",
    "chars": 168474,
    "preview": "{\n    \"a78ddc0790c67673fdd07963ba1e61c6b977cfee8ae091185a3352e7b0f8aa29\": {\n        \"original\": \"The binary providing th"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/Listing_plugins.md.json",
    "chars": 20147,
    "preview": "{\n    \"3114a7266739b143c5768b4d6323f2a91cb3b900b7ea1765e6ec10b795b941b2\": {\n        \"original\": \"# Listing plugins\\n\\n##"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/Plugins/Creating_a_plugin.md.json",
    "chars": 10424,
    "preview": "{\n    \"15495903f69954825c8479c4d2dbdc9efc3c70376750661cd6cd6bd17c8f936f\": {\n        \"original\": \"# System plugins\\n## CR"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/Plugins/Deleting_a_plugin.md.json",
    "chars": 7929,
    "preview": "{\n    \"20d640bdea675bfc5fb15eb9fdaa680be2af27c039a688a941d230b3b255edf0\": {\n        \"original\": \"# DELETE PLUGIN\\n\\nCODE"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/Plugins/Enabling_and_disabling_buddy_plugins.md.json",
    "chars": 11663,
    "preview": "{\n    \"7f8a2f6eb23ac68de5e274be5f3338a9e4bbc27be0679d56ea862eb7cabd7ab5\": {\n        \"original\": \"# Enabling and disablin"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/Plugins/Ranker_plugins.md.json",
    "chars": 14201,
    "preview": "{\n    \"e8de0b6e4164bd47ceaa53d01d86b230200fc316443b1a2d42cdbdbee5dab774\": {\n        \"original\": \"# Ranker plugins\\n\\nRan"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/Plugins/Reloading_plugins.md.json",
    "chars": 13048,
    "preview": "{\n    \"33044f916762118eb6eecdfa1e13c6add6bce15e88cc41e743a2ff5fe45dc18c\": {\n        \"original\": \"# RELOADING PLUGINS\\n\\n"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/Plugins/Token_filter_plugins.md.json",
    "chars": 33383,
    "preview": "{\n    \"74d06504d4a202b759ebe74cc4c70889bc88aa81d93721828ad17972dea84e7e\": {\n        \"original\": \"# Token filter plugins\\"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/UDF/Creating_a_function.md.json",
    "chars": 4510,
    "preview": "{\n    \"4c362687ad8fdcb57fd1c13d4196d88746aae45fa4147d210e61523567f666d6\": {\n        \"original\": \"# CREATE FUNCTION\\n\\nCO"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/UDF/Deleting_a_function.md.json",
    "chars": 3944,
    "preview": "{\n    \"fbcf9d777df6b627ff9aa503c5dc8f4abedf9500bc8b94528327b239f58eb0b0\": {\n        \"original\": \"# DROP FUNCTION\\n\\nCODE"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/UDF.md.json",
    "chars": 114664,
    "preview": "{\n    \"e001d0d1c6b82e206d64a36fb046848302766ee9cfc02508b1639342c0cceed3\": {\n        \"original\": \"CODE_BLOCK_3\\n\\nNote ho"
  },
  {
    "path": ".translation-cache/Extensions/UDFs_and_Plugins/UDFs_and_Plugins.md.json",
    "chars": 89379,
    "preview": "{\n    \"92c56c5c23909e24226739eade4381637a9845a60ac9c57e38a28dc4c726c392\": {\n        \"original\": \"# UDFs and Plugins\\n\\nM"
  },
  {
    "path": ".translation-cache/Functions/Arrays_and_conditions_functions.md.json",
    "chars": 133895,
    "preview": "{\n    \"70357d80d4bfe96f1a82c02deb9c6314751a3107b2ddbc6a1a2702d5b638b5c6\": {\n        \"original\": \"### HISTOGRAM()\\n<!-- e"
  },
  {
    "path": ".translation-cache/Functions/Date_and_time_functions.md.json",
    "chars": 67289,
    "preview": "{\n    \"bba1117036395bd9e4b7239a91f4c2e6abfc1535d5417c25886872962a4af2f6\": {\n        \"original\": \"This example formats th"
  },
  {
    "path": ".translation-cache/Functions/Geo_spatial_functions.md.json",
    "chars": 17030,
    "preview": "{\n    \"7e883c3abc9fe2459f06f2a8cf0a5bff30b8a7f919a15c4d56311affd1da355f\": {\n        \"original\": \"# Geo spatial functions"
  },
  {
    "path": ".translation-cache/Functions/Mathematical_functions.md.json",
    "chars": 19435,
    "preview": "{\n    \"00af94506a9b63c1e6d779f7cc74a6482893c762e5a2a91057fd598077ef5e9b\": {\n        \"original\": \"# Mathematical function"
  },
  {
    "path": ".translation-cache/Functions/Other_functions.md.json",
    "chars": 9064,
    "preview": "{\n    \"f5781c248161814de211c5f4d031419d324ff169b43bdd5d46f023e29111182e\": {\n        \"original\": \"# Other functions\\n\\n##"
  },
  {
    "path": ".translation-cache/Functions/Searching_and_ranking_functions.md.json",
    "chars": 98600,
    "preview": "{\n    \"ddc1869a663b46438ff09266014c222b4b40e6ff7a142451c523567911556489\": {\n        \"original\": \"Table functions are a m"
  },
  {
    "path": ".translation-cache/Functions/String_functions.md.json",
    "chars": 34111,
    "preview": "{\n    \"d1544881a9c73a69b9960969d7aecb81ba50add6c043c0700c5f331ce36f862e\": {\n        \"original\": \"# String functions\\n\\n#"
  },
  {
    "path": ".translation-cache/Functions/Type_casting_functions.md.json",
    "chars": 20494,
    "preview": "{\n    \"0b9ece452c075fe528bde7a659b2483b47b295b4d33dbbeb7fabe8c585a74786\": {\n        \"original\": \"# Type Casting Function"
  },
  {
    "path": ".translation-cache/Functions.md.json",
    "chars": 624,
    "preview": "{\n    \"163fe55349c1afb398192965de498c86c98d679105299bb418122da48c31b863\": {\n        \"original\": \"# Functions\\n<!-- proof"
  },
  {
    "path": ".translation-cache/Installation/Compiling_from_sources.md.json",
    "chars": 390102,
    "preview": "{\n    \"5f725256eb8c8f7ae18cab0f5a03cf4da9ce3f7cd58320b506c5464cbf3c4f6a\": {\n        \"original\": \"You can also configure "
  },
  {
    "path": ".translation-cache/Installation/Debian_and_Ubuntu.md.json",
    "chars": 27922,
    "preview": "{\n    \"5409c76f6f7c416d1d2b06f12000e16e5faadf1d7d268eb76d4bd923cd178c67\": {\n        \"original\": \"# Installing Manticore "
  },
  {
    "path": ".translation-cache/Installation/Docker.md.json",
    "chars": 3706,
    "preview": "{\n    \"ef7e0ac80bb96d7deebf2c9dacb54066b82a286297bfeead53464eff8bf20168\": {\n        \"original\": \"# Installing Manticore "
  },
  {
    "path": ".translation-cache/Installation/Installation.md.json",
    "chars": 22412,
    "preview": "{\n    \"fcdbe7450ab62275dc46de101cd72e65dcd029222e13e30eec7e75256ee2443c\": {\n        \"original\": \"# Installation\\n\\n<!-- "
  },
  {
    "path": ".translation-cache/Installation/MacOS.md.json",
    "chars": 7807,
    "preview": "{\n    \"64bec79f1d66fc784971f10026f13fc8df36dc95056fec3c65fa160b183ff537\": {\n        \"original\": \"# Installing Manticore "
  },
  {
    "path": ".translation-cache/Installation/Manticore_Buddy.md.json",
    "chars": 9592,
    "preview": "{\n    \"d69f35acf5c6c39a0ab82714cdab3f4573c6c6be128191b48c836acff4034c19\": {\n        \"original\": \"# Manticore Buddy\\n\\nMa"
  },
  {
    "path": ".translation-cache/Installation/Migration_from_Sphinx.md.json",
    "chars": 101052,
    "preview": "{\n    \"febaf5dee92b5198ce01c95ac69149abd95b11afb3e306e21fa9f233e1df470c\": {\n        \"original\": \"* `--config <file>` (`-"
  },
  {
    "path": ".translation-cache/Installation/RHEL_and_Centos.md.json",
    "chars": 29231,
    "preview": "{\n    \"a83e88eb0a11b677f1fa1ffb2ae97e37b7ad86d604bd16e9c990e9aca3ebce6d\": {\n        \"original\": \"# Installing Manticore "
  },
  {
    "path": ".translation-cache/Installation/Windows.md.json",
    "chars": 19443,
    "preview": "{\n    \"b3a627b7d6d2722c9b3652711cef062fc52706050dc45abc64ad801b75a68697\": {\n        \"original\": \"# Installing Manticore "
  },
  {
    "path": ".translation-cache/Integration/Apache_Superset.md.json",
    "chars": 29543,
    "preview": "{\n    \"8912119de308c761f4eecd3d9468f1ec46e54c8c25c4dbe34e5ef52c4d8dc0e7\": {\n        \"original\": \"# Integration with Apac"
  },
  {
    "path": ".translation-cache/Integration/DBeaver.md.json",
    "chars": 53839,
    "preview": "{\n    \"1954b7fa81bc7fb09403201430186d63fec5b67657baf69a3c35b7a08adfa8fa\": {\n        \"original\": \"# Integration with DBea"
  },
  {
    "path": ".translation-cache/Integration/Filebeat.md.json",
    "chars": 58707,
    "preview": "{\n    \"2eb051735c68badaf960d71b74cecbefa195bd6640571b4e2b7fec3a2b517d93\": {\n        \"original\": \"# Integration with File"
  },
  {
    "path": ".translation-cache/Integration/Fluentbit.md.json",
    "chars": 17755,
    "preview": "{\n    \"09bcc544321aa64e31021b213e69f0ef6460bf389a332f9773d0fcd11772bf9e\": {\n        \"original\": \"# Integration with Flue"
  },
  {
    "path": ".translation-cache/Integration/Grafana.md.json",
    "chars": 234100,
    "preview": "{\n    \"24c8596b27788d8e35566cc96db15027f737a4ae527cdf4992a27d335a381b0a\": {\n        \"original\": \"# Integration with Graf"
  },
  {
    "path": ".translation-cache/Integration/Kafka.md.json",
    "chars": 109475,
    "preview": "{\n    \"922eb3d7aa6cb7ce2efe34be92363a7d504aa08b0a2ba10e9a512f92d79f8571\": {\n        \"original\": \"<!-- intro -->\\n\\n#####"
  },
  {
    "path": ".translation-cache/Integration/Kibana.md.json",
    "chars": 18449,
    "preview": "{\n    \"1f63a904cc5d1f4e93e349a0b8ce0b76dfe9ef4a41b3fb583fd08d243abd5c64\": {\n        \"original\": \"# Integration of Mantic"
  },
  {
    "path": ".translation-cache/Integration/Logstash.md.json",
    "chars": 44348,
    "preview": "{\n    \"d5b4750b1fedc8b16a7eaf718cf27910ec9ec67a6ec6fd1ab9040bdaf38121a3\": {\n        \"original\": \"# Integration with Logs"
  },
  {
    "path": ".translation-cache/Integration/Vectordev.md.json",
    "chars": 17873,
    "preview": "{\n    \"67f4d584fda4a75a49932b298ec02809bc54f16e86ac60ae195f9e3428e79489\": {\n        \"original\": \"# Integration with Vect"
  },
  {
    "path": ".translation-cache/Introduction.md.json",
    "chars": 126239,
    "preview": "{\n    \"1bd0fc7e77a27745f0e8bf25d2470afe8aa3e7612a893f8ec3d150bb1ca208cb\": {\n        \"original\": \"# Introduction\\n\\nManti"
  },
  {
    "path": ".translation-cache/Listing_tables.md.json",
    "chars": 76977,
    "preview": "{\n    \"1c5bcfee0e0cddc896980aab4328d9e95479c9ee17aa3bd6e6a24c4b9b471181\": {\n        \"original\": \"# Listing tables\\n\\nMan"
  },
  {
    "path": ".translation-cache/Logging/Binary_logging.md.json",
    "chars": 78878,
    "preview": "{\n    \"4cad62f91891022358c0f57587ca507a045c08328d216582e02511cb951f7d62\": {\n        \"original\": \"* `0` - Data is written"
  },
  {
    "path": ".translation-cache/Logging/Docker_logging.md.json",
    "chars": 4219,
    "preview": "{\n    \"ad7822c0dcf70f6175db7c0f214f19ed0798961811e78dd031366fd7a10e8a28\": {\n        \"original\": \"# Docker logging\\n\\nWhe"
  },
  {
    "path": ".translation-cache/Logging/Query_logging.md.json",
    "chars": 166017,
    "preview": "{\n    \"285a2a6b38f28f3dae3f9d6112f041d932f5361261e4f41f9219ed72b64a2f26\": {\n        \"original\": \"# Query logging\\n\\n<!--"
  },
  {
    "path": ".translation-cache/Logging/Rotating_query_and_server_logs.md.json",
    "chars": 6018,
    "preview": "{\n    \"62622bdc2b9459863105b15e6b41b51a5b9da2bd08c71851bb68084b9a31b12c\": {\n        \"original\": \"# Rotating query and se"
  },
  {
    "path": ".translation-cache/Logging/Server_logging.md.json",
    "chars": 11138,
    "preview": "{\n    \"696518548074a3070a166b59a3e91aa55befccd499c3f0f7b6c3b53a97cf767b\": {\n        \"original\": \"# Server logging\\n\\nBy "
  },
  {
    "path": ".translation-cache/Miscellaneous_tools.md.json",
    "chars": 102969,
    "preview": "{\n    \"d818a67ff93d523c824ea9760d38a26f3a80e14b174d705399d4047268e4926d\": {\n        \"original\": \"This command prevents t"
  },
  {
    "path": ".translation-cache/Node_info_and_management/KILL.md.json",
    "chars": 2018,
    "preview": "{\n    \"a391fc213f66af0786a34d6a8b410c5e4b8dad930e9814b9b32112de1929d66d\": {\n        \"original\": \"# KILL\\n\\n<!-- example "
  },
  {
    "path": ".translation-cache/Node_info_and_management/Node_status.md.json",
    "chars": 235651,
    "preview": "{\n    \"bccecbaee7dc96d4df0a3cdb5eacc663eea888a271140606133292ced09d969a\": {\n        \"original\": \"<!-- intro -->\\n##### R"
  },
  {
    "path": ".translation-cache/Node_info_and_management/Profiling/Query_plan.md.json",
    "chars": 68317,
    "preview": "{\n    \"1e3364b15842da2c8fb49922375cb2a25329ed6490dd161f08669e11f3e0b343\": {\n        \"original\": \"# Query plan\\n\\n<!-- ex"
  },
  {
    "path": ".translation-cache/Node_info_and_management/Profiling/Query_profile.md.json",
    "chars": 28987,
    "preview": "{\n    \"a26ca37214b01581d93ad4b32f0a8e5169ff22acf24f3a6046574de8715e30af\": {\n        \"original\": \"# Query profile\\n\\n<!--"
  },
  {
    "path": ".translation-cache/Node_info_and_management/SHOW_META.md.json",
    "chars": 106286,
    "preview": "{\n    \"4046ddca9d2092a610281ff23839005fe9b33df8608115582f1aeaca01978f90\": {\n        \"original\": \"CODE_BLOCK_16\\n\\n<!-- e"
  },
  {
    "path": ".translation-cache/Node_info_and_management/SHOW_QUERIES.md.json",
    "chars": 14712,
    "preview": "{\n    \"1c145e7cd75f9d4b765f6479c9798d72b0c883b6c6fc491bf4d17dd0243f5e5a\": {\n        \"original\": \"# SHOW QUERIES\\n\\n<!-- "
  },
  {
    "path": ".translation-cache/Node_info_and_management/SHOW_THREADS.md.json",
    "chars": 59237,
    "preview": "{\n    \"7e7cd58599631e8654f2f5528391b0b9fa1629b3d7303d92f5d41e525e7354af\": {\n        \"original\": \"# SHOW THREADS\\n\\nCODE_"
  },
  {
    "path": ".translation-cache/Node_info_and_management/SHOW_VARIABLES.md.json",
    "chars": 3159,
    "preview": "{\n    \"20a45f5f6844e6dc178468aa3cad486227a252c7799f52197c3fb3b5d9347559\": {\n        \"original\": \"# SHOW VARIABLES\\n\\nCOD"
  },
  {
    "path": ".translation-cache/Node_info_and_management/SHOW_VERSION.md.json",
    "chars": 6528,
    "preview": "{\n    \"421e68af2576559c550d8d9cc665d0d4aafee5298a8f9cd5ff40d427f53d5efc\": {\n        \"original\": \"# SHOW VERSION\\n\\n<!-- "
  },
  {
    "path": ".translation-cache/Node_info_and_management/SHOW_WARNINGS.md.json",
    "chars": 3014,
    "preview": "{\n    \"bee6431fd613cbd80ad5949d08960a6d734952829e888db8061730df3e47f45a\": {\n        \"original\": \"# SHOW WARNINGS\\n\\n`SHO"
  },
  {
    "path": ".translation-cache/Node_info_and_management/Table_settings_and_status/SHOW_TABLE_INDEXES.md.json",
    "chars": 18187,
    "preview": "{\n    \"f51a8063910891f2fa848420fab60e458da0b1e15e8f83df9b730056f05bb9d9\": {\n        \"original\": \"# SHOW TABLE INDEXES\\n\\"
  },
  {
    "path": ".translation-cache/Node_info_and_management/Table_settings_and_status/SHOW_TABLE_SETTINGS.md.json",
    "chars": 7391,
    "preview": "{\n    \"25b22243190a3fb41e2db1dccac8a84e2054d204884c6e5108104d23723e1fdb\": {\n        \"original\": \"# SHOW TABLE SETTINGS\\n"
  },
  {
    "path": ".translation-cache/Node_info_and_management/Table_settings_and_status/SHOW_TABLE_STATUS.md.json",
    "chars": 144569,
    "preview": "{\n    \"193a0aad6eb01f428abce2c401762417385aa870347702845c4e49f47931c9c9\": {\n        \"original\": \"CODE_BLOCK_11\\n<!-- res"
  },
  {
    "path": ".translation-cache/Openapi.md.json",
    "chars": 3388,
    "preview": "{\n    \"509637c4c6bfe87148be35e898e58fbba9972be60c266f4230689c573ee5453a\": {\n        \"original\": \"# OpenAPI specification"
  },
  {
    "path": ".translation-cache/Quick_start_guide.md.json",
    "chars": 200394,
    "preview": "{\n    \"072055cae726b8730dbf87acdc5adc7cf0d2f1d26900366444e1bbd7fca29e43\": {\n        \"original\": \"CODE_BLOCK_83\\nindexApi"
  },
  {
    "path": ".translation-cache/README.md.json",
    "chars": 291388,
    "preview": "{\n    \"ec242006d2d04b828dd6091745e7a0772cbe3c262933f21326f97167776b5f7d\": {\n        \"original\": \"* [\\u261d Introduction]"
  },
  {
    "path": ".translation-cache/Read_this_first.md.json",
    "chars": 45699,
    "preview": "{\n    \"79494e3e639b83a15983fd2a4e20bca56d5b3fa56672a6d1b448e1a5fac1f63a\": {\n        \"original\": \"# Read this first\\n\\n##"
  },
  {
    "path": ".translation-cache/References.md.json",
    "chars": 732820,
    "preview": "{\n    \"a521286595ee15c683edf09a1d08af7ce8154a0c7e2ce8d4b2c63a7566bb3b88\": {\n        \"original\": \"## Table Converter for "
  },
  {
    "path": ".translation-cache/Reporting_bugs.md.json",
    "chars": 121410,
    "preview": "{\n    \"ceece3476a943b7562d144fce37b7e85fc67a44db36e633670b7ae2a089a6545\": {\n        \"original\": \"2. Find symbols in `/us"
  },
  {
    "path": ".translation-cache/Searching/Autocomplete.md.json",
    "chars": 83757,
    "preview": "{\n    \"7ed396dff53c3b45a104375a399808d030f8a59fe4308d78fdb842165cd61dad\": {\n        \"original\": \"There is an [article ab"
  },
  {
    "path": ".translation-cache/Searching/Collations.md.json",
    "chars": 29456,
    "preview": "{\n    \"d518a6683de7295364461052f2fa57fd26166f489984a680cad15f4331de1219\": {\n        \"original\": \"# Collations\\n\\nCollati"
  },
  {
    "path": ".translation-cache/Searching/Cost_based_optimizer.md.json",
    "chars": 43695,
    "preview": "{\n    \"5d214ec701657c47f459029b0795af71fb882ee8ab0e44041ad4544751ec02a0\": {\n        \"original\": \"# Cost-based optimizer\\"
  },
  {
    "path": ".translation-cache/Searching/Distributed_searching.md.json",
    "chars": 16721,
    "preview": "{\n    \"312ae3c53db1444a5f8866065ddf00d861d2da0d9398296dfd80891f287f4c49\": {\n        \"original\": \"# Distributed searching"
  },
  {
    "path": ".translation-cache/Searching/Expressions.md.json",
    "chars": 75069,
    "preview": "{\n    \"bdcce5f2284998873dcf25ffc0e3490f99e2e3ecc9aaf1c5cd21a3b1873cbb20\": {\n        \"original\": \"# Expressions in search"
  },
  {
    "path": ".translation-cache/Searching/Faceted_search.md.json",
    "chars": 259700,
    "preview": "{\n    \"ca6aeb574ad3ee0b7f3c918c5963c6297614f2049867634c74ed08d155a19717\": {\n        \"original\": \"<!-- request Go -->\\nCO"
  },
  {
    "path": ".translation-cache/Searching/Filters.md.json",
    "chars": 104725,
    "preview": "{\n    \"580284ef707ba4edd5bfd49e30e5a205d36d2f3a206397c9e41ccced0f229b7c\": {\n        \"original\": \"##### distance\\nSpecifi"
  },
  {
    "path": ".translation-cache/Searching/Full_text_matching/Basic_usage.md.json",
    "chars": 82230,
    "preview": "{\n    \"15b49bdace952eca2396d07210dc6a746259528c9a0e776374fd5404b65d1e8b\": {\n        \"original\": \"# MATCH\\n\\nThe `MATCH` "
  },
  {
    "path": ".translation-cache/Searching/Full_text_matching/Boolean_optimization.md.json",
    "chars": 13042,
    "preview": "{\n    \"9f049f8e6fa6526b67823387cea5eedb392ac2970cc7be00f3336a921a34b0e5\": {\n        \"original\": \"# Boolean optimization\\"
  },
  {
    "path": ".translation-cache/Searching/Full_text_matching/Escaping.md.json",
    "chars": 122306,
    "preview": "{\n    \"d90923570f1be3602c6b9b6b22bd125841e0f063d6703fc5c6f34101700ed25f\": {\n        \"original\": \"# Escaping characters i"
  },
  {
    "path": ".translation-cache/Searching/Full_text_matching/Operators.md.json",
    "chars": 148994,
    "preview": "{\n    \"d5d72dc016b6e0a3925a1c2882a32dfe9dcd1983a54f2ac058b568c347de8992\": {\n        \"original\": \"### Exact form modifier"
  },
  {
    "path": ".translation-cache/Searching/Full_text_matching/Profiling.md.json",
    "chars": 122095,
    "preview": "{\n    \"9e0e711658e8de62070ed15be111c4d5fb995e8e07e66d2ffdfbc219b6aba55d\": {\n        \"original\": \"* The values of documen"
  },
  {
    "path": ".translation-cache/Searching/Geo_search.md.json",
    "chars": 53419,
    "preview": "{\n    \"0cf606d4ca85c28d126f4171213d86251caa03a36b5cd8222307205ff9f47b64\": {\n        \"original\": \"# Geo search\\n\\nOne of "
  },
  {
    "path": ".translation-cache/Searching/Grouping.md.json",
    "chars": 185949,
    "preview": "{\n    \"9d0581025d6e4717fc60b90c6f63a6a9c766b6c69c2bbdc985e47be6c95fcf1b\": {\n        \"original\": \"<!-- example group7 -->"
  },
  {
    "path": ".translation-cache/Searching/Highlighting.md.json",
    "chars": 370509,
    "preview": "{\n    \"1520675530074c38d189c1cf870a12831b96e0a3353910a1a9a0debdf38d47f4\": {\n        \"original\": \"Most options are the sa"
  },
  {
    "path": ".translation-cache/Searching/Intro.md.json",
    "chars": 6542,
    "preview": "{\n    \"58c779ce556c5f8a3d1fdfb06b5ba51f3909e74c76f68547decebec4441a8b68\": {\n        \"original\": \"# Introduction into sea"
  },
  {
    "path": ".translation-cache/Searching/Joining.md.json",
    "chars": 184370,
    "preview": "{\n    \"8fc084640b280cc9907f63d2a4e273224825e3df812cda05f24e398eaec87b3a\": {\n        \"original\": \"This query demonstrates"
  },
  {
    "path": ".translation-cache/Searching/KNN.md.json",
    "chars": 296929,
    "preview": "{\n    \"9ad13e5775d7395c200a2a2d57b5fa6282e0e7088c2913115b3fe309b0a2c8f0\": {\n        \"original\": \"**Automatic brute-force"
  },
  {
    "path": ".translation-cache/Searching/Multi-queries.md.json",
    "chars": 130188,
    "preview": "{\n    \"b7a7236af6ab6fbced71cdb02c5d7baba8f9ce843e924bcf9e5cad5334a51007\": {\n        \"original\": \"# Multi-queries\\n\\nMult"
  },
  {
    "path": ".translation-cache/Searching/Options.md.json",
    "chars": 315777,
    "preview": "{\n    \"1605614aafa5d2f36701204327fd1e20f80e18d79ceab69bdf7e49c149cec972\": {\n        \"original\": \"You can also enforce a "
  },
  {
    "path": ".translation-cache/Searching/Pagination.md.json",
    "chars": 76739,
    "preview": "{\n    \"bddce38f65c9435e7de05d5bf398eaa66cdfb438baa539da8c74231dffc375d4\": {\n        \"original\": \"# Pagination of search "
  },
  {
    "path": ".translation-cache/Searching/Percolate_query.md.json",
    "chars": 267152,
    "preview": "{\n    \"6341d990473a73a50895c5a12e23da471b4a339ee8d5efb9615c45e5b14f43e1\": {\n        \"original\": \"CODE_BLOCK_23\\n<!-- int"
  },
  {
    "path": ".translation-cache/Searching/Query_cache.md.json",
    "chars": 26962,
    "preview": "{\n    \"7b9c73363ea4807a652bbda1b51c2770d0976c1a7ef9336c81f84667b4665803\": {\n        \"original\": \"# Query cache\\n\\nQuery "
  },
  {
    "path": ".translation-cache/Searching/Search_results.md.json",
    "chars": 42311,
    "preview": "{\n    \"d8bf7549ea62aa14ea417020b48bc9710d75f21991db8b84e8a8a8bd500c48ae\": {\n        \"original\": \"# Search results\\n\\n## "
  },
  {
    "path": ".translation-cache/Searching/Sorting_and_ranking.md.json",
    "chars": 287682,
    "preview": "{\n    \"8bedbcbb905cda6be68b0e4cd11f2cad3f511e610165f4192a4ed3745024e10f\": {\n        \"original\": \"Ranking (also known as "
  },
  {
    "path": ".translation-cache/Searching/Spell_correction.md.json",
    "chars": 226647,
    "preview": "{\n    \"c2c82bd97fd0ade0adc84bffd0c24e479e130fbd55c1c760a9379bdb6215bdda\": {\n        \"original\": \"* <a href=\\\"https://git"
  },
  {
    "path": ".translation-cache/Searching/Sub-selects.md.json",
    "chars": 14473,
    "preview": "{\n    \"d1f0a8bedc0db44ab6a61e3ca31f30c1e22872100783bbf19f4606ec5bcdf6c0\": {\n        \"original\": \"# Sub-selects\\n\\nMantic"
  },
  {
    "path": ".translation-cache/Securing_and_compacting_a_table/Backup_and_restore.md.json",
    "chars": 217879,
    "preview": "{\n    \"9bee27530968dd923432631728a138dd2f9653dc35f3f5bb3d3bec5bedb81da4\": {\n        \"original\": \"To start a restore job,"
  },
  {
    "path": ".translation-cache/Securing_and_compacting_a_table/Compacting_a_table.md.json",
    "chars": 66224,
    "preview": "{\n    \"4ddb6ab23dc922ad2dea2927cd0618fcfe4df2f13d8052ef0790404fa164bd94\": {\n        \"original\": \"# Compacting a Table\\n\\"
  },
  {
    "path": ".translation-cache/Securing_and_compacting_a_table/Flushing_RAM_chunk_to_a_new_disk_chunk.md.json",
    "chars": 5005,
    "preview": "{\n    \"ffa60196fb7f4a1d3020e12c9a40dc295b0ceef5e0eccf21fb52d4b5be2e9b58\": {\n        \"original\": \"# Flushing RAM chunk to"
  },
  {
    "path": ".translation-cache/Securing_and_compacting_a_table/Flushing_RAM_chunk_to_disk.md.json",
    "chars": 5150,
    "preview": "{\n    \"609140d558fcd3daa50b1e4b21eca06feb23dace5377615a07d8159702362ff0\": {\n        \"original\": \"# Flushing RAM chunk to"
  },
  {
    "path": ".translation-cache/Securing_and_compacting_a_table/Flushing_attributes.md.json",
    "chars": 3426,
    "preview": "{\n    \"8efd3ce1cddc11fe783219b17da2d9376ddbdc096091fc02f59325ab3c2c2d92\": {\n        \"original\": \"# FLUSH ATTRIBUTES\\n\\nC"
  },
  {
    "path": ".translation-cache/Securing_and_compacting_a_table/Flushing_hostnames.md.json",
    "chars": 2757,
    "preview": "{\n    \"9edc16d44ede32bd55892b8df4ee45b863c13923d420b7c166ba38a7635b58cc\": {\n        \"original\": \"# FLUSH HOSTNAMES\\n\\nCO"
  },
  {
    "path": ".translation-cache/Securing_and_compacting_a_table/Freezing_and_locking_a_table.md.json",
    "chars": 67671,
    "preview": "{\n    \"bdc89c6d2aed520485bf22b014bf74f987c3f6686081f635705988262c4f06dc\": {\n        \"original\": \"When a session requests"
  },
  {
    "path": ".translation-cache/Securing_and_compacting_a_table/Isolation_during_flushing_and_merging.md.json",
    "chars": 12255,
    "preview": "{\n    \"9887e2bb59bf2f0c45586a2e2938b249467c7e8cf0c863d12767b774a187508a\": {\n        \"original\": \"# Isolation during flus"
  }
]

// ... and 3031 more files (download for full content)

About this extraction

This page contains the full source code of the manticoresoftware/manticoresearch GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3231 files (46.3 MB), approximately 12.3M tokens, and a symbol index with 10991 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!