Skip to content

Releases: StarRocks/starrocks

3.2.11

09 Sep 08:28
10a5f0e
Compare
Choose a tag to compare

Release date: September 9, 2024

Improvements

  • Supports masking authentication information for Files() and PIPE. #47629
  • Support automatic inference for the STRUCT type when reading Parquet files through Files(). #50481

Bug Fixes

Fixed the following issues:

  • An error is returned for equi-join queries because they failed to be rewritten by the global dictionary. #50690
  • The error "version has been compacted" caused by an infinite loop on the FE side during Tablet Clone. #50561
  • Incorrect scheduling for unhealthy replica repairs after distributing data based on labels. #50331
  • An error in the statistics collection log: "Unknown column '%s' in '%s." #50785
  • Incorrect timezone usage when reading complex types like TIMESTAMP from Parquet files via Files(). #50448

Behavior Changes

  • When downgrading StarRocks from v3.3.x to v3.2.11, the system will ignore it if there is incompatible metadata. #49636

3.3.3

05 Sep 05:55
312ed45
Compare
Choose a tag to compare

3.3.3

Release date: September 5, 2024

New Features

  • Supports user-level variables. #48477
  • Supports Delta Lake Catalog metadata cache with manual and periodic refresh strategies. #46526 #49069
  • Supports loading JSON types from Parquet files. #49385
  • JDBC SQL Server Catalog supports queries with LIMIT. #48248
  • Shared-data clusters support Partial Updates with INSERT INTO. #49336

Improvements

  • Optimized error messages for loading:
    • When memory limits are reached during loading, the IP of the corresponding BE node is returned for easier troubleshooting. #49335
    • Detailed messages are provided when CSV data is loaded to target table columns that are not long enough. #49713
    • Specific node information is provided when Kerberos authentication fails in Broker Load. #46085
  • Optimized the partitioning mechanism during data loading to reduce memory usage in the initial stage. #47976
  • Optimized memory usage for shared-nothing clusters by limiting metadata memory usage to avoid issues when there are too many Tablets or Segment files. #49170
  • Optimized the performance of queries using max(partition_column). #49391
  • Partition pruning is used to optimize query performance when the partition column is a generated column (a column that is calculated based on a native column in the table), and the query predicate filter condition includes the native column. #48692
  • Supports masking authentication information for Files() and PIPE. #47629
  • Introduced a new statement show proc '/global_current_queries' to view queries running on all FE nodes. show proc '/current_queries' only shows queries running on the current FE node. #49826

Bug Fixes

Fixed the following issues:

  • The source cluster's BE nodes were mistakenly added to the current cluster when exporting data to the destination cluster via StarRocks external tables. #49323
  • TINYINT data type returned NULL when StarRocks reads ORC files using select * from files from clusters deployed on aarch64 machines. #49517
  • Stream Load fails when loading JSON files containing large Integer types. #49927
  • Incorrect schema is returned due to improper handling of invisible characters when users load CSV files with Files(). #49718
  • An issue with temporary partition replacement in tables with multiple partition columns. #49764

Behavior Changes

  • Introduced a new parameter object_storage_rename_file_request_timeout_ms to better accommodate backup scenarios with cloud object storage. This parameter will be used as the backup timeout, with a default value of 30 seconds. #49706
  • to_json, CAST(AS MAP), and STRUCT AS JSON will return NULL instead of throwing an error by default when the conversion fails. You can allow errors by setting the system variable sql_mode to ALLOW_THROW_EXCEPTION. #50157

3.1.15

04 Sep 09:04
5625961
Compare
Choose a tag to compare

3.1.15

Release date: September 4, 2024

Bug Fixes

Fixed the following issues:

  • During query rewrite with asynchronous materialized views, count(*) on certain tables returns NULL. #49288
  • partition_linve_nubmer does not take effect. #49213
  • FE throws a tablet exception: BE disk offline, and cannot migrate tablets. #47833

3.2.10

23 Aug 06:13
f61f51a
Compare
Choose a tag to compare

Release date: August 23, 2024

Improvements

  • Files() will automatically convert BYTE_ARRAY data with a logical_type of JSON in Parquet files to the JSON type in StarRocks. #49385
  • Optimized error messages for Files() when Access Key ID and Secret Access Key are missing. #49090
  • information_schema.columns supports the GENERATION_EXPRESSION field. #49734

Bug Fixes

Fixed the following issues:

  • Downgrading a v3.3 shared-data cluster to v3.2 after setting the Primary Key table property "persistent_index_type" = "CLOUD_NATIVE" causes a crash. #48149
  • Exporting data to CSV files using SELECT INTO OUTFILE may cause data inconsistency. #48052
  • Queries encounter failures during concurrent query execution. #48180
  • Queries would hang due to a timeout in the Plan phase without exiting. #48405
  • After disabling index compression for Primary Key tables in older versions and then upgrading to v3.2.9, accessing page_off information causes an array out-of-bounds crash. #48230
  • BE crash caused by concurrent execution of ADD/DROP COLUMN operations. #49355
  • Queries against negative TINYINT values in ORC format files return None on the aarch64 architecture. #49517
  • If the disk write operation fails, failures of l0 snapshots for Primary Key Persistent Index may cause data loss. #48045
  • Partial Update in Column mode for Primary Key tables fails under scenarios with large-volume data updates. #49054
  • BE crash caused by Fast Schema Evolution when downgrading a v3.3.0 shared-data cluster to v3.2.9. #42737
  • partition_linve_nubmer does not take effect. #49213
  • The conflict between index persistence and compaction in Primary Key tables could cause clone failures. #49341
  • Modifications of partition_line_number using ALTER TABLE do not take effect. #49437
  • Rewrite of CTE distinct grouping sets generates an invalid plan. #48765
  • RPC failures polluted the thread pool. #49619
  • authentication failure issues when loading files from AWS S3 via PIPE. #49837

Behavior Changes

  • Added a check for the meta directory in the FE startup script. If the directory does not exist, it will be automatically created. #48940
  • Added a memory limit parameter load_process_max_memory_hard_limit_ratio for data loading. If memory usage exceeds the limit, subsequent loading tasks will fail. #48495

3.3.2

08 Aug 08:14
857dd73
Compare
Choose a tag to compare

Release date: August 8, 2024

New Features

  • Supports renaming columns within StarRocks internal tables. #47851

  • Supports reading Iceberg views. Currently, only Iceberg views created through StarRocks are supported. #46273

  • [Experimental] Supports adding and removing fields of STRUCT-type data. #46452

  • Supports specifying the compression level for ZSTD compression format during table creation. #46839

  • Added the following FE dynamic parameters to limit table boundaries. #47896

    Including:

    • auto_partition_max_creation_number_per_load
    • max_partition_number_per_table
    • max_bucket_number_per_partition
    • max_column_number_per_table
  • Supports runtime optimization of table data distribution, ensuring optimization tasks do not conflict with DML operations on the table. #43747

  • Added an observability interface for the global hit rate of Data Cache. #48450

  • Added the SQL function array_repeat. #47862

Improvements

  • Optimized the error messages for Routine Load failures due to Kafka authentication failures. #46136 #47649

  • Stream Load supports using \t and \n as row and column delimiters. Users do not need to convert them to their hexadecimal ASCII codes. #47302

  • Optimized the asynchronous statistics collection method for write operators, addressing the issue of increased latency when there are many import tasks. #48162

  • Added the following BE dynamic parameters to control resource hard limits during loading, reducing the impact on BE stability when writing a large number of tablets. #48495

    Including:

    • load_process_max_memory_hard_limit_ratio
    • enable_new_load_on_memory_limit_exceeded
  • Added consistency checks for Column IDs within the same table to prevent Compaction errors. #48498

  • Supports persisting PIPE metadata to prevent metadata loss due to FE restarts. #48852

Bug Fixes

  • The process could not end when creating a dictionary from an FE Follower. #47802
  • Inconsistent information returned by the SHOW PARTITIONS command in shared-data clusters and shared-nothing clusters. #48647
  • Data errors caused by incorrect type handling when loading data from JSON fields to ARRAY<BOOLEAN> columns. #48387
  • The query_id column in information_schema.task_runs cannot be queried. #48876
  • During Backup, multiple requests for the same operation are submitted to different Brokers, causing request errors. #48856
  • Downgrading to versions earlier than v3.1.11 or v3.2.4 causes Primary Key table index decompression failures, leading to query errors. #48659

Downgrade Notes

If you have used the renaming column feature, you must rename the columns to their original names before downgrading your cluster to an earlier version. You can check the audit log of your cluster after upgrading to identify any ALTER TABLE RENAME COLUMN operations and the original names of the columns.

3.1.14

30 Jul 03:20
d8e1fc5
Compare
Choose a tag to compare

Release date: July 29, 2024

Improvements

  • Stream Load now supports using \t and \n as row and column delimiters. Users do not need to convert them to their hexadecimal ASCII codes. #47302

Bug Fixes

Fixed the following issues:

  • Frequent INSERT and UPDATE operations on Primary Key tables may cause write and query delays in the database. #47838
  • When a Primary Key table encounters data persistence failures, the persistent index may fail to capture the error, leading to data loss and reporting the error "Insert found duplicate key". #48045
  • Materialized views may report insufficient permissions when refreshed. #47561
  • Materialized view reports the error "For input string" when refreshed. #46131
  • During materialized view refresh, the lock is held excessively long, causing the Leader FE to be restarted by the deadlock detection script. #48256
  • Queries against views with the IN clause in its definition may return inaccurate results. #47484
  • Global Runtime Filter causes incorrect results. #48496
  • MySQL protocol COM_CHANGE_USER does not support conn_attr. #47796

Behavior Changes

  • When users create a non-partitioned table without specifying the bucket number, the minimum bucket number the system sets for the table is 16 (instead of 2 based on the formula 2*BE or CN count). If users want to set a smaller bucket number when creating a small table, they must set it explicitly. #47005

3.3.1

19 Jul 03:31
2b87854
Compare
Choose a tag to compare

Release date: July 18, 2024

New Features

  • [Preview] Supports temporary tables.
  • [Preview] JDBC Catalog supports Oracle and SQL Server.
  • [Preview] Unified Catalog supports Kudu.
  • Loading data into Primary Key tables with INSERT INTO supports partial updates in column mode.
  • User-defined variables support the ARRAY type. #42631
  • Stream Load supports converting JSON-type data and loading it into columns of STRUCT/MAP/ARRAY types. #45406
  • Supports global dictionary cache.
  • Supports deleting partitions in batch. #44744
  • Supports queries on Iceberg views. #46273
  • Supports managing column-level permissions in Apache Ranger. (Column-level permissions for materialized views and views must be set under the table object.) #47702

Improvements

  • Optimized the IdChain hashcode implementation to reduce the FE restart time. #47599
  • Improved error messages for the csv.trim_space parameter in the FILES() function, checking for illegal characters and providing reasonable prompts. #44740
  • Stream Load supports using \t and \n as row and column delimiters. Users do not need to convert them to their hexadecimal ASCII codes. #47302

Bug Fixes

Fixed the following issues:

  • Schema Change failures due to file location changes caused by Tablet migration during the Schema Change process. #45517
  • Cross-cluster Data Migration Tool fails to create tables in the target cluster due to control characters such as \, \r in the default values of fields. #47861
  • Persistent bRPC failures after BE restarts. #40229
  • The user_admin role can change the root password using the ALTER USER command. #47801
  • Primary key index write failures cause data write errors. #48045

Behavior Changes

  • Intermediate result spilling is enabled by default when sinking data to Hive and Iceberg. #47118
  • Changed the default value of the BE configuration item max_cumulative_compaction_num_singleton_deltas to 500. #47621
  • When users create a partitioned table without specifying the bucket number, if the number of partitions exceeds 5, the rule for setting the bucket count is changed to max(2*BE or CN count, bucket number calculated based on the largest historical partition data volume). The previous rule was to calculate the bucket number based on the largest historical partition data volume). #47949

Downgrade notes

To downgrade a cluster from v3.3.1 or later to v3.2, users must clean all temporary tables in the cluster by following these steps:

  1. Disallow users to create new temporary tables:

    ADMIN SET FRONTEND CONFIG("enable_experimental_temporary_table"="false"); 
  2. Check if there are any temporary tables in the cluster:

    SELECT * FROM information_schema.temp_tables;
  3. If there are temporary tables in the system, clean them up using the following command (the SYSTEM-level OPERATE privilege is required):

    CLEAN TEMPORARY TABLE ON SESSION 'session';

3.2.9

11 Jul 12:23
63ce1bd
Compare
Choose a tag to compare

New Features

  • Paimon tables now support DELETE Vectors. #45866
  • Supports Column-level access control through Apache Ranger. #47702
  • Stream Load can automatically convert JSON strings into STRUCT/MAP/ARRAY types during loading. #45406
  • JDBC Catalog now supports Oracle and SQL Server. #35691

Improvements

  • Improved privilege management by restricting user_admin role users from resetting the password of the root user. #47801
  • Stream Load now supports using \t and \n as row and column delimiters. Users do not need to convert them to their hexadecimal ASCII codes. #47302
  • Optimized memory usage during data loading. #47047
  • Supports masking authentication information for the Files() function in audit logs. #46893
  • Hive tables now support the skip.header.line.count property. #47001
  • JDBC Catalog supports more data types. #47618

Bug Fixes

Fixed the following issues:

  • BE crash caused by ALTER TABLE ADD COLUMN after upgrading a shared-data cluster from v3.2.x to v3.3.0 and then rolling it back. #47826
  • Tasks initiated through SUBMIT TASK showed a Running status indefinitely in the QueryDetail interface. #47619
  • Forwarding queries to the FE Leader node caused a null pointer exception. #47559
  • SHOW MATERIALIZED VIEWS with WHERE conditions caused a null pointer exception. #47811
  • Vertical Compaction fails for Primary Key tables in shared-data clusters. #47192
  • Improper handling of I/O Error when sinking data to Hive or Iceberg tables. #46979
  • Table properties do not take effect when whitespaces are added to their values. #47119
  • BE crash caused by concurrent migration and Index Compaction operations on Primary Key tables. #46675

3.3.0

21 Jun 12:11
19a3f66
Compare
Choose a tag to compare

New Features and Improvements

Shared-data Cluster

  • Optimized the performance of Schema Evolution in shared-data clusters, reducing the time consumption of DDL changes to a sub-second level. For more information, see Schema Evolution.
  • To satisfy the requirement for data migration from shared-nothing clusters to shared-data clusters, the community officially released the StarRocks Data Migration Tool. It can also be used for data synchronization and disaster recovery between shared-nothing clusters.
  • [Preview] AWS Express One Zone Storage can be used as storage volumes, significantly improving read and write performance. For more information, see CREATE STORAGE VOLUME.
  • Optimized the garbage collection (GC) mechanism in shared-data clusters. Supports manual compaction for data in object storage. For more information, see Manual Compaction.
  • Optimized the Publish execution of Compaction transactions for Primary Key tables in shared-data clusters, reducing I/O and memory overhead by avoiding reading primary key indexes.

Data Lake Analytics

  • Data Cache enhancements
    • Added the Data Cache Warmup command CACHE SELECT to fetch hotspot data from data lakes, which speeds up queries and minimizes resource usage. CACHE SELECT can work with SUBMIT TASK to achieve periodic cache warmup. This feature supports both tables in external catalogs and internal tables in shared-data clusters.
    • Added metrics and monitoring methods to enhance the observability of Data Cache.
  • Parquet reader performance enhancements
    • Optimized Page Index, significantly reducing the data scan size.
    • Reduced the occurrence of reading unnecessary pages when Page Index is used.
    • Uses SIMD to accelerate the computation to determine whether data rows are empty.
  • ORC reader performance enhancements
    • Uses column ID for predicate pushdown to read ORC files after Schema Change.
    • Optimized the processing logic for ORC tiny stripes.
  • Iceberg table format enhancements
    • Significantly improved the metadata access performance of the Iceberg Catalog by refactoring the parallel Scan logic. Resolved the single-threaded I/O bottleneck in the native Iceberg SDK when handling large volumes of metadata files. As a result, queries with metadata bottlenecks now experience more than a 10-fold performance increase.
    • Queries on Parquet-formatted Iceberg v2 tables support equality deletes.
  • [Experimental] Paimon Catalog enhancements
    • Materialized views created based on the Paimon external tables now support automatic query rewriting.
    • Optimized Scan Range scheduling for queries against the Paimon Catalog, improving I/O concurrency.
    • Support for querying Paimon system tables.
    • Paimon external tables now support DELETE Vectors, enhancing query efficiency in update and delete scenarios.
  • Enhancements in collecting external table statistics
    • ANALYZE TABLE can be used to collect histograms of external tables, which helps prevent data skews.
    • Supports collecting statistics of STRUCT subfields.
  • Table sink enhancements
    • The performance of the Sink operator is doubled compared to Trino.
    • Data can be sunk to Textfile- and ORC-formatted tables in Hive catalogs and storage systems such as HDFS and cloud storage like AWS S3.
  • [Preview] Supports Alibaba Cloud MaxCompute catalogs, with which you can query data from MaxCompute without ingestion and directly transform and load the data from MaxCompute by using INSERT INTO.
  • [Experimental] Supports ClickHouse Catalog.
  • [Experimental] Supports Kudu Catalog.

Performance Improvement and Query Optimization

  • Optimized performance on ARM.
    Significantly optimized performance for ARM architecture instruction sets. Performance tests under AWS Graviton instances showed that the ARM architecture was 11% faster than the x86 architecture in the SSB 100G test, 39% faster in the Clickbench test, 13% faster in the TPC-H 100G test, and 35% faster in the TPC-DS 100G test.
  • Spill to Disk is in GA. Optimized the memory usage of complex queries and improved spill scheduling, allowing large queries to run stably without OOM.
  • [Preview] Supports spilling intermediate results to object storage.
  • Supports more indexes.
  • Improved the performance and memory usage of Bitmap functions. Added the capability to export Bitmap data to Hive by using Hive Bitmap UDFs.
  • [Preview] Supports Flat JSON. This feature automatically detects JSON data during data loading, extracts common fields from the JSON data, and stores these fields in a columnar manner. This improves JSON query performance, comparable to querying STRUCT data.
  • [Preview] Optimized global dictionary. provides a dictionary object to store the mapping of key-value pairs from a dictionary table in the BE memory. A new dictionary_get() function is now used to directly query the dictionary object in the BE memory, accelerating the speed of querying the dictionary table compared to using the dict_mapping() function. Furthermore, the dictionary object can also serve as a dimension table. Dimension values can be obtained by directly querying the dictionary object using dictionary_get(), resulting in faster query speeds than the original method of performing JOIN operations on the dimension table to obtain dimension values.
  • [Preview] Supports Colocate Group Execution. significantly reduces memory usage for executing Join and Agg operators on the colocated tables, which ensures that large queries can be executed more stably.
  • Optimized the performance of CodeGen. JIT is enabled by default, which achieves a 5X performance improvement for complex expression calculations.
  • Supports using vectorization technology to implement regular expression matching, which reduces the CPU consumption of the regexp_replace function.
  • Optimized Broadcast Join so that the Broadcast Join operation can be terminated in advance when the right table is empty.
  • Optimized Shuffle Join in scenarios of data skew to prevent OOM.
  • When an aggregate query contains Limit, multiple Pipeline threads can share the Limit condition to prevent compute resource consumption.

Storage Optimization and Cluster Management

  • Enhanced flexibility of range partitioning. Three time functions can be used as partitioning columns. These functions convert timestamps or strings in the partitioning columns into date values and then the data can be partitioned based on the converted date values.
  • FE memory observability. Provides detailed memory usage metrics for each module within the FE to better manage resources.
  • Optimized metadata locks in FE. Provides Lock manager to achieve centralized management for metadata locks in FE. For example, it can refine the granularity of metadata lock from the database level to the table level, which improves load and query concurrency. In a scenario of 100 concurrent load jobs, the load time can be reduced by 35%.
  • Supports adding labels on BEs. Supports adding labels on BEs based on information such as the racks and data centers where BEs are located. It ensures even data distribution among racks and data centers, and facilitates disaster recovery in case of power failures in certain racks or faults in data centers.
  • Optimized the sort key. Duplicate Key tables, Aggregate tables, and Unique Key tables all support specifying sort keys through the ORDER BY clause.
  • [Experimental] Optimized the storage efficiency of non-string scalar data. This type of data supports dictionary encoding, reducing storage space usage by 12%.
  • Supports size-tiered compaction for Primary Key tables. Reduces write I/O and memory overhead during compaction. This improvement is supported in both shared-data and shared-nothing clusters.
  • Optimized read I/O for persistent indexes in Primary Key tables. Supports reading persistent indexes by a smaller granularity (page) and improves the persistent index's bloom filter. This improvem...
Read more

Release notes 3.1.13

26 Jun 04:50
d9d3ed7
Compare
Choose a tag to compare

Release date: June 26, 2024

Improvements

  • The Broker process supports access to Tencent Cloud COS Posix buckets. Users can load data from COS Posix buckets using Broker Load or unload data to COS Posix buckets using the SELECT INTO OUTFILE statement. #46597
  • Supports viewing comments of Hive tables in Hive Catalogs using SHOW CREATE TABLE. #37686
  • Optimized the evaluation time of Conjunct in WHERE clauses, such as multiple LIKE clauses on the same column or CASE WHEN expressions. #46914

Bug Fixes

Fixed the following issues:

  • DELETE statements fail in shared-data clusters if there are excessive number of partitions to be deleted. #46229