github编辑

• 更新日志

Changelog

Version x.y.z (dev)

Major issues

Minor changes

Bug fixes

manticore-extra v1.1.20

Released: Oct 7 2024

Bug fixes

  • Issue #64arrow-up-right Resolved an issue where the unattended-upgrades utility, which automatically installs package updates on Debian-based systems, would incorrectly mark several Manticore packages, including manticore-galera, manticore-executor, and manticore-columnar-lib, for removal. This occurred due to dpkg mistakenly considering the virtual package manticore-extra as redundant. Changes were made to ensure unattended-upgrades no longer tries to remove essential Manticore components.

Version 6.3.6

Released: August 2nd 2024

Version 6.3.6 continues the 6.3 series and includes only bug fixes.

Bug fixes

  • Issue #2477arrow-up-right Fixed a crash introduced in version 6.3.4, which could occur when dealing with expressions and distributed or multiple tables.

  • Issue #2352arrow-up-right Fixed a daemon crash or internal error upon early exit caused by max_query_time when querying multiple indexes.

Version 6.3.4

Released: July 31st 2024

Version 6.3.4 continues the 6.3 series and includes only minor improvements and bug fixes.

Minor changes

Bug fixes

Version 6.3.2

Released: June 26th 2024

Version 6.3.2 continues the 6.3 series and includes several bug fixes, some of which were discovered after the release of 6.3.0.

Breaking changes

Bug fixes

Version 6.3.0

Released: May 23rd 2024

Major changes

Minor changes

Breaking changes and deprecations

  • ⚠️Issue #1436arrow-up-right Fixed an IDF calculation issue. local_df is now a default. Improved the master-agent search protocol (version updated). If you are running Manticore Search in a distributed environment with multiple instances, make sure to first upgrade the agents, then the masters.

  • ⚠️Issue #1572arrow-up-right Added replication of distributed tables and updated the replication protocol. If you are running a replication cluster, you need to:

    • First, cleanly stop all your nodes

    • Then, start the node that was stopped last with --new-cluster, using the tool manticore_new_cluster in Linux.

    • Read about restarting a cluster for more details.

  • ⚠️Issue #1763arrow-up-right HTTP API endpoint aliases /json/* have been deprecated.

  • ⚠️Issue #1982arrow-up-right Changed profile to plan in JSON, added query profiling for JSON.

  • ⚠️Commit e235arrow-up-right manticore-backup doesn't backup plugin_dir anymore.

  • ⚠️Issue #171arrow-up-right Migrated Buddy to Swoole to improve performance and stability. When switching to the new version, ensure all Manticore packages are updated.

  • ⚠️Issue #196arrow-up-right Merged all core plugins into Buddy and changed the core logic.

  • ⚠️Issue #2107arrow-up-right Treating document IDs as numbers in /search responses.

  • ⚠️Issue #38arrow-up-right Added Swoole, disabled ZTS, and removed the parallel extension.

Bug fixes

  • Issue #97arrow-up-right Set VIP HTTP port as default when available. Various improvements: improved versions check and streaming ZSTD decompression; added user prompts for version mismatches during restore; fixed incorrect prompting behavior for different versions on restore; enhanced decompression logic to read directly from the stream rather than into working memory; added --force flag

  • Commit 3b35arrow-up-right Added backup version display after Manticore search start to identify issues at this stage.

  • Commit ad2earrow-up-right Updated error message for failed connections to the daemon.

  • Commit ce5earrow-up-right Fixed issue with converting absolute root backup paths to relative and removed writeable check on restore to enable restoration from different paths.

  • Commit db7earrow-up-right Added sorting to the file iterator to ensure consistency across various situations.

  • Issue #106arrow-up-right Backup and restore of multiple configurations.

  • Issue #91arrow-up-right Added defattr to prevent unusual user permissions in files after installation on RHEL.

  • Issue #91arrow-up-right Added extra chown to ensure files default to the root user in Ubuntu.

Version 6.2.12

Released: August 23rd 2023

Version 6.2.12 continues the 6.2 series and addresses issues discovered after the release of 6.2.0.

Bugfixes

  • Issue #1351arrow-up-right "Manticore 6.2.0 doesn't start via systemctl on Centos 7": Modified TimeoutStartSec from infinity to 0 for better compatibility with Centos 7.

  • Issue #1364arrow-up-right "Crash after upgrading from 6.0.4 to 6.2.0": Added replay functionality for empty binlog files from older binlog versions.

  • PR #1334arrow-up-right "fix typo in searchdreplication.cpp": Corrected a typo in searchdreplication.cpp: beggining -> beginning.

  • Issue #1337arrow-up-right "Manticore 6.2.0 WARNING: conn (local)(12), sock=8088: bailing on failed MySQL header, AsyncNetInputBuffer_c::AppendData: error 11 (Resource temporarily unavailable) return -1": Lowered the verbosity level of the MySQL interface warning about the header to logdebugv.

  • Issue #1355arrow-up-right "join cluster hangs when node_address can't be resolved": Improved replication retry when certain nodes are unreachable, and their name resolution fails. This should resolve issues in Kubernetes and Docker nodes related to replication. Enhanced the error message for replication start failures and made updates to test model 376. Additionally, provided a clear error message for name resolution failures.

  • Issue #1361arrow-up-right "No lower case mapping for "Ø" in charset non_cjk": Adjusted the mapping for the 'Ø' character.

  • Issue #1365arrow-up-right "searchd leaves binlog.meta and binlog.001 after clean stop": Ensured that the last empty binlog file is removed properly.

  • Commit 0871arrow-up-right: Fixed the Thd_t build issue on Windows related to atomic copy restrictions.

  • Commit 1cc0arrow-up-right: Addressed an issue with FT CBO vs ColumnarScan.

  • Commit c6bfarrow-up-right: Made corrections to test 376 and added a substitution for the AF_INET error in the test.

  • Commit cbc3arrow-up-right: Resolved a deadlock issue during replication when updating blob attributes versus replacing documents. Also removed the rlock of the index during commit because it's already locked at a more basic level.

Minor changes

MCL

Version 6.2.0

Released: August 4th 2023

Major changes

  • The query optimizer has been enhanced to support full-text queries, significantly improving search efficiency and performance.

  • Integrations with:

  • We've started using GitHub workflowsarrow-up-right, making it simpler for contributors to utilize the same Continuous Integration (CI) process that the core team applies when preparing packages. All jobs can be run on GitHub-hosted runners, which facilitates seamless testing of changes in your fork of Manticore Search.

  • We've started using CLTarrow-up-right to test complex scenarios. For example, we're now able to ensure that a package built after a commit can be properly installed across all supported Linux operating systems. The Command Line Tester (CLT) provides a user-friendly way to record tests in an interactive mode and to effortlessly replay them.

  • Significant performance improvement in count distinct operation by employing a combination of hash tables and HyperLogLog.

  • Enabled multithreaded execution of queries containing secondary indexes, with the number of threads limited to the count of physical CPU cores. This should considerably improve the query execution speed.

  • pseudo_sharding has been adjusted to be limited to the number of free threads. This update considerably enhances the throughput performance.

  • Users now have the option to specify the default attribute storage engine via the configuration settings, providing better customization to match specific workload requirements.

  • Support for Manticore Columnar Library 2.2.0arrow-up-right with numerous bug fixes and improvements in Secondary indexes.

Minor changes

  • Buddy #153arrow-up-right: The /pqarrow-up-right HTTP endpoint now serves as an alias for the /json/pq HTTP endpoint.

  • Commit 0bf1arrow-up-right: We've ensured multi-byte compatibility for upper() and lower().

  • Commit 2bb9arrow-up-right: Instead of scanning the index for count(*) queries, a precalculated value is now returned.

  • Commit 3c84arrow-up-right: It's now possible to use SELECT for making arbitrary calculations and displaying @@sysvars. Unlike before, you are no longer limited to just one calculation. Therefore, queries like select user(), database(), @@version_comment, version(), 1+1 as a limit 10 will return all the columns. Note that the optional 'limit' will always be ignored.

  • Commit 6acaarrow-up-right: Implemented the CREATE DATABASE stub query.

  • Commit 9dc1arrow-up-right: When executing ALTER TABLE table REBUILD SECONDARY, secondary indexes are now always rebuilt, even if attributes weren't updated.

  • Commit 46edarrow-up-right: Sorters utilizing precalculated data are now identified before using CBO to avoid unnecessary CBO calculations.

  • Commit 102aarrow-up-right: Implementing mocked and utilizing of the full-text expression stack to prevent daemon crashes.

  • Commit 979farrow-up-right: A speedy code path has been added for match cloning code for matches that don't use string/mvas/json attributes.

  • Commit a073arrow-up-right: Added support for the SELECT DATABASE() command. However, it will always return Manticore. This addition is crucial for integrations with various MySQL tools.

  • Commit bc04arrow-up-right: Modified the response format of the /cli endpoint, and added the /cli_json endpoint to function as the previous /cli.

  • Commit d70barrow-up-right: The thread_stack can now be altered during runtime using the SET statement. Both session-local and daemon-wide variants are available. Current values can be accessed in the show variables output.

  • Commit d96earrow-up-right: Code has been integrated into CBO to more accurately estimate the complexity of executing filters over string attributes.

  • Commit e77darrow-up-right: The DocidIndex cost calculation has been improved, enhancing overall performance.

  • Commit f3aearrow-up-right: Load metrics, similar to 'uptime' on Linux, are now visible in the SHOW STATUS command.

  • Commit f3ccarrow-up-right: The field and attribute order for DESC and SHOW CREATE TABLE now match that of SELECT * FROM.

  • Commit f3d2arrow-up-right: Different internal parsers now provide their internal mnemonic code (e.g., P01) during various errors. This enhancement aids in identifying which parser caused an error and also obscures non-essential internal details.

  • Issue #271arrow-up-right "Sometimes CALL SUGGEST does not suggest a correction of a single letter typo": Improved SUGGEST/QSUGGEST behaviour for short words: added the option sentence to show the entire sentence

  • Issue #696arrow-up-right "Percolate index does not search properly by exact phrase query when stemming enabled": The percolate query has been modified to handle an exact term modifier, improving search functionality.

  • Issue #829arrow-up-right "DATE FORMATTING methods": added the date_format() select list expression, which exposes the strftime() function.

  • Issue #961arrow-up-right "Sorting buckets via HTTP JSON API": introduced an optional sort property for each bucket of aggregates in the HTTP interface.

  • Issue #1062arrow-up-right "Improve error logging of JSON insert api failure - "unsupported value type"": The /bulk endpoint reports information regarding the number of processed and non-processed strings (documents) in case of an error.

  • Issue #1070arrow-up-right "CBO hints don't support multiple attributes": Enabled index hints to handle multiple attributes.

  • Issue #1106arrow-up-right "Add tags to http search query": Tags have been added to HTTP PQ responsesarrow-up-right.

  • Issue #1301arrow-up-right "buddy should not create table in parallel": Resolved an issue that was causing failures from parallel CREATE TABLE operations. Now, only one CREATE TABLE operation can run at a time.

  • Issue #1303arrow-up-right "add support of @ to column names".

  • Issue #1316arrow-up-right "Queries on taxi dataset are slow with ps=1": The CBO logic has been refined, and the default histogram resolution has been set to 8k for better accuracy on attributes with randomly distributed values.

  • Issue #1317arrow-up-right "Fix CBO vs fulltext on hn dataset": Enhanced logic has been implemented for determining when to use bitmap iterator intersection and when to use a priority queue.

  • Issue #1318arrow-up-right "columnar: change iterator interface to single-call" : Columnar iterators now use a single Get call, replacing the previous two-step AdvanceTo + Get calls to retrieve a value.

  • Issue #1319arrow-up-right "Aggregate calc speedup (remove CheckReplaceEntry?)": The CheckReplaceEntry call was removed from the group sorter to expedite the calculation of aggregate functions.

  • Issue #1320arrow-up-right "create table read_buffer_docs/hits doesn't understand k/m/g syntax": The CREATE TABLE options read_buffer_docs and read_buffer_hits now support k/m/g syntax.

  • Language packs for English, German and Russian can now be effortlessly installed on Linux by executing the command apt/yum install manticore-language-packs. On macOS, use the command brew install manticoresoftware/tap/manticore-language-packs.

  • Field and attribute order is now consistent between SHOW CREATE TABLE and DESC operations.

  • If disk space is insufficient when executing INSERT queries, new INSERT queries will fail until enough disk space becomes available.

  • The UINT64() type conversion function has been added.

  • The /bulk endpoint now processes empty lines as a commit command. More info herearrow-up-right.

  • Warnings have been implemented for invalid index hints, providing more transparency and allowing for error mitigation.

  • When count(*) is used with a single filter, queries now leverage precalculated data from secondary indexes when available, substantially speeding up query times.

⚠️ Breaking changes

  • ⚠️ Tables created or modified in version 6.2.0 cannot be read by older versions.

  • ⚠️ Document IDs are now handled as unsigned 64-bit integers during indexing and INSERT operations.

  • ⚠️ The syntax for query optimizer hints has been updated. The new format is /*+ SecondaryIndex(uid) */. Please note that the old syntax is no longer supported.

  • ⚠️ Issue #1160arrow-up-right: The usage of @ in table names has been disallowed to prevent syntax conflicts.

  • ⚠️ String fields/attributes marked as indexed and attribute are now regarded as a single field during INSERT, DESC, and ALTER operations.

  • ⚠️ Issue #1057arrow-up-right: MCL libraries will no longer load on systems that don't support SSE 4.2.

  • ⚠️ Issue #1143arrow-up-right: agent_query_timeout was broken. Fixed and is now effective.

Bugfixes

  • Commit 2a6earrow-up-right "Crash on DROP TABLE": resolved a problem causing extended wait times to finish write operations (optimize, disk chunk save) on an RT table when executing a DROP TABLE statement. Added a warning to notify when a table directory is not empty after executing a DROP TABLE command.

  • Commit 2ebdarrow-up-right: Support for columnar attributes, which was missing in the code used for grouping by multiple attributes, has been added.

  • Commit 3be4arrow-up-right Resolved a crash issue potentially caused by disk space running out by properly handling write errors in binlog.

  • Commit 6adbarrow-up-right: A crash that occasionally occurred when using multiple columnar scan iterators (or secondary index iterators) in a query has been fixed.

  • Commit 6bd9arrow-up-right: Filters were not being removed when using sorters that use precalculated data. This issue has been fixed.

  • Commit 6d03arrow-up-right: The CBO code has been updated to provide better estimates for queries using filters over row-wise attributes executed in multiple threads.

  • Commit 6dd3arrow-up-right, Helm #56arrow-up-right "fatal crash dump in Kubernetes cluster": Fixed a defective bloom filter for the JSON root object; fixed daemon crash due to filtering by a JSON field.

  • Commit 6e1barrow-up-right Rectified daemon crash caused by invalid manticore.json config.

  • Commit 6fbcarrow-up-right Fixed the json range filter to support int64 values.

  • Commit 9c67arrow-up-right .sph files could be corrupted ALTER. Fixed.

  • Commit 77ccarrow-up-right: A shared key has been added for the replication of the replace statement to resolve a pre_commit error occurring when replace is replicated from multiple master nodes.

  • Commit 2884arrow-up-right resolved issues with bigint checks over functions like 'date_format()'.

  • Commit 9513arrow-up-right: Iterators are no longer displayed in SHOW META when sorters utilize precalculated data.

  • Commit a2a7arrow-up-right: The fulltext node stack size has been updated to prevent crashes on complex fulltext queries.

  • Commit a062arrow-up-right: A bug causing a crash during the replication of updates with JSON and string attributes has been resolved.

  • Commit b3e6arrow-up-right: The string builder has been updated to use 64-bit integers to avoid crashes when dealing with large data sets.

  • Commit c472arrow-up-right: Addressed a crash that was occurring with count distinct across multiple indexes.

  • Commit d073arrow-up-right: Fixed an issue where queries over disk chunks of RT indexes could be executed in multiple threads even if pseudo_sharding was disabled.

  • Commit d205arrow-up-right The set of values returned by the show index status command has been modified and now varies depending on the type of index in use.

  • Commit e9bcarrow-up-right Fixed an HTTP error when processing bulk requests and an issue where the error wasn't being returned to the client from the net loop.

  • Commit f77carrow-up-right use of an extended stack for PQ.

  • Commit fac2arrow-up-right Updated the export ranker output to align with packedfactors().

  • Commit ff87arrow-up-right: Fixed an issue with the string list in the filter of the SphinxQL query log.

  • Issue #589arrow-up-right "The charset definition seems to depend on the ordering of codes": Fixed incorrect charset mapping for duplicates.

  • Issue #811arrow-up-right "Mapping multiple words in word forms interferes phrase search with CJK punctuations between keywords": Fixed ngram token position within phrase query with wordforms.

  • Issue #834arrow-up-right "Equals sign in search query breaks request": Ensured the exact symbol can be escaped and fixed double exact expansion by the expand_keywords option.

  • Issue #864arrow-up-right "exceptions/stopwords conflict"

  • Issue #910arrow-up-right "Manticore crash when calling call snippets() with libstemmer_fr and index_exact_words": Resolved internal conflicts causing crashes when SNIPPETS() was called.

  • Issue #946arrow-up-right "Duplicate records during SELECT": Fixed the issue of duplicate documents in the result set for a query with not_terms_only_allowed option to RT index with killed documents.

  • Issue #967arrow-up-right "Using JSON arguments in UDF functions leads to a crash": Fixed a daemon crash when processing a search with pseudo-sharding enabled and UDF with JSON argument.

  • Issue #1050arrow-up-right "count(*) in FEDERATED": Fixed a daemon crash occurring with a query through a FEDERATED engine with aggregate.

  • Issue #1052arrow-up-right Fixed an issue where rt_attr_json column was incompatible with columnar storage.

  • Issue #1072arrow-up-right "* is removed from search query by ignore_chars": Fixed this issue so wildcards in a query aren't impacted by ignore_chars.

  • Issue #1075arrow-up-right "indextool --check fails if there's a distributed table": indextool is now compatible with instances having 'distributed' and 'template' indexes in the json config.

  • Issue #1081arrow-up-right "particular select on particular RT dataset leads to crash of searchd": Resolved daemon crash on a query with packedfactors and large internal buffer.

  • Issue #1095arrow-up-right "With not_terms_only_allowed deleted documents are ignored"

  • Issue #1099arrow-up-right "indextool --dumpdocids is not working": Restored functionality of the --dumpdocids command.

  • Issue #1100arrow-up-right "indextool --buildidf is not working": indextool now closes the file after finishing globalidf.

  • Issue #1104arrow-up-right "Count(*) is trying to be treated as schema set in remote tables": Resolved an issue where an error message was being sent by the daemon for queries into the distributed index when the agent returned an empty result set.

  • Issue #1109arrow-up-right "FLUSH ATTRIBUTES hangs with threads=1".

  • Issue #1126arrow-up-right "Lost connection to MySQL server during query - manticore 6.0.5": Crashes that were happening when using multiple filters over columnar attributes have been addressed.

  • Issue #1135arrow-up-right "JSON string filtering case sensitivity": Corrected the collation to function correctly for filters used in HTTP search requests.

  • Issue #1140arrow-up-right "Match in a wrong field": Fixed the damage related with morphology_skip_fields.

  • Issue #1155arrow-up-right "system remote commands via API should pass g_iMaxPacketSize": Made updates to bypass the max_packet_size check for replication commands between nodes. Additionally, the latest cluster error has been added to the status display.

  • Issue #1302arrow-up-right "tmp files left on failed optimize": Corrected an issue where temporary files were left behind after an error occurred during a merge or optimize process.

  • Issue #1304arrow-up-right "add env var for buddy start timeout": Added environment variable MANTICORE_BUDDY_TIMEOUT (default 3 seconds) to control the daemon's wait duration for a buddy message at startup.

  • Issue #1305arrow-up-right "Int overflow when saving PQ meta": Mitigated excessive memory consumption by daemon on saving large PQ index.

  • Issue #1306arrow-up-right "Can't recreate RT table after altering its external file": Rectified an error of alter with empty string for external files; fixed RT index external files left after altering external files.

  • Issue #1307arrow-up-right "SELECT statement sum(value) as value doesn't work properly": Fixed issue where select list expression with alias could hide index attribute; also fixed sum to count in int64 for integer.

  • Issue #1308arrow-up-right "Avoid binding to localhost in replication": Ensured replication doesn't bind to localhost for host names with multiple IPs.

  • Issue #1309arrow-up-right "reply to mysql client failed for data larger 16Mb": Fixed the issue of returning a SphinxQL packet larger than 16Mb to the client.

  • Issue #1310arrow-up-right "wrong reference in "paths to external files should be absolute": Corrected the display of the full path to external files in SHOW CREATE TABLE.

  • Issue #1311arrow-up-right "debug build crashes on long strings in snippets": Now, long strings (>255 characters) are permitted in the text targeted by the SNIPPET() function.

  • Issue #1312arrow-up-right "spurious crash on use-after-delete in kqueue polling (master-agent)": Fixed crashes when the master cannot connect to the agent on kqueue-driven systems (FreeBSD, MacOS, etc.).

  • Issue #1313arrow-up-right "too long connect to itself": When connecting from the master to agents on MacOS/BSD, a unified connect+query timeout is now used instead of just connect.

  • Issue #1314arrow-up-right "pq (json meta) with unreached embedded synonyms fails to load": Fixed the embedded synonyms flag in pq.

  • Issue #1315arrow-up-right "Allow some functions (sint, fibonacci, second, minute, hour, day, month, year, yearmonth, yearmonthday) to use implicitly promoted argument values".

  • Issue #1321arrow-up-right "Enable multithreaded SI in fullscan, but limit threads": Code has been implemented into CBO to better predict multithreaded performance of secondary indexes when they're utilized in a full-text query.

  • Issue #1322arrow-up-right "count(*) queries still slow after using precalc sorters": Iterators are no longer initiated when employing sorters that use precalculated data, circumventing detrimental performance effects.

  • Issue #1411arrow-up-right "query log in sphinxql does not preserve original queries for MVA's": Now, all()/any() is logged.

Version 6.0.4

Released: March 15 2023

New features

  • Improved integration with Logstash, Beats etc. including:

    • Support for Logstash versions 7.6 - 7.15, Filebeat versions 7.7 - 7.12

    • Auto-schema support.

    • Added handling of bulk requests in Elasticsearch-like format.

  • Buddy commit ce90arrow-up-right Log Buddy version on Manticore start.

Bugfixes

Version 6.0.2

Released: Feb 10 2023

Bugfixes

Version 6.0.0

Released: Feb 7 2023

Starting with this release, Manticore Search comes with Manticore Buddy, a sidecar daemon written in PHP that handles high-level functionality that does not require super low latency or high throughput. Manticore Buddy operates behind the scenes, and you may not even realize it is running. Although it is invisible to the end user, it was a significant challenge to make Manticore Buddy easily installable and compatible with the main C++-based daemon. This major change will allow the team to develop a wide range of new high-level features, such as shards orchestration, access control and authentication, and various integrations like mysqldump, DBeaver, Grafana mysql connector. For now it already handles SHOW QUERIES, BACKUP and Auto schema.

This release also includes more than 130 bug fixes and numerous features, many of which can be considered major.

Major Changes

Minor changes

  • Issue #822arrow-up-right SQL commands FREEZE/UNFREEZE to prepare a real-time/plain table for a backup.

  • Commit c470arrow-up-right New settings accurate_aggregation and max_matches_increase_threshold for controlled aggregation accuracy.

  • Issue #718arrow-up-right Support for signed negative 64-bit IDs. Note, you still can't use IDs > 2^63, but you can now use ids in the range of from -2^63 to 0.

  • As we recently added support for secondary indexes, things became confusing as "index" could refer to a secondary index, a full-text index, or a plain/real-time index. To reduce confusion, we are renaming the latter to "table". The following SQL/command line commands are affected by this change. Their old versions are deprecated, but still functional:

    • index <table name> => table <table name>,

    • searchd -i / --index => searchd -t / --table,

    • SHOW INDEX STATUS => SHOW TABLE STATUS,

    • SHOW INDEX SETTINGS => SHOW TABLE SETTINGS,

    • FLUSH RTINDEX => FLUSH TABLE,

    • OPTIMIZE INDEX => OPTIMIZE TABLE,

    • ATTACH TABLE plain TO RTINDEX rt => ATTACH TABLE plain TO TABLE rt,

    • RELOAD INDEX => RELOAD TABLE,

    • RELOAD INDEXES => RELOAD TABLES.

    We are not planning to make the old forms obsolete, but to ensure compatibility with the documentation, we recommend changing the names in your application. What will be changed in a future release is the "index" to "table" rename in the output of various SQL and JSON commands.

  • Queries with stateful UDFs are now forced to be executed in a single thread.

  • Issue #1011arrow-up-right Refactoring of all related to time scheduling as a prerequisite for parallel chunks merging.

  • ⚠️ BREAKING CHANGE: Columnar storage format has been changed. You need to rebuild those tables that have columnar attributes.

  • ⚠️ BREAKING CHANGE: Secondary indexes file format has been changed, so if you are using secondary indexes for searching and have searchd.secondary_indexes = 1 in your configuration file, be aware that the new Manticore version will skip loading the tables that have secondary indexes. It's recommended to:

    • Before you upgrade change searchd.secondary_indexes to 0 in the configuration file.

    • Run the instance. Manticore will load up the tables with a warning.

    • Run ALTER TABLE <table name> REBUILD SECONDARY for each index to rebuild secondary indexes.

    If you are running a replication cluster, you'll need to run ALTER TABLE <table name> REBUILD SECONDARY on all the nodes or follow this instruction with just change: run the ALTER .. REBUILD SECONDARY instead of the OPTIMIZE.

  • ⚠️ BREAKING CHANGE: The binlog version has been updated, so any binlogs from previous versions will not be replayed. It is important to ensure that Manticore Search is stopped cleanly during the upgrade process. This means that there should be no binlog files in /var/lib/manticore/binlog/ except for binlog.meta after stopping the previous instance.

  • Issue #849arrow-up-right SHOW SETTINGS: you can now see the settings from the configuration file from inside Manticore.

  • Issue #1007arrow-up-right SET GLOBAL CPUSTATS=1/0 turns on/off cpu time tracking; SHOW THREADS now doesn't show CPU statistics when the cpu time tracking is off.

  • Issue #1009arrow-up-right RT table RAM chunk segments can now be merged while the RAM chunk is being flushed.

  • Issue #1012arrow-up-right Added secondary index progress to the output of indexer.

  • Issue #1013arrow-up-right Previously a table record could be removed by Manticore from the index list if it couldn't start serving it on start. The new behaviour is to keep it in the list to try to load it on the next start.

  • indextool --docextract returns all the words and hits belonging to requested document.

  • Commit 2b29arrow-up-right Environment variable dump_corrupt_meta enables dumping a corrupted table meta data to log in case searchd can't load the index.

  • Commit c7a3arrow-up-right DEBUG META can show max_matches and pseudo sharding statistics.

  • Commit 6bcaarrow-up-right A better error instead of the confusing "Index header format is not json, will try it as binary...".

  • Commit bef3arrow-up-right Ukirainian lemmatizer path has been changed.

  • Commit 4ae7arrow-up-right Secondary indexes statistics has been added to SHOW META.

  • Commit 2e7carrow-up-right JSON interface can now be easily visualized using Swagger Editor https://manual.manticoresearch.com/Openapi#OpenAPI-specification.

  • ⚠️ BREAKING CHANGE: Replication protocol has been changed. If you are running a replication cluster, then when upgrading to Manticore 5 you need to:

    • stop all your nodes first cleanly

    • and then start the node which was stopped last with --new-cluster (run tool manticore_new_cluster in Linux).

    • read about restarting a cluster for more details.

  • Refactoring of Secondary indexes integration with Columnar storage.

  • Commit efe2arrow-up-right Manticore Columnar Library optimization which can lower response time by partial preliminary min/max evaluation.

  • Commit 2757arrow-up-right If a disk chunk merge is interrupted, the daemon now cleans up the MCL-related tmp files.

  • Commit e9c6arrow-up-right Columnar and secondary libraries versions are dumped to log on crash.

  • Commit f5e8arrow-up-right Added support for quick doclist rewinding to secondary indexes.

  • Commit 06dfarrow-up-right Queries like select attr, count(*) from plain_index (w/o filtering) are now faster in case you are using MCL.

  • Commit 0a76arrow-up-right @@autocommit in HandleMysqlSelectSysvar for compatibility with .net connector for mysql greater than 8.25

  • ⚠️ BREAKING CHANGE: MCL Issue #17arrow-up-right MCL: add SSE code to columnar scan. MCL now requires at least SSE4.2.

  • Commit 4d19arrow-up-right ⚠️ BREAKING CHANGE: Support for Debian Stretch and Ubuntu Xenial has been discontinued.

  • RHEL 9 support including Centos 9, Alma Linux 9 and Oracle Linux 9.

  • Issue #924arrow-up-right Debian Bookworm support.

  • Issue #636arrow-up-right Packaging: arm64 builds for Linuxes and MacOS.

  • PR #26arrow-up-right Multi-architecture (x86_64 / arm64) docker image.

  • It's now possible to install a specific version using APT.

  • Commit a6b8arrow-up-right Windows installer (previously we provided just an archive).

  • Switched to compiling using CLang 15.

  • ⚠️ BREAKING CHANGE: Custom Homebrew formulas including the formula for Manticore Columnar Library. To install Manticore, MCL and any other necessary components, use the following command brew install manticoresoftware/manticore/manticoresearch manticoresoftware/manticore/manticore-extra.

Bugfixes

Version 5.0.2

Released: May 30th 2022

Bugfixes

Version 5.0.0

Released: May 18th 2022

Major new features

  • 🔬 Support for Manticore Columnar Library 1.15.2arrow-up-right, which enables Secondary indexes beta version. Building secondary indexes is on by default for plain and real-time columnar and row-wise indexes (if Manticore Columnar Libraryarrow-up-right is in use), but to enable it for searching you need to set secondary_indexes = 1 either in your configuration file or using SET GLOBAL. The new functionality is supported in all operating systems except old Debian Stretch and Ubuntu Xenial.

  • Read-only mode: you can now specify listeners that process only read queries discarding any writes.

  • New /cli endpoint for running SQL queries over HTTP even easier.

  • Faster bulk INSERT/REPLACE/DELETE via JSON over HTTP: previously you could provide multiple write commands via HTTP JSON protocol, but they were processed one by one, now they are handled as a single transaction.

  • #720arrow-up-right Nested filters support in JSON protocol. Previously you couldn't code things like a=1 and (b=2 or c=3) in JSON: must (AND), should (OR) and must_not (NOT) worked only on the highest level. Now they can be nested.

  • Support for Chunked transfer encodingarrow-up-right in the HTTP protocol. You can now use chunked transfer in your application to transmit large batches with reduced resource consumption (since calculating Content-Length is unnecessary). On the server side, Manticore now always processes incoming HTTP data in a streaming manner, without waiting for the entire batch to be transferred as before, which:

    • reduces peak RAM usage, lowering the risk of OOM

    • decreases response time (our tests indicated an 11% reduction for processing a 100MB batch)

    • allows you to bypass max_packet_size and transfer batches much larger than the maximum allowed value of max_packet_size (128MB), for example, 1GB at a time.

  • #719arrow-up-right HTTP interface support of 100 Continue: now you can transfer large batches from curl (including curl libraries used by various programming languages) which by default does Expect: 100-continue and waits some time before actually sending the batch. Previously you had to add Expect: header, now it's not needed.

    Previously (note the response time):

    Now:

  • ⚠️ BREAKING CHANGE: Pseudo sharding is enabled by default. If you want to disable it make sure you add pseudo_sharding = 0 to section searchd of your Manticore configuration file.

  • Having at least one full-text field in a real-time/plain index is not mandatory anymore. You can now use Manticore even in cases not having anything to do with full-text search.

  • Fast fetching for attributes backed by Manticore Columnar Libraryarrow-up-right: queries like select * from <columnar table> are now much faster than previously, especially if there are many fields in the schema.

  • ⚠️ BREAKING CHANGE: Implicit cutoff. Manticore now doesn't spend time and resources processing data you don't need in the result set which will be returned. The downside is that it affects total_found in SHOW META and hits.total in JSON output. It is now only accurate in case you see total_relation: eq while total_relation: gte means the actual number of matching documents is greater than the total_found value you've got. To retain the previous behaviour you can use search option cutoff=0, which makes total_relation always eq.

  • ⚠️ BREAKING CHANGE: All full-text fields are now stored by default. You need to use stored_fields = (empty value) to make all fields non-stored (i.e. revert to the previous behaviour).

Minor changes

  • ⚠️ BREAKING CHANGE: Index meta file format change. Previously meta files (.meta, .sph) were in binary format, now it's just json. The new Manticore version will convert older indexes automatically, but:

    • you can get warning like WARNING: ... syntax error, unexpected TOK_IDENT

    • you won't be able to run the index with previous Manticore versions, make sure you have a backup

  • ⚠️ BREAKING CHANGE: Session state support with help of HTTP keep-alive. This makes HTTP stateful when the client supports it too. For example, using the new /cli endpoint and HTTP keep-alive (which is on by default in all browsers) you can call SHOW META after SELECT and it will work the same way it works via mysql. Note, previously Connection: keep-alive HTTP header was supported too, but it only caused reusing the same connection. Since this version it also makes the session stateful.

  • You can now specify columnar_attrs = * to define all your attributes as columnar in the plain mode which is useful in case the list is long.

  • Faster replication SST

  • ⚠️ BREAKING CHANGE: Replication protocol has been changed. If you are running a replication cluster, then when upgrading to Manticore 5 you need to:

    • stop all your nodes first cleanly

    • and then start the node which was stopped last with --new-cluster (run tool manticore_new_cluster in Linux).

    • read about restarting a cluster for more details.

  • Replication improvements:

    • Faster SST

    • Noise resistance which can help in case of unstable network between replication nodes

    • Improved logging

  • Security improvement: Manticore now listens on 127.0.0.1 instead of 0.0.0.0 in case no listen at all is specified in config. Even though in the default configuration which is shipped with Manticore Search the listen setting is specified and it's not typical to have a configuration with no listen at all, it's still possible. Previously Manticore would listen on 0.0.0.0 which is not secure, now it listens on 127.0.0.1 which is usually not exposed to the Internet.

  • Faster aggregation over columnar attributes.

  • Increased AVG() accuracy: previously Manticore used float internally for aggregations, now it uses double which increases the accuracy significantly.

  • Improved support for JDBC MySQL driver.

  • DEBUG malloc_stats support for jemallocarrow-up-right.

  • optimize_cutoff is now available as a per-table setting which can be set when you CREATE or ALTER a table.

  • ⚠️ BREAKING CHANGE: query_log_format is now sphinxql by default. If you are used to plain format you need to add query_log_format = plain to your configuration file.

  • Significant memory consumption improvements: Manticore consumes significantly less RAM now in case of long and intensive insert/replace/optimize workload in case stored fields are used.

  • shutdown_timeout default value was increased from 3 seconds to 60 seconds.

  • Commit ffd0arrow-up-right Support for Java mysql connector >= 6.0.3: in Java mysql connection 6.0.3arrow-up-right they changed the way they connect to mysql which broke compatibility with Manticore. The new behaviour is now supported.

  • Commit 1da6arrow-up-right disabled saving a new disk chunk on loading an index (e.g. on searchd startup).

  • Issue #746arrow-up-right Support for glibc >= 2.34.

  • Issue #784arrow-up-right count 'VIP' connections separately from usual (non-VIP). Previously VIP connections were counted towards the max_connections limit, which could cause "maxed out" error for non-VIP connections. Now VIP connections are not counted towards the limit. Current number of VIP connections can be also seen in SHOW STATUS and status.

  • ID can now be specified explicitly.

  • Issue #687arrow-up-right support zstd compression for mysql proto

⚠️ Other minor breaking changes

  • ⚠️ BM25F formula has been slightly updated to improve search relevance. This only affects search results in case you use function BM25F(), it doesn't change behaviour of the default ranking formula.

  • ⚠️ Changed behaviour of REST /sql endpoint: /sql?mode=raw now requires escaping and returns an array.

  • ⚠️ Format change of the response of /bulk INSERT/REPLACE/DELETE requests:

    • previously each sub-query constituted a separate transaction and resulted in a separate response

    • now the whole batch is considered a single transaction, which returns a single response

  • ⚠️ Search options low_priority and boolean_simplify now require a value (0/1): previously you could do SELECT ... OPTION low_priority, boolean_simplify, now you need to do SELECT ... OPTION low_priority=1, boolean_simplify=1.

  • ⚠️ If you are using old phparrow-up-right, pythonarrow-up-right or javaarrow-up-right clients please follow the corresponding link and find an updated version. The old versions are not fully compatible with Manticore 5.

  • ⚠️ HTTP JSON requests are now logged in different format in mode query_log_format=sphinxql. Previously only full-text part was logged, now it's logged as is.

New packages

  • ⚠️ BREAKING CHANGE: because of the new structure when you upgrade to Manticore 5 it's recommended to remove old packages before you install the new ones:

    • RPM-based: yum remove manticore*

    • Debian and Ubuntu: apt remove manticore*

  • New deb/rpm packages structure. Previous versions provided:

    • manticore-server with searchd (main search daemon) and all needed for it

    • manticore-tools with indexer and indextool

    • manticore including everything

    • manticore-all RPM as a meta package referring to manticore-server and manticore-tools

    The new structure is:

    • manticore - deb/rpm meta package which installs all the above as dependencies

    • manticore-server-core - searchd and everything to run it alone

    • manticore-server - systemd files and other supplementary scripts

    • manticore-tools - indexer, indextool and other tools

    • manticore-common - default configuration file, default data directory, default stopwords

    • manticore-icudata, manticore-dev, manticore-converter didn't change much

    • .tgz bundle which includes all the packages

  • Support for Ubuntu Jammy

  • Support for Amazon Linux 2 via YUM repo

Bugfixes

Version 4.2.0, Dec 23 2021

Major new features

  • Pseudo-sharding support for real-time indexes and full-text queries. In previous release we added limited pseudo sharding support. Starting from this version you can get all benefits of the pseudo sharding and your multi-core processor by just enabling searchd.pseudo_sharding. The coolest thing is that you don't need to do anything with your indexes or queries for that, just enable it and if you have free CPU it will be used to lower your response time. It supports plain and real-time indexes for full-text, filtering and analytical queries. For example, here is how enabling pseudo sharding can make most queries' response time in average about 10x lower on Hacker news curated comments datasetarrow-up-right multiplied 100 times (116 million docs in a plain index).

Pseudo sharding on vs off in 4.2.0
  • PQ transactions are now atomic and isolated. Previously PQ transactions support was limited. It enables much faster REPLACE into PQ, especially when you need to replace a lot of rules at once. Performance details:

4.0.2

It takes 48 seconds to insert 1M PQ rules and 406 seconds to REPLACE just 40K in 10K batches.

4.2.0

It takes 34 seconds to insert 1M PQ rules and 23 seconds to REPLACE them in 10K batches.

Minor changes

  • optimize_cutoff is now available as a configuration option in section searchd. It's useful when you want to limit the RT chunks count in all your indexes to a particular number globally.

  • Commit 0087arrow-up-right accurate count(distinct ...) and FACET ... distinct over several local physical indexes (real-time/plain) with identical fields set/order.

  • PR #598arrow-up-right bigint support for YEAR() and other timestamp functions.

  • Commit 8e85arrow-up-right Adaptive rt_mem_limit. Previously Manticore Search was collecting exactly up to rt_mem_limit of data before saving a new disk chunk to disk, and while saving was still collecting up to 10% more (aka double-buffer) to minimize possible insert suspension. If that limit was also exhausted, adding new documents was blocked until the disk chunk was fully saved to disk. The new adaptive limit is built on the fact that we have auto-optimize now, so it's not a big deal if disk chunks do not fully respect rt_mem_limit and start flushing a disk chunk earlier. So, now we collect up to 50% of rt_mem_limit and save that as a disk chunk. Upon saving we look at the statistics (how much we've saved, how many new documents have arrived while saving) and recalculate the initial rate which will be used next time. For example, if we saved 90 million documents, and another 10 million docs arrived while saving, the rate is 90%, so we know that next time we can collect up to 90% of rt_mem_limit before starting flushing another disk chunk. The rate value is calculated automatically from 33.3% to 95%.

  • Commit 6d54arrow-up-right indexer -v and --version. Previously you could still see indexer's version, but -v/--version were not supported.

  • Issue #662arrow-up-right infinit mlock limit by default when Manticore is started via systemd.

  • Commit 63c8arrow-up-right spinlock -> op queue for coro rwlock.

  • Commit 4113arrow-up-right environment variable MANTICORE_TRACK_RT_ERRORS useful for debugging RT segments corruption.

Breaking changes

  • Binlog version was increased, binlog from previous version won't be replayed, so make sure you stop Manticore Search cleanly during upgrade: no binlog files should be in /var/lib/manticore/binlog/ except binlog.meta after stopping the previous instance.

  • Commit 3f65arrow-up-right new column "chain" in show threads option format=all. It shows stack of some task info tickets, most useful for profiling needs, so if you are parsing show threads output be aware of the new column.

  • searchd.workers was obsoleted since 3.5.0, now it's deprecated, if you still have it in your configuration file it will trigger a warning on start. Manticore Search will start, but with a warning.

  • If you use PHP and PDO to access Manticore you need to do PDO::ATTR_EMULATE_PREPARES

Bugfixes

Version 4.0.2, Sep 21 2021

Major new features

  • Full support of Manticore Columnar Libraryarrow-up-right. Previously Manticore Columnar Library was supported only for plain indexes. Now it's supported:

    • in real-time indexes for INSERT, REPLACE, DELETE, OPTIMIZE

    • in replication

    • in ALTER

    • in indextool --check

  • Automatic indexes compaction (Issue #478arrow-up-right). Finally, you don't have to call OPTIMIZE manually or via a crontask or other kind of automation. Manticore now does it for you automatically and by default. You can set default compaction threshold via optimize_cutoff global variable.

  • Chunk snapshots and locks system revamp. These changes may be invisible from outside at first glance, but they improve the behaviour of many things happening in real-time indexes significantly. In a nutshell, previously most Manticore data manipulation operations relied on locks heavily, now we use disk chunk snapshots instead.

  • Significantly faster bulk INSERT performance into a real-time index. For example on Hetzner's server AX101arrow-up-right with SSD, 128 GB of RAM and AMD's Ryzen™ 9 5950X (16*2 cores) with 3.6.0 you could get 236K docs per second inserted into a table with schema name text, email string, description text, age int, active bit(1) (default rt_mem_limit, batch size 25000, 16 concurrent insert workers, 16 million docs inserted overall). In 4.0.2 the same concurrency/batch/count gives 357K docs per second.

    • read operations (e.g. SELECTs, replication) are performed with snapshots

    • operations that just change internal index structure without modifying schema/documents (e.g. merging RAM segments, saving disk chunks, merging disk chunks) are performed with read-only snapshots and replace the existing chunks in the end

    • UPDATEs and DELETEs are performed against existing chunks, but for the case of merging that may be happening the writes are collected and are then applied against the new chunks

    • UPDATEs acquire an exclusive lock sequentially for every chunk. Merges acquire a shared lock when entering the stage of collecting attributes from the chunk. So at the same time only one (merge or update) operation has access to attributes of the chunk.

    • when merging gets to the phase, when it needs attributes it sets a special flag. When UPDATE finishes, it checks the flag, and if it's set, the whole update is stored in a special collection. Finally, when the merge finishes, it applies the updates set to the newborn disk chunk.

    • ALTER runs via an exclusive lock

    • replication runs as a usual read operation, but in addition saves the attributes before SST and forbids updates during the SST

  • ALTER can add/remove a full-text field (in RT mode). Previously it could only add/remove an attribute.

  • 🔬 Experimental: pseudo-sharding for full-scan queries - allows to parallelize any non-full-text search query. Instead of preparing shards manually you can now just enable new option searchd.pseudo_sharding and expect up to CPU cores lower response time for non-full-text search queries. Note it can easily occupy all existing CPU cores, so if you care not only about latency, but throughput too - use it with caution.

Minor changes

  • Linux Mint and Ubuntu Hirsute Hippo are supported via APT repository

  • faster update by id via HTTP in big indexes in some cases (depends on the ids distribution)

  • 671e65a2arrow-up-right - added caching to lemmatizer-uk

3.6.0

4.0.2

Breaking changes

  • the new version can read older indexes, but the older versions can't read Manticore 4's indexes

  • removed implicit sorting by id. Sort explicitly if required

  • charset_table's default value changes from 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451 to non_cjk

  • OPTIMIZE happens automatically. If you don't need it make sure to set auto_optimize=0 in section searchd in the configuration file

  • Issue #616arrow-up-right ondisk_attrs_default were deprecated, now they are removed

  • for contributors: we now use Clang compiler for Linux builds as according to our tests it can build a faster Manticore Search and Manticore Columnar Library

  • if max_matches is not specified in a search query it gets updated implicitly with the lowest needed value for the sake of performance of the new columnar storage. It can affect metric total in SHOW META, but not total_found which is the actual number of found documents.

Migration from Manticore 3

  • make sure you a stop Manticore 3 cleanly:

    • no binlog files should be in /var/lib/manticore/binlog/ (only binlog.meta should be in the directory)

    • otherwise the indexes Manticore 4 can't reply binlogs for won't be run

  • the new version can read older indexes, but the older versions can't read Manticore 4's indexes, so make sure you make a backup if you want to be able to rollback the new version easily

  • if you run a replication cluster make sure you:

    • stop all your nodes first cleanly

    • and then start the node which was stopped last with --new-cluster (run tool manticore_new_cluster in Linux).

    • read about restarting a cluster for more details

Bugfixes

Version 3.6.0, May 3rd 2021

Maintenance release before Manticore 4

Major new features

Minor changes

Optimizations

  • faster JSON parsingarrow-up-right, our tests show 3-4% lower latency on queries like WHERE json.a = 1

  • non-documented command DEBUG SPLIT as a prerequisite for automatic sharding/rebalancing

Bugfixes

Breaking changes:

  • New binlog format: you need to make a clean stop of Manticore before upgrading

  • Index format slightly changes: the new version can read you existing indexes fine, but if you decide to downgrade from 3.6.0 to an older version the newer indexes will be unreadable

  • Replication format change: don't replicate from an older version to 3.6.0 and vice versa, switch to the new version on all your nodes at once

  • reverse_scan is deprecated. Make sure you don't use this option in your queries since 3.6.0 since they will fail otherwise

  • As of this release we don't provide builds for RHEL6, Debian Jessie and Ubuntu Trusty any more. If it's mission critical for you to have them supported contact usarrow-up-right

Deprecations

  • No more implicit sorting by id. If you rely on it make sure to update your queries accordingly

  • Search option reverse_scan has been deprecated

Version 3.5.4, Dec 10 2020

New Features

  • New Python, Javascript and Java clients are generally available now and are well documented in this manual.

  • automatic drop of a disk chunk of a real-time index. This optimization enables dropping a disk chunk automatically when OPTIMIZing a real-time index when the chunk is obviously not needed any more (all the documents are suppressed). Previously it still required merging, now the chunk can be just dropped instantly. The cutoff option is ignored, i.e. even if nothing is actually merged an obsoleted disk chunk gets removed. This is useful in case you maintain retention in your index and delete older documents. Now compacting such indexes will be faster.

  • standalone NOT as an option for SELECT

Minor Changes

Deprecations

  • indexer --verbose is deprecated as it never added anything to the indexer output

  • For dumping watchdog's backtrace signal USR2 is now to be used instead of USR1

Bugfixes

Version 3.5.2, Oct 1 2020

New features

  • OPTIMIZE reduces disk chunks to a number of chunks ( default is 2* No. of cores) instead of a single one. The optimal number of chunks can be controlled by cutoff option.

  • NOT operator can be now used standalone. By default it is disabled since accidental single NOT queries can be slow. It can be enabled by setting new searchd directive not_terms_only_allowed to 0.

  • New setting max_threads_per_query sets how many threads a query can use. If the directive is not set, a query can use threads up to the value of threads. Per SELECT query the number of threads can be limited with OPTION threads=N overriding the global max_threads_per_query.

  • Percolate indexes can be now be imported with IMPORT TABLE.

  • HTTP API /search receives basic support for faceting/grouping by new query node aggs.

Minor changes

  • If no replication listen directive is declared, the engine will try to use ports after the defined 'sphinx' port, up to 200.

  • listen=...:sphinx needs to be explicit set for SphinxSE connections or SphinxAPI clients.

  • SHOW INDEX STATUS outputs new metrics: killed_documents, killed_rate, disk_mapped_doclists, disk_mapped_cached_doclists, disk_mapped_hitlists and disk_mapped_cached_hitlists.

  • SQL command status now outputs Queue\Threads and Tasks\Threads.

Deprecations:

  • dist_threads is completely deprecated now, searchd will log a warning if the directive is still used.

Docker

The official Docker image is now based on Ubuntu 20.04 LTS

Packaging

Besides the usual manticore package, you can also install Manticore Search by components:

  • manticore-server-core - provides searchd, manpage, log dir, API and galera module. It will also install manticore-common as the dependency.

  • manticore-server - provides automation scripts for core (init.d, systemd), and manticore_new_cluster wrapper. It will also install manticore-server-core as the dependency.

  • manticore-common - provides config, stopwords, generic docs and skeleton folders (datadir, modules, etc.)

  • manticore-tools - provides auxiliary tools ( indexer, indextool etc.), their manpages and examples. It will also install manticore-common as the dependency.

  • manticore-icudata (RPM) or manticore-icudata-65l (DEB) - provides ICU data file for icu morphology usage.

  • manticore-devel (RPM) or manticore-dev (DEB) - provides dev headers for UDFs.

Bugifixes

  1. Commit 2a47arrow-up-right Crash of daemon at grouper at RT index with different chunks

  2. Commit 57a1arrow-up-right Fastpath for empty remote docs

  3. Commit 07ddarrow-up-right Expression stack frame detection runtime

  4. Commit 08aearrow-up-right Matching above 32 fields at percolate indexes

  5. Commit 16b9arrow-up-right Replication listen ports range

  6. Commit 5fa6arrow-up-right Show create table on pq

  7. Commit 54d1arrow-up-right HTTPS port behavior

  8. Commit fdbbarrow-up-right Mixing docstore rows when replacing

  9. Commit afb5arrow-up-right Switch TFO unavailable message level to 'info'

  10. Commit 59d9arrow-up-right Crash on strcmp invalid use

  11. Commit 04afarrow-up-right Adding index to cluster with system (stopwords) files

  12. Commit 5014arrow-up-right Merge indexes with large dictionaries; RT optimize of large disk chunks

  13. Commit a2adarrow-up-right Indextool can dump meta from current version

  14. Commit 69f6arrow-up-right Issue in group order in GROUP N

  15. Commit 24d5arrow-up-right Explicit flush for SphinxSE after handshake

  16. Commit 31c4arrow-up-right Avoid copy of huge descriptions when not necessary

  17. Commit 2959arrow-up-right Negative time in show threads

  18. Commit f0b3arrow-up-right Token filter plugin vs zero position deltas

  19. Commit a49earrow-up-right Change 'FAIL' to 'WARNING' on multiple hits

Version 3.5.0, 22 Jul 2020

Major new features:

  • This release took so long, because we were working hard on changing multitasking mode from threads to coroutines. It makes configuration simpler and queries parallelization much more straightforward: Manticore just uses given number of threads (see new setting threads) and the new mode makes sure it's done in the most optimal way.

  • Changes in highlighting:

    • any highlighting that works with several fields (highlight({},'field1, field2') or highlight in json queries) now applies limits per-field by default.

    • any highlighting that works with plain text (highlight({}, string_attr) or snippet() now applies limits to the whole document.

    • per-field limits can be switched to global limits by limits_per_field=0 option (1 by default).

    • allow_empty is now 0 by default for highlighting via HTTP JSON.

  • The same port can now be used for http, https and binary API (to accept connections from a remote Manticore instance). listen = *:mysql is still required for connections via mysql protocol. Manticore now detects automatically the type of client trying to connect to it except for MySQL (due to restrictions of the protocol).

  • In RT mode a field can now be text and string attribute at the same time - GitHub issue #331arrow-up-right.

    In plain mode it's called sql_field_string. Now it's available in RT mode for real-time indexes too. You can use it as shown in the example:

Minor changes

Breaking changes:

  • Index format has been changed. Indexes built in 3.5.0 cannot be loaded by Manticore version < 3.5.0, but Manticore 3.5.0 understands older formats.

  • INSERT INTO PQ VALUES() (i.e. without providing column list) previously expected exactly (query, tags) as the values. It's been changed to (id,query,tags,filters). The id can be set to 0 if you want it to be auto-generated.

  • allow_empty=0 is a new default in highlighting via HTTP JSON interface.

  • Only absolute paths are allowed for external files (stopwords, exceptions etc.) in CREATE TABLE/ALTER TABLE.

Deprecations:

  • ram_chunks_count was renamed to ram_chunk_segments_count in SHOW INDEX STATUS.

  • workers is obsolete. There's only one workers mode now.

  • dist_threads is obsolete. All queries are as much parallel as possible now (limited by threads and jobs_queue_size).

  • max_children is obsolete. Use threads to set the number of threads Manticore will use (set to the # of CPU cores by default).

  • queue_max_length is obsolete. Instead of that in case it's really needed use jobs_queue_size to fine-tune internal jobs queue size (unlimited by default).

  • All /json/* endpoints are now available w/o /json/, e.g. /search, /insert, /delete, /pq etc.

  • field meaning "full-text field" was renamed to "text" in describe. 3.4.2:

    3.5.0:

  • Cyrillic и doesn't map to i in non_cjk charset_table (which is a default) as it affected Russian stemmers and lemmatizers too much.

  • read_timeout. Use network_timeout instead which controls both reading and writing.

Packages

  • Ubuntu Focal 20.04 official package

  • deb package name changed from manticore-bin to manticore

Bugfixes:

  1. Issue #351arrow-up-right searchd memory leak

  2. Commit ceabarrow-up-right Tiny read out of bounds in snippets

  3. Commit 1c3earrow-up-right Dangerous write into local variable for crash queries

  4. Commit 26e0arrow-up-right Tiny memory leak of sorter in test 226

  5. Commit d2c7arrow-up-right Huge memory leak in test 226

  6. Commit 0dd8arrow-up-right Cluster shows the nodes are in sync, but count(*) shows different numbers

  7. Commit f1c1arrow-up-right Cosmetic: Duplicate and sometimes lost warning messages in the log

  8. Commit f1c1arrow-up-right Cosmetic: (null) index name in log

  9. Commit 359darrow-up-right Cannot retrieve more than 70M results

  10. Commit 19f3arrow-up-right Can't insert PQ rules with no-columns syntax

  11. Commit bf68arrow-up-right Misleading error message when inserting a document to an index in a cluster

  12. Commit 2cf1arrow-up-right /json/replace and json/update return id in exponent form

  13. Issue #324arrow-up-right Update json scalar properties and mva in the same query

  14. Commit d384arrow-up-right hitless_words doesn't work in RT mode

  15. Commit 5813arrow-up-right ALTER RECONFIGURE in rt mode should be disallowed

  16. Commit 5813arrow-up-right rt_mem_limit gets reset to 128M after searchd restart

  17. highlight() sometimes hangs

  18. Commit 7cd8arrow-up-right Failed to use U+code in RT mode

  19. Commit 2b21arrow-up-right Failed to use wildcard at wordforms at RT mode

  20. Commit e9d0arrow-up-right Fixed SHOW CREATE TABLE vs multiple wordform files

  21. Commit fc90arrow-up-right JSON query without "query" crashes searchd

  22. Manticore official dockerarrow-up-right couldn't index from mysql 8

  23. Commit 23e0arrow-up-right HTTP /json/insert requires id

  24. Commit bd67arrow-up-right SHOW CREATE TABLE doesn't work for PQ

  25. Commit bd67arrow-up-right CREATE TABLE LIKE doesn't work properly for PQ

  26. Commit 5eacarrow-up-right End of line in settings in show index status

  27. Commit cb15arrow-up-right Empty title in "highlight" in HTTP JSON response

  28. Issue #318arrow-up-right CREATE TABLE LIKE infix error

  29. Commit 9040arrow-up-right RT crashes under load

  30. cd512c7d arrow-up-rightLost crash log on crash at RT disk chunk

  31. Issue #323arrow-up-right Import table fails and closes the connection

  32. Commit 6275arrow-up-right ALTER reconfigure corrupts a PQ index

  33. Commit 9c1darrow-up-right Searchd reload issues after change index type

  34. Commit 71e2arrow-up-right Daemon crashes on import table with missed files

  35. Issue #322arrow-up-right Crash on select using multiple indexes, group by and ranker = none

  36. Commit c3f5arrow-up-right HIGHLIGHT() doesn't higlight in string attributes

  37. Issue #320arrow-up-right FACET fails to sort on string attribute

  38. Commit 4f1aarrow-up-right Error in case of missing data dir

  39. Commit 04f4arrow-up-right access_* are not supported in RT mode

  40. Commit 1c06arrow-up-right Bad JSON objects in strings: 1. CALL PQ returns "Bad JSON objects in strings: 1" when the json is greater than some value.

  41. Commit 32f9arrow-up-right RT-mode inconsistency. In some cases I can't drop the index since it's unknown and can't create it since the directory is not empty.

  42. Issue #319arrow-up-right Crash on select

  43. Commit 22a2arrow-up-right max_xmlpipe2_field = 2M returned warning on 2M field

  44. Issue #342arrow-up-right Query conditions execution bug

  45. Commit dd8darrow-up-right Simple 2 terms search finds a document containing only one term

  46. Commit 9091arrow-up-right It was impossible in PQ to match a json with capital letters in keys

  47. Commit 56daarrow-up-right Indexer crashes on csv+docstore

  48. Issue #363arrow-up-right using [null] in json attr in centos 7 causes corrupted inserted data

  49. Major Issue #345arrow-up-right Records not being inserted, count() is random, "replace into" returns OK

  50. max_query_time slows down SELECTs too much

  51. Issue #352arrow-up-right Master-agent communication fails on Mac OS

  52. Issue #328arrow-up-right Error when connecting to Manticore with Connector.Net/Mysql 8.0.19

  53. Commit daa7arrow-up-right Fixed escaping of \0 and optimized performance

  54. Commit 9bc5arrow-up-right Fixed count distinct vs json

  55. Commit 4f89arrow-up-right Fixed drop table at other node failed

  56. Commit 952aarrow-up-right Fix crashes on tightly running call pq

Version 3.4.2, 10 April 2020

Critical bugfixes

Version 3.4.0, 26 March 2020

Major changes

  • server works in 2 modes: rt-mode and plain-mode

    • rt-mode requires data_dir and no index definition in config

    • in plain-mode indexes are defined in config; no data_dir allowed

  • replication available only in rt-mode

Minor changes

  • charset_table defaults to non_cjk alias

  • in rt-mode full-text fields are indexed and stored by default

  • full-text fields in rt-mode renamed from 'field' to 'text'

  • ALTER RTINDEX is renamed to ALTER TABLE

  • TRUNCATE RTINDEX is renamed to TRUNCATE TABLE

Features

  • stored-only fields

  • SHOW CREATE TABLE, IMPORT TABLE

Improvements

  • much faster lockless PQ

  • /sql can execute any type of SQL statement in mode=raw

  • alias mysql for mysql41 protocol

  • default state.sql in data_dir

Bugfixes

Version 3.3.0, 4 February 2020

Features

  • Parallel Real-Time index searching

  • EXPLAIN QUERY command

  • configuration file without index definitions (alpha version)

  • CREATE/DROP TABLE commands (alpha version)

  • indexer --print-rt - can read from a source and print INSERTs for a Real-Time index

Improvements

  • Updated to Snowball 2.0 stemmers

  • LIKE filter for SHOW INDEX STATUS

  • improved memory usage for high max_matches

  • SHOW INDEX STATUS adds ram_chunks_count for RT indexes

  • lockless PQ

  • changed LimitNOFILE to 65536

Bugfixes

Version 3.2.2, 19 December 2019

Features

  • Autoincrement ID for RT indexes

  • Highlight support for docstore via new HIGHLIGHT() function, available also in HTTP API

  • SNIPPET() can use special function QUERY() which returns current MATCH query

  • new field_separator option for highlighting functions.

Improvements and changes

  • lazy fetch of stored fields for remote nodes (can significantly increase performance)

  • strings and expressions don't break anymore multi-query and FACET optimizations

  • RHEL/CentOS 8 build now uses mysql libclient from mariadb-connector-c-devel

  • ICU data file is now shipped with the packages, icu_data_dir removed

  • systemd service files include 'Restart=on-failure' policy

  • indextool can now check real-time indexes online

  • default conf is now /etc/manticoresearch/manticore.conf

  • service on RHEL/CentOS renamed to 'manticore' from 'searchd'

  • removed query_mode and exact_phrase snippet's options

Bugfixes

Version 3.2.0, 17 October 2019

Features

  • Document storage

  • new directives stored_fields, docstore_cache_size, docstore_block_size, docstore_compression, docstore_compression_level

Improvements and changes

  • improved SSL support

  • non_cjk built-in charset updated

  • disabled UPDATE/DELETE statements logging a SELECT in query log

  • RHEL/CentOS 8 packages

Bugfixes

Version 3.1.2, 22 August 2019

Features and Improvements

  • Experimental SSL support for HTTP API

  • field filter for CALL KEYWORDS

  • max_matches for /json/search

  • automatic sizing of default Galera gcache.size

  • improved FreeBSD support

Bugfixes

Version 3.1.0, 16 July 2019

Features and Improvements

  • replication for RealTime indexes

  • ICU tokenizer for chinese

  • new morphology option icu_chinese

  • new directive icu_data_dir

  • multiple statements transactions for replication

  • LAST_INSERT_ID() and @session.last_insert_id

  • LIKE 'pattern' for SHOW VARIABLES

  • Multiple documents INSERT for percolate indexes

  • Added time parsers for config

  • internal task manager

  • mlock for doc and hit lists components

  • jail snippets path

Removals

  • RLP library support dropped in favor of ICU; all rlp* directives removed

  • updating document ID with UPDATE is disabled

Bugfixes

Version 3.0.2, 31 May 2019

Improvements

  • added mmap readers for docs and hit lists

  • /sql HTTP endpoint response is now the same as /json/search response

  • new directives access_plain_attrs, access_blob_attrs, access_doclists, access_hitlists

  • new directive server_id for replication setups

Removals

  • removed HTTP /search endpoint

Deprecations

  • read_buffer, ondisk_attrs, ondisk_attrs_default, mlock are replaced by access_* directives

Bugfixes

Version 3.0.0, 6 May 2019

Features and improvements

  • New index storage. Non-scalar attributes are not limited anymore to 4GB size per index

  • attr_update_reserve directive

  • String,JSON and MVAs can be updated using UPDATE

  • killlists are applied at index load time

  • killlist_target directive

  • multi AND searches speedup

  • better average performance and RAM usage

  • convert tool for upgrading indexes made with 2.x

  • CONCAT() function

  • JOIN CLUSTER cluster AT 'nodeaddress:port'

  • ALTER CLUSTER posts UPDATE nodes

  • node_address directive

  • list of nodes printed in SHOW STATUS

Behaviour changes

  • in case of indexes with killists, server doesn't rotate indexes in order defined in conf, but follows the chain of killlist targets

  • order of indexes in a search no longer defines the order in which killlists are applied

  • Document IDs are now signed big integers

Removed directives

  • docinfo (always extern now), inplace_docinfo_gap, mva_updates_pool

Version 2.8.2 GA, 2 April 2019

Features and improvements

  • Galera replication for percolate indexes

  • OPTION morphology

Compiling notes

Cmake minimum version is now 3.13. Compiling requires boost and libssl development libraries.

Bugfixes

Version 2.8.1 GA, 6 March 2019

Features and improvements

  • SUBSTRING_INDEX()

  • SENTENCE and PARAGRAPH support for percolate queries

  • systemd generator for Debian/Ubuntu; also added LimitCORE to allow core dumping

Bugfixes

Version 2.8.0 GA, 28 January 2019

Improvements

  • Distributed indexes for percolate indexes

  • CALL PQ new options and changes:

    • skip_bad_json

    • mode (sparsed/sharded)

    • json documents can be passed as a json array

    • shift

    • Column names 'UID', 'Documents', 'Query', 'Tags', 'Filters' were renamed to 'id', 'documents', 'query', 'tags', 'filters'

  • DESCRIBE pq TABLE

  • SELECT FROM pq WHERE UID is not possible any more, use 'id' instead

  • SELECT over pq indexes is on par with regular indexes (e.g. you can filter rules via REGEX())

  • ANY/ALL can be used on PQ tags

  • expressions have auto-conversion for JSON fields, not requiring explicit casting

  • built-in 'non_cjk' charset_table and 'cjk' ngram_chars

  • built-in stopwords collections for 50 languages

  • multiple files in a stopwords declaration can also be separated by comma

  • CALL PQ can accept JSON array of documents

Bugfixes

Version 2.7.5 GA, 4 December 2018

Improvements

  • REGEX function

  • limit/offset for json API search

  • profiler points for qcache

Bugfixes

Version 2.7.4 GA, 1 November 2018

Improvements

  • SHOW THREADS in case of remote distributed indexes prints the original query instead of API call

  • SHOW THREADS new option format=sphinxql prints all queries in SQL format

  • SHOW PROFILE prints additional clone_attrs stage

Bugfixes

Version 2.7.3 GA, 26 September 2018

Improvements

  • sort_mode option for CALL KEYWORDS

  • DEBUG on VIP connection can perform 'crash ' for intentional SIGEGV action on server

  • DEBUG can perform 'malloc_stats' for dumping malloc stats in searchd.log 'malloc_trim' to perform a malloc_trim()

  • improved backtrace is gdb is present on the system

Bugfixes

Version 2.7.2 GA, 27 August 2018

Improvements

  • compatibility with MySQL 8 clients

  • TRUNCATE WITH RECONFIGURE

  • retired memory counter on SHOW STATUS for RT indexes

  • global cache of multi agents

  • improved IOCP on Windows

  • VIP connections for HTTP protocol

  • Manticore SQL DEBUG command which can run various subcommands

  • shutdown_token - SHA1 hash of password needed to invoke shutdown using DEBUG command

  • new stats to SHOW AGENT STATUS (_ping, _has_perspool, _need_resolve)

  • --verbose option of indexer now accept [debugvv] for printing debug messages

Bugfixes

Version 2.7.1 GA, 4 July 2018

Improvements

  • improved wildcards performance on matching multiple documents at PQ

  • support for fullscan queries at PQ

  • support for MVA attributes at PQ

  • regexp and RLP support for percolate indexes

Bugfixes

Version 2.7.0 GA, 11 June 2018

Improvements

  • reduced number of syscalls to avoid Meltdown and Spectre patches impact

  • internal rewrite of local index management

  • remote snippets refactor

  • full configuration reload

  • all node connections are now independent

  • proto improvements

  • Windows communication switched from wsapoll to IO completion ports

  • TFO can be used for communication between master and nodes

  • SHOW STATUS now outputs to server version and mysql_version_string

  • added docs_id option for documents called in CALL PQ.

  • percolate queries filter can now contain expressions

  • distributed indexes can work with FEDERATED

  • dummy SHOW NAMES COLLATE and SET wait_timeout (for better ProxySQL compatibility)

Bugfixes

Version 2.6.4 GA, 3 May 2018

Features and improvements

  • MySQL FEDERATED engine support

  • MySQL packets return now SERVER_STATUS_AUTOCOMMIT flag, adds compatibility with ProxySQL

  • listen_tfo - enable TCP Fast Open connections for all listeners

  • indexer --dumpheader can dump also RT header from .meta file

  • cmake build script for Ubuntu Bionic

Bugfixes

Version 2.6.3 GA, 28 March 2018

Improvements

  • jemalloc at compilation. If jemalloc is present on system, it can be enabled with cmake flag -DUSE_JEMALLOC=1

Bugfixes

Version 2.6.2 GA, 23 February 2018

Improvements

  • improved Percolate Queries performance in case of using NOT operator and for batched documents.

  • percolate_query_call can use multiple threads depending on dist_threads

  • new full-text matching operator NOTNEAR/N

  • LIMIT for SELECT on percolate indexes

  • expand_keywords can accept 'start','exact' (where 'star,exact' has same effect as '1')

  • ranged-main-query for joined fields which uses the ranged query defined by sql_query_range

Bugfixes

Version 2.6.1 GA, 26 January 2018

Improvements

  • agent_retry_count in case of agents with mirrors gives the value of retries per mirror instead of per agent, the total retries per agent being agent_retry_count*mirrors.

  • agent_retry_count can now be specified per index, overriding global value. An alias mirror_retry_count is added.

  • a retry_count can be specified in agent definition and the value represents retries per agent

  • Percolate Queries are now in HTTP JSON API at /json/pq.

  • Added -h and -v options (help and version) to executables

  • morphology_skip_fields support for Real-Time indexes

Bugfixes

Version 2.6.0, 29 December 2017

Features and improvements

Bugfixes

Upgrade

In this release we've changed internal protocol used by masters and agents to speak with each other. In case you run Manticoresearch in a distributed environment with multiple instances make sure your first upgrade agents, then the masters.

Version 2.5.1, 23 November 2017

Features and improvements

  • JSON queries on HTTP API protocol. Supported search, insert, update, delete, replace operations. Data manipulation commands can be also bulked, also there are some limitations currently as MVA and JSON attributes can't be used for inserts, replaces or updates.

  • FLUSH LOGS command

  • SHOW THREADS can show progress of optimize, rotation or flushes.

  • GROUP N BY work correctly with MVA attributes

  • blackhole agents are run on separate thread to not affect master query anymore

  • implemented reference count on indexes, to avoid stalls caused by rotations and high load

  • SHA1 hashing implemented, not exposed yet externally

  • fixes for compiling on FreeBSD, macOS and Alpine

Bugfixes

Version 2.4.1 GA, 16 October 2017

Features and improvements

  • OR operator in WHERE clause between attribute filters

  • Maintenance mode ( SET MAINTENANCE=1)

  • CALL KEYWORDS available on distributed indexes

  • query_log_mode for custom log files permissions

  • Field weights can be zero or negative

  • max_query_time can now affect full-scans

  • added net_wait_tm, net_throttle_accept and net_throttle_action for network thread fine tuning (in case of workers=thread_pool)

  • COUNT DISTINCT works with facet searches

  • IN can be used with JSON float arrays

  • multi-query optimization is not broken anymore by integer/float expressions

  • SHOW META shows a multiplier row when multi-query optimization is used

Compiling

Manticore Search is built using cmake and the minimum gcc version required for compiling is 4.7.2.

Folders and service

  • Manticore Search runs under manticore user.

  • Default data folder is now /var/lib/manticore/.

  • Default log folder is now /var/log/manticore/.

  • Default pid folder is now /var/run/manticore/.

Bugfixes

Version 2.3.3, 06 July 2017

  • Manticore branding

最后更新于