Releases: yugabyte/yugabyte-db
v1.2.12 (Jul 03, 2019)
Overview of Changes
[IMPORTANT] This version includes a backward incompatible file format change for YSQL. This means that if you have an existing cluster with
YSQL schema, then you will not be able to connect to the YSQL database after upgrading to v1.2.12. There are two ways to work around this problem:
- If you don't care about preserving your existing data, then you can delete your older cluster, upgrade to v1.2.12 and create a new cluster.
- If you want to continue using your existing data, then please save your older data (in the form of SQL statements), delete the older cluster, upgrade to v1.2.12, create a new cluster and then load the previously saved data.
YSQL Changes
- [YSQL] Fix scan operator when range key is not fully-specified.#1576
- [YSQL] Fix ORDER BY range column of a secondary index.#1591
- [YSQL] Add YSQL RPCs to tserver utilz page.#1446
System Improvements
- Resolve ABA problem in LockFreeStackResolve ABA problem in LockFreeStack.#1561
- Fix recursive locking in Batcher.#1584
- Use boost::atomic for 16-bytes structures.#1189
- Fix integer overflow during Raft log read path.#1606
- Fix concurrent access to primary table info in RaftGroupMetadata.#1631
- A new priority-aware thread pool implementation for compactions and flushes.#1314
- Create mem trackers that reflects TC Malloc stats.#1633
- Make sure we don't read an invalid replicate index from the footer.#1625
Performance Benchmarks
This section gives an overview of the performance of this release. The benchmarks were done on the following setup:
- 3 nodes with 16-vCPUs
- Replication factor = 3
- Each key-value is ~64 bytes (combined)
- See setup details for more info
Summary
API | Workload | Type | Throughput | Latency | Avg CPU on DB node |
---|---|---|---|---|---|
YCQL | KeyValue | 100% Reads | 218K | 1.17ms | 48% |
YCQL | KeyValue | 100% Writes | 73K | 3.5ms | 44% |
YCQL | Batched Writes | 100% Writes | 247K | 26ms | 52% |
YCQL | Secondary Index | 100% Reads | 187K | 1.4ms | 44% |
YCQL | Secondary Index | 100% Writes | 5K | 12.9ms | 51% |
Details
YCQL KeyValue
Workload CassandraKeyValue with 256 writers and 0 readers:
+--------------------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| Metric | mean | min | max | std.dev | median | 1% | 5% | 10% | 90% | 95% | 99% |
| Read throughput, ops/sec | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Read latency, ms/op | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Write throughput, ops/sec | 73037.05 | 68884.95 | 74102.43 | 1211.67 | 73480.55 | 68884.95 | 68884.95 | 71993.35 | 74051.57 | 74102.43 | 74102.43 |
| Write latency, ms/op | 3.50 | 3.45 | 3.72 | 0.06 | 3.48 | 3.45 | 3.45 | 3.45 | 3.55 | 3.72 | 3.72 |
| Load tester CPU, user, % | 16.91 | 14.90 | 18.10 | 0.88 | 17.30 | 14.90 | 14.91 | 15.18 | 17.70 | 18.08 | 18.10 |
| Load tester CPU, system, % | 9.20 | 7.60 | 10.10 | 0.83 | 9.65 | 7.60 | 7.60 | 7.72 | 9.90 | 10.09 | 10.10 |
| Cluster node CPU, user, % | 32.93 | 23.80 | 38 | 3.45 | 32.45 | 23.80 | 24.31 | 30.13 | 37.20 | 37.49 | 38 |
| Cluster node CPU, system, % | 15.43 | 12.70 | 16.60 | 0.82 | 15.40 | 12.70 | 13.22 | 14.43 | 16.30 | 16.50 | 16.60 |
+--------------------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
Workload CassandraKeyValue with 192 writers and 16 readers:
+--------------------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| Metric | mean | min | max | std.dev | median | 1% | 5% | 10% | 90% | 95% | 99% |
| Read throughput, ops/sec | 18493.93 | 17156.62 | 19190.41 | 587.15 | 18606.10 | 17156.62 | 17156.62 | 17440.30 | 19151.33 | 19190.41 | 19190.41 |
| Read latency, ms/op | 0.87 | 0.83 | 0.93 | 0.03 | 0.86 | 0.83 | 0.83 | 0.83 | 0.92 | 0.93 | 0.93 |
| Write throughput, ops/sec | 60571.82 | 58544.09 | 62509.31 | 983.23 | 60550.72 | 58544.09 | 58544.09 | 59035.93 | 62380.73 | 62509.31 | 62509.31 |
| Write latency, ms/op | 3.17 | 3.07 | 3.28 | 0.05 | 3.17 | 3.07 | 3.07 | 3.08 | 3.25 | 3.28 | 3.28 |
| Load tester CPU, user, % | 17.68 | 16 | 20.70 | 0.87 | 17.55 | 16 | 16.06 | 17.20 | 18.39 | 20.58 | 20.70 |
| Load tester CPU, system, % | 8.73 | 8.10 | 10.40 | 0.54 | 8.50 | 8.10 | 8.11 | 8.22 | 9.58 | 10.36 | 10.40 |
| Cluster node CPU, user, % | 35.62 | 32.90 | 38.80 | 1.71 | 34.95 | 32.90 | 33.41 | 33.72 | 38.10 | 38.39 | 38.80 |
| Cluster node CPU, system, % | 15.38 | 14.90 | 15.80 | 0.19 | 15.40 | 14.90 | 15.01 | 15.10 | 15.60 | 15.70 | 15.80 |
+--------------------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
Workload CassandraKeyValue with 128 writers and 64 readers:
+--------------------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| Metric | mean | min | max | std.dev | median | 1% | 5% | 10% | 90% | 95% | 99% |
| Read throughput, ops/sec | 71301.76 | 64468.86 | 78149.80 | 6074.55 | 69364.13 | 64468.86 | 64468.86 | 64563.72 | 78080.94 | 78149.80 | 78149.80 |
| Read latency, ms/op | 0.90 | 0.82 | 0.99 | 0.08 | 0.92 | 0.82 | 0.82 | 0.82 | 0.99 | 0.99 | 0.99 |
| Write throughput, ops/sec | 42974.61 | 40464.12 | 45473.25 | 1883.46 | 42860 | 40464.12 | 40464.12 | 40927.76 | 45053.88 | 45473.25 | 45473.25 |
| Write latency, ms/op | 2.98 | 2.82 | 3.16 | 0.13 | 2.98 | 2.82 | 2.82 | 2.84 | 3.13 | 3.16 | 3.16 |
| Load tester CPU, user, % | 21.46 | 19.10 | 23.30 | 1.28 | 21.60 | 19.10 | 19.15 | 20 | 23.08 | 23.29 | 23.30 |
| Load tester CPU, system, % | 10.17 | 9.20 | 10.90 | 0.56 | 10.30 | 9.20 | 9.21 | 9.31 | 10.80 | 10.89 | 10.90 |
| Cluster node CPU, user, % | 38.31 | 28.30 | 41.60 | 3.01 | 39.80 | 28.30 | 34.10 | 34.34 | 41.09 | 41.20 | 41.60 |
| Cluster node CPU, system, % | 13.11 | 11.10 | 14 | 0.51 | 13.15 | 11.10 | 11.66 | 12.80 | 13.50 | 13.60 | 14 |
+--------------------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
Workload CassandraKeyValue with 64 writers and 128 readers:
+--------------------------------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+-----------+
| Metric | mean | min | max | std.dev | median | 1% | 5% | 10% | 90% | 95% | 99% |
| Read throughput, ops/sec | 113115.50 | 111032.59 | 114690.37 | 1211.91 | 113593.04 | 111032.59 | 111032.59 | 111280.88 | 114639.78 | 114690.37 | 114690.37 |
| Read latency, ms/op | 1.13 | 1.11 | 1.15 | 0.01 | 1.13 | 1.11 | 1.11 | 1.12 | 1.15 | 1.15 | 1.15 |
| Write throughput, ops/sec | 21349.23 | 20717.49 | 21753.92 | 264.27 | 21335.10 | 20717.49 | 20717.49 | 20915.45 | 21699.52 | 21753.92 | 21753.92 |
| Write latency, ms/op | 3.00 | 2.94 | 3.09 | 0.04 | 3 | 2.94 | 2.94 | 2.95 | 3.06 | 3.09 | 3.09 |
| Load tester CPU, user, % | 23.54 | 21.80 | 27.90 | 1.24 | 23.50 | 21.80 | 21.81 | 22.03 | 24.36 | 27.7...
v1.2.4 (Apr 02, 2019)
Overview of Changes
[IMPORTANT] This version includes a backward incompatible file format change for YSQL. This means that if you have an existing cluster with
YSQL schema, then you will not be able to connect to the YSQL database after upgrading to v1.2.4. There are two ways to work around this problem:
- If you don't care about preserving your existing data, then you can delete your older cluster, upgrade to v1.2.4 and create a new cluster.
- If you want to continue using your existing data, then please save your older data (in the form of SQL statements), delete the older cluster, upgrade to v1.2.4, create a new cluster and then load the previously saved data.
YSQL Changes
- Added support for primary keys. It is now possible to create a table with a primary key. #955
- Added support for temporary tables. #805
- Added support for CYCLE option in CREATE SEQUENCE statement. #993
- Enabled
SET TRANSACTION READ WRITE
statement. #1081 - Support RelationType in TableInfo to distinguish between system tables, user tables and user indexes. #906
Bug Fixes
- Fixed a crash in tserver that is observed while inserting null value into an indexed column. #945
- Fixed a bug where indexes on system catalog tables were not being updated during DDL. #1083
- Fixed detection of single row transactions on tables that have primary keys.
- Fixed MiniMaster startup race condition in test infrastructure. #1040
System Improvements
- Reduce per-connection overhead for cache preloading. #1090 #1091
- Faster release of sending buffers to reduce memory consumption when leader sends large updates to followers who are lagging behind. #1079
- Parallelize DNS resolution while filling system.peers and system.local tables #1000
- Script for post-processing test results and generating JSON-based result files.
- Improve stability of QLTransactionTest.IntentsCleanupAfterRestart. #1102
Key Commits
- [
f2ecaa1
] [YSQL] Fix single-row-txn detection after primary key change - [
90680ca
] [#1102]: Improve stability of QLTransactionTest.IntentsCleanupAfterRestart - [
a4c614f
] JSON-based test reports - [
33835b0
] [#1079]: Release sending buffers as soon as possible - [
1bc77da
] ENG-4682 (#906): Support RelationType (user table, index, system table) in TableInfo - [
1dedcd1
] ENG-4943 #945 [YSQL] Correct handling for NULL value in indexed column - [
465b6d6
] [YSQL] #1090 #1091 Reduce per-connection overhead for cache preloading - [
382b89c
] [YSQL] ENG-4601 (#805): Add support for temporary tables - [
5165f01
] #1081 [YSQL] Enable READ WRITE transaction - [
9f31c41
] ENG-4927: #1040: Fix MiniMaster startup race condition - [
be0908b
] [YSQL] #955: Handle primary key as an index - [
4b48e25
] ENG-4872: #1000: Parallel DNS resolution while filling system.peers and system.local tables - [
4096f59
] ENG-4900: Add external mini cluster test with TLS support - [
34ee0fc
] [YSQL] #1083: Handle sys catalog index updates - [
ac52116
] #993: [YSQL] Add support for CYCLE option in CREATE SEQUENCE - [
3149f36
] ENG-4363, #668: Support JSON operator on INSERT (Part 1 - Refactoring) - [
a3ea483
] - [
b3a60ee
] [yb-docker-ctl] Save initdb log (#1087) - [
b131fbc
] ENG-4888: #1031: Make YCQL index name optional - [
9d333f7
] #1064: Fix data race with YQL permissions cache - [
4a56fe1
] #1038: Change FLAGS_remote_boostrap_rate_limit_bytes_per_sec to FLAGS_remote_bootstrap_rate_limit_bytes_per_sec - [
56a6029
] #752: Add TLS encryption support to yb-admin. - [
d9b6385
] [YSQL] #1066: Fix memory leak in ResourceOwner - [
fb4c1a2
] Added yb-docker-ctl to CE (#1077) - [
046b4b6
] ENG-4855: #977: Handle restart read in YSQL - [
30725bf
] ENG-4343: #655: Pick transaction read time at tablet server when possible - [
0341b29
] [YSQL] #1067: Buffer create index write operations only for initdb - [
78ca75a
] [#1050]: Add Tablet Server capabilities - [
9d724d5
] ENG-4790: Removing most of yb-loadtester from repo due to migration to standalone yb-sample-apps repo - [
bbcc67b
] ENG-4891: Removing the SQL RPCs button. - [
14279cc
] [YCQL] #1042: Fix ASAN issue in YCQL executor restart - [
cc3584f
] ENG-4800: #952: Use call buffer for receive from socket - [
8715be3
] [YSQL] #1051: Bulk insert in initdb - [
987abc6
] ENG-4877 (#1009): yb-ctl enhancements - [
0f261a9
] [YSQL] 1049 ASAN reported memory leaks in Postgres - [
9eaf15b
] Add a new pattern for NFS directories: /Volumes/net - [
3a61698
] [#1041]: Skip dumping of finished call - [
a322d95
] [YSQL] #711 Add support for all datatypes - [
7e2c89c
] [#1030]: Add transactional retry writes tests 2) Second - [
request
]licated. Fixed by returning AlreadyPresent status and handling it in - [
callbac
] not handled correctly. For instance when request cannot be processed because of service shutdown, we could stop retrying to apply the operation. Fixed by correct handling of such errors. - [
509c5a2
] #921: Fixed: [YCQL] improve error messages related to index DDL - [
e48b7da
] ENG-4468: Always perform only one server rpc call for readiness check. - [
0f8fdd9
] [YSQL] ENG-4831 (#969): Enable drop cascade - [
85836b5
] Allow sp...
v1.2.0 (Mar 12, 2019)
Overview of Changes
Theme of this release: PostgreSQL, PostgreSQL, PostgreSQL! YSQL is a distributed PostgreSQL that can scale-out, tolerate failures and has no single point of failure.
Support has been added for a ton of Postgres functionality. The following is a list of some of the functionality:
DDL statements
- CREATE, DROP and TRUNCATE tables
Data types
- All primitive types including numeric types (integers and floats), text data types, byte arrays, date-time types
- Support for UUID and SERIAL
- Support for JSONB
DML statements
- INSERT, UPDATE, SELECT and DELETE statements
- JOIN, WHERE clauses, GROUP BY, ORDER BY, LIMIT, OFFSET and SEQUENCES
Transactions
- ABORT, ROLLBACK, BEGIN, END, and COMMIT
Miscellaneous
- Expressions: Built-in functions and operators
- VIEWs
- EXPLAIN PLAN
- PREPARE-BIND-EXECUTE
- JDBC Support
Key Commits
- [
aef1a1f
] ENG-4683 (#874): Fix user table UI to exclude transactions and sequences tables - [
c60921f
] ENG-4681 [YSQL] Support INTERVAL for date/time datatypes - [
4927d38
] [YSQL] ENG-4807 (#957) Fix logs wrongly reporting that YugaByte transactions are not enabled - [
4e69172
] ENG-4780 (#930): Fix postgres server crash while creating index on existing table with data - [
f004732
] #972: ENG-4808: Fixed TabletInvoker::SelectTabletServer - [
652bb5e
] [#959]: Groups threads by stack trace in /threadz - [
d33eaa9
] #665: [YSQL] Enable support for sequences - [
53a1331
] ENG-4801 (#944): yb-ctl improvements for easier onboarding - [
dce09da
] ENG-4585: #796: Created test that covers case when thread pool is not yet ready for intents cleanup - [
bb40833
] ENG-4468: (#871) Add support for checking if tserver is ready for IO requests. - [
e570c1c
] [ENG-3928] [#967] Wait for NFS-based paths to exist in run_tests_on_spark.py - [
3399b88
] [YSQL] #255: Separate YCQL, YSQL and YEDIS namespaces - [
064d366
] ENG-4749: #887: Handle failure of delete at start of iteration in PgLibPqTest.SerializableColoring test - [
88bb343
] #961 Fix instantiation of round-robin policy - [
1037c47
] ENG-4577: Log Replay Count Bugfix and Test #782 - [
57ca114
] ENG-4725: #932: Write RPC should take into account retryable_rpc_single_call_timeout_ms - [
e9424ab
] [YSQL] #943 Optimize single-row write transactions to avoid distributed txn path. - [
c545fb5
] ENG-4783: Misc fixes in shared lock manager - [
45bc122
] ENG-4783: Fixed LockBatch move ctor/assignment - [
3db5d55
] Cleanup of stray processes, NFS issues workaround, DXR integration, adjusting RPC timeout and using random PG ports in YSQL - [
36431db
] Update PostgreSQL code as of the following commit: - [
3952394
] [YSQL] ENG-4757: #902: Restart transaction when it was first executed operation and read restart is required - [
d563e50
] ENG-4577: Log Replay Count Bugfix and Test #782 - [
1ed9e95
] ENG-3558: #920: Replace our own implementation of VarInt with BIGNUM from OpenSSL - [
2f6dedc
] [#836][ENG-4638] Fix KEYS to not Surface Deleted Keys - [
7cf6ccd
] [#918]: Add a pool of pre-created transaction records to avoid a Raft round-trip for transaction creation on the write path - [
7b59cc8
] #897: Fixed yb-tserver failure on SELECT COUNT(column) where column contains null value - [
b0314eb
] [YCQL] #916 Making STATIC an unreserved-keyword. Removing REFERENCES from keyword list. - [
c886b86
] [YSQL] #917: Support DROP INDEX - [
81a80ab
] [YCQL] (#878) : Add uuid() builtin function support. - [
99cc736
] ENG-4672: Provide more information (version, - [
a101e74
] ENG-4656 (#852): Enabled pg_depend - [
c839f8c
] Avoid using NFS-shared local Maven repository directory for running Java tests on macOS - [
396ff88
] [#914]: Split doc_operation into multiple files - [
78776a5
] [YCQL] #835 Allow OFFSET to be used as column names and identifiers - [
362502d
] ENG-4636 (#834): Make transaction failure messages more user friendly - [
a746743
] #904: ENG-4735: Fixed race between deleting obsolete files and creating new output SST file - [
845cdb4
] ENG-4717: #891: Not submitted write operation should block tablet peer shutdown - [
1125d1e
] #771 [YEDIS] Close connection on pub/sub limit - [
ae1e30c
] #768 Ping in subscribe mode should return a multi-bulk string - [
dd97847
] [YSQL] ENG-4734 Fix data race with ysql_catalog_version #903 - [
08c9bbf
] ENG-4410 (#696): Retry resolving master addresses instead of erroring out immediately - [
3ce7386
] ENG-4680 (#873): Save postgres logs in tserver/logs directory - [
1dd8e4b
] ENG-4692 (#868): Enable access share mode for table lock - [
63a0d61
] ENG-4692 (#868): Enable support for read only transactions - [
3779a86
] #862: ENG-4728: Use libbacktrace only in debug builds and in single-threaded mode to avoid high memory consumption - [
827ff02
] [YSQL] Basic framework for cache consistency with multi-head DDLs #679 - [
299c718
] Add pre- for leader election logging - [
bfd2019
] #895: Rate-limit the warning of unsupported YCQL consistency level. - [
ff38980
] Break the long test TestPgRegressPgTypes into two separate tests - [
492c67c
] Bump up master memory limit threshold for ASAN and TSAN - [[
abc6a2e
](https://github.com/YugaByte/yugabyte-db/commit/abc6a2ead184c764a7732cfb2d...
v1.1.0 (Sep 17, 2018)
Overview of Changes
- Distributed multi-shard/multi-table ACID transactions!
- Global & consistent secondary indexes
- UNIQUE constraint on secondary indexes
- Native JSON data type
- Public/private IP bindings for multi/hybrid cloud or multi-region deployments
- User authentication
- Redis-compatibility features added to our YEDIS API:
- “Read from followers” for tunable read consistency
- Support for multiple databases or namespaces
- Support for MONITOR, EXPIRE, TTL
- Bug fixes and performance enhancements
- Plus excellent progress on the Postgres-compatible SQL API!
Key Commits
- [
068f64f
] Fixes #49 #111 #465 Efficiently support IN conditions for clustering columns - [
92d442a
] [#386] Switch ResettableHeartbeater with Periodic timer - [
4ff9e7c
] Remove TTL from init marker on TS type. - [
7b28dd7
] Cap max pre-allocated file size for compactions at 1G - [
887820d
] Fix hang during tserver shutdown - [
afef8f2
] Fixes #469: Optimize QLResultSet to serialize rows results directly - [
2fdad35
] #456: Update committed hybrid time from WAL records - [
7e4108a
] #467: Fix several issues with remote bootstrap - [
0d9feb2
] #338 Preliminary support for Redis Lists - [
d902325
] #334 Redis (P)ExpireAt Support - [
d4865d4
] #460: Add handling of controller status in GetMasterEntryForHosts - [
19c9fed
] Add memory limit to ram ratio (#458) - [
c6538a8
] Added broadcast address for stable pod IDs in K8s. This fixes master/tserver pod failure cases. (#464) - [
cdbf60c
] [#289] Cleanup intents for aborted transactions in the compaction path - [
a0a2072
] #459: Upgrading k8s yb cluster fails when bind address is private ip of pod. - [
8438e9f
] #418: Increase default network rate for remote bootstrap - [
653871a
] Prevent PeerMessageQueue from being deleted while Peer could use it - [
6022cae
] Add loadbalancer option (#450) - [
154810c
] (#418) Rate limiter for remote bootstrap - [
e4a55b9
] #451: Fix double reply in case of read from follower during startup - [
5842ed6
] Expose raw size in tablet-server metrics #439 - [
3bd4f37
] #451: Check result of weak_ptr lock, before doing actual call in LocalYBInboundCall - [
900a733
] Fix CassandraSecondaryIndex degradation - [
f8a83c2
] Use scoped_refptr for pggate classes so we can get rid of maps from raw to shared pointers - [
41b9a6e
] #384 Rename ApplyAsync to ApplyOperation and get rid of the unused apply thread pool - [
6cc4bfb
] Reverse scan should handle intents. - [
48a3d8f
] Set in-memory master address list in tserver after a full move. - [
5a460b8
] #444: IntentAwareIterator is missing intents even during a forward scan - [
d355997
] Fixes #445 Invalid start_doc_key error with IN condition and paging state - [
78c4c26
] Split tables in YB /tables view by system/index/user - [
e33a2bb
] IntentAwareIterator could miss intents from the same transaction - [
e940d61
] #403 Support Deleting and Recreating a Redis Table online. - [
2a4fb09
] #432: Add "transactions" and "is_unique" columns to system_schema.indexes - [
898e432
] Integrate basic PostgreSQL statements from the external PostgreSQL process with the internal YugaByte PostgreSQL API - [
82884f9
] Skip cleanup when transaction is not loaded - [
4be4c9b
] Fixes #441: Return selected columns of "select * ..." with index in the same order of the table columns. - [
b2164ff
] Fixes #434: Deletes of specific range key incorrectly deleting all rows for that partition key - [
b052e13
] Fix to execute GetSegmentsSnapshot using lock - [
1c6e237
] #428: Support remote bootstrap for very large tablets - [
eb04e90
] Add file_macro to CCACHE_SLOPPINESS for better ccache hit ratio - [
36953b4
] #388: Support batch request of DMLs on table with secondary index - [
d55bad6
] Fix handling of write intents for aborted transaction - [
73a5e9d
] Ignore error when removing index from the indexed table while dropping an index. - [
9d0085a
] [#427] Change CQL wire protocol to move the JSONB type - [
b5d66ea
] Make master and tserver have their own overrides (#426) - [
94be2b1
] Fix UpdateTransaction call during cleanup - [
03a3e47
] #423: Truncate indexes when truncating a table - [
7e82039
] Remove intents of aborted transactions - [
8758c9f
] #343 Implement Select and CreateDB commands. - [
026b582
] Allow overriding the UUID to be used for new instance metadata for a fresh master or tserver - [
03079e3
] Allow remote compiler execution mode for Postgres build - [
8765bab
] #415: End a query always when LIMIT clause is hit. - [
e65b6ed
] #397: Added ability to specify multiple endpoints for master - [
9bc7dc1
] #410: Remove unused CQLRpcServerEnv - [
7b925bd
] Support for SELECT in Postgres API - [
74751e8
] #407: Refactor CQL write dependency check - [[
ee502c7
](https://github.com/YugaBy...
v1.0.5 (Jul 27, 2018)
Overview of changes
The following are some of the key fixes and features in this release:
- Basic helm chart support to deploy Kubernetes clusters
- Various bug fixes and performance improvements
- YEDIS
- Auth support for Redis
- Safety flags to disable dropping data, for example using commands such as
FLUSHALL
- YCQL
- Added support for "broadcast address" to enable public and private IP support
- Ability to return fine-grained errors in CAS (compare and set) and batch statements
- Support for weak secondary indexes for higher ingest performance
Key Commits
- [
76a3550
] #401: Clean up YCQL batch execution - [
ad4abee
] #382: Unable to initialize catalog manager with docker. - [
6db30ec
] Updated the pom file to include new Cassandra driver changes. - [
5d1774d
] Clean up the use of SQL statement string in statement processor - [
083465c
] IsLoadBalanced check made per cluster. - [
e9606c6
] (#375) Optimize queries with IN list to execute in parallel when reasonable - [
2048e79
] #385: Add CassandraUniqueSecondaryIndex workload - [
048e821
] Fixed snapshot files collecting in the RemoteBootstrapSession and related test. - [
0dcb7f0
] #377: Move unique index duplicate-value check to index tablet. - [
b5502ef
] In TabletPeer, we should not access try to call log() before the log is initialized - [
7cb3df0
] Add batch update test for weak secondary index - [
76aac82
] Specify correct parent mem tracker for outbound connections - [
189260f
] Public/private IP support in YB - [
059317c
] #350 Avoid blocking in Peer::Close() - [
d898ee1
] A macro-based DSL for C-to-C++ APIs for PostgreSQL integration - [
7e6fddd
] [ENG-3454] Don't close Jedis after each pipeline batch. - [
5a062dd
] Improve performance when sending peer's requests (#350) - [
a921f98
] (#347) [YCQL] provide mechanism for DML operations to return finer-grained errors - [
b2fa67b
] ENG-3580: Fix abort scheduled async RPC task - [
c0abc0f
] #373: Persist index info in tablet metadata. - [
eca8f18
] [ENG-3484] #335 Implement Redis Monitor command - [
28b4386
] (#374) Add suport for partition_hash() builtin function. - [
a5a78cd
] [ENG-1735] #283 Implement Auth support for Redis - [
93cd133
] [ENG-3543] #357 Fix error messages for Redis - [
0197104
] ENG-3546: CQL TLS Encryption - [
2848cd6
] ENG-3326: Fixed reverse scan infinite loop issue. - [
10ef4e2
] [#145] Sum for Varint or decimal columns - [
5985d82
] ENG-3564: #361 Support for Alter Role - [
b4f2b82
] #366: Update README.md to have a section for running the C++ and Java tests. - [
7e8e85e
] (#349) Enhance YCQL grammar to support interchanging order of OFFSET and LIMIT clauses. - [
a8dd107
] #362: Cache index table metadata in tserver when updating an index - [
f31cfc9
] ENG-3472: #346: Clean committed transaction in TransactionParticipant - [
16f1d6f
] ENG-3529 #351: Refresh master leader when server queue is full - [
cedfae3
] ENG-3527: Implement weak secondary index - [
b595fe5
] #345 Fixed the return type of "PING" by adding a flag for returning a Simple String vs Bulk String - [
2bd0312
] #352: CREATE INDEX syntax changes - [
81ac392
] Clean up the C API for PostgreSQL integration with YB data fabric and use YBCStatus - [
50fb6d2
] ENG-3493: add ELSE ERROR to YCQL - [
0f8ca9c
] Remove some unnecessary functionality from yb_fdw - [
5009728
] (#339) Support YCQL offset clause in docdb and our paging state. - [
a5719bd
] Generate PostgreSQL catalog script for YugaByte DB - [
9343596
] (#339) Add grammar and semantic analysis for offset clause. - [
6847aff
] ENG-1756: Support Redis "CLUSTER SLOTS" - [
708ea83
] ENG-2929 : Shell master start should not allow master_addresses flag to be set. - [
6716483
] Set up a placeholder foreign data wrapper yb_fdw using file_fdw - [
607173b
] Allow specifying YB master addresses to use inside pggate with an env var - [
160ab8e
] Refactor PostgresSecondaryIndex workload. - [
3aa2066
] ENG-3453: Settings for TLS encryption - [
8c229db
] Add load-balancing test for query with secondary index - [
d2366eb
] ENG-3475: Remove compaction filter for provisional DB - [
a062473
] ENG-3481: added option to disable flushall in redis (#337)
v1.0.4 (Jun 20, 2018)
Overview of changes
Here are some key features and fixes:
- Support for unique constraints to ensure that a column does not have duplicate values in YCQL.
- Support fine grained selection and update of JSON attributes, built-in JSON operators in YCQL.
- Support for AVERAGE, blob conversion functions in YCQL.
- Ability to read from the local datacenter when using YEDIS.
- Support ZSCORE in YEDIS.
- Support bounded staleness for follower reads.
- Presto integration.
Key Commits
- [
ab0611e
] ENG-3453: Add TLS support to RPC layer - [
70fcb1b
] Add a workload to test secondary indexes in postgres. - [
b06d6c3
] Use thread pool to pickup status tablet when wait is disallowed - [
979fbc8
] Ensure we allow the same column multiple times in WHERE and IF clauses for json and collection columns - [
aa3621e
] Fix check failure when reading in future - [
8e0bf34
] #322: Always raise unique constraint error for unique secondary index violation - [
bc58df3
] Fix TSAN issue with sys_catalog in catalog manager - [
43c1146
] (#331) ENG-3407: Pick local transaction status tablet - [
25177f6
] Remove redundant delete from index table - [
9879ada
] #276: Bounded staleness for follower reads - [
c6e0c4d
] #322: Abort transaction on failed DML. - [
b8ddceb
] #322: Implement unique secondary index - [
7ccda6f
] #327: Fix missing null index column values. - [
642e0e7
] #325: Fix SEGV when creating an index with an unsupported index column datatype. - [
97f32b2
] #287: Fix occasional inconsistent read of data written in a distributed transaction - [
405396a
] #293: Use a separate RocksDB for provisional records - [
d0779bd
] #294: Tserver misses new master info in some cases. - [
9582136
] (#294) Fix tserver overwriting master address list in-memory. - [
1c3a235
] #311 Prefer local tserver, or tservers in the same zone when redis_allow_reads_from_followers is set - [
a855a96
] ENG-3378 cqlsh: "select * from system.transactions" crashes tserver. - [
de1a8f9
] (#303): Handle multiple updates to same column in SET expression appropriately. - [
c846c6c
] Support fine grained updates for JSON columns. - [
41f4982
] #310: Fixes for yb-ctl setup_redis wait and num_shards - [
25c75f4
] Add support of NTP clock to master - [
6287d0a
] ENG-3282: #313: Use HostPort in Proxy instead of Endpoint - [
03dc761
] ENG-2724 Strongly Typed Uuids - [
3146d18
] Implement transaction read restart - [
c2e0f20
] Add metric to track read requests requiring restart. - [
57d40c6
] #312 Fix handling of min value as token upper bound - [
3ac9146
] Add metric to track expired transactions. - [
103f074
] #307: Fix occasional "SetTransaction with non empty batcher" error when committing a distributed transaction - [
7bb3972
] ENG-3317: Fix issues with high concurrent transaction aborts because of write conflicts - [
99f0ae1
] #264 Implement blob conversion functions in YQL (simple data types). - [
4b450cd
] #238: Retry distributed transaction on conflicts - [
eddf548
] (#291) [YCQL] Aggregation functions headers - [
0be501d
] ENG-3293: implement secondary index workload - [
40d75b7
] Remove error logging and reduce pool overflow log rate. - [
5b4b4b4
] #296 Add the size_estimates system table to YCQL - [
9aca5e0
] Update Spark and Cassandra driver versions - [
4f1d848
] (#26) Implement CAST(expr as Typename) builtin function (especially for json) - [
2dfc031
] (#290): Add support for avg in YCQL - [
30c425f
] ENG-3213: Implement IsLeaderLoadBalanced RPC - [
9a13bde
] Remove ExecContext::Error overloaded APIs - [
1c011ea
] #277: Add metric to track distribute transaction conflicts - [
71f1d82
] Ensure json scalar strings don't require quotes. - [
28845be
] Fix some sample apps to honor the user specified table name. - [
49edf46
] Add custom numeric opcode to builtin function directory. - [
deb2fc5
] #282: Enhance master change config to remove a dead peer. - [
56803e3
] ENG-3184: Two read buffers per connection should not count towards the read buffer limit - [
5dae084
] Reduce rpc timeout defaults for redis - [
f619ccd
] ENG-3239. Remove repeated log. - [
94d19c0
] (#175) ENG 3108: Implement ZSCORE - [
5bfb330
] ENG-3217: Introduce interval for update consumption of root mem tracker - [
92ce6d0
] #260 Accept lowercase options expire_in expire_at. Improve the error messages when the absolute timestamp is incorrect - [
eb5b0f8
] #259 Fix inconsistencies in YCQL keyword list - [
5d48691
] #237: Fix transaction status leadership change - [
7bf8cbb
] (#163) Support fine grained selection of json attributes in CQL. - [
5cc9357
] (#162) Add support in doc...
v1.0.0 (May 01, 2018)
YugaByte DB 1.0 release 🔥🍾
Overview of changes
Big payload!
- PostgreSQL API beta support
- Cassandra API enhancements (now called YugaByte Cloud Query Language or YCQL):
- Introduced a JSONB data type for storing documents
- Added a personalization and a timeseries workload to the sample apps
- Redis API enhancements (now called YugaByte Dictionary Service or YEDIS):
- Introduced follower reads
- Added more command coverage (like
ZRANGE
,TSLastN
, etc)
- Distributed transactions enhancements
- Increased transactions perf
- Fixed some corner case error conditions
- Lots of performance improvements
- Improved core decoding logic to boost perf on 2-core machines
- Better handling during huge spikes (backpressure)
- Handle large network buffers better when getting large memory-buffer requests
Key Commits
- [
0d07add
] #239 Callback should keep a reference to Synchronizer in UpdateReplica - [
10338ff
] Consensus: Use periodic timers for failure detection - [
f1e12eb
] Loose-ends for PostgreSQL support - [
e9f3735
] Table splits should be created based on primary cluster tserver count. - [
193cd4c
] (#162) Add grammar and parsing for basic json where clause filtering. - [
0bc9d69
] #198 Show only Cassandra keyspaces and tables in cqlsh - [
39ef45d
] Fix bug in Postgres SSL negotiation handling - [
95aa22e
] Read replicas should not show up as LEARNERSs - [
a5bbca4
] Avoid using spinlocks in the ts_tablet_manager. - [
ec4ae20
] Fix value validation in CassandraTransactionalKeyValue load-tester. - [
c19b14f
] Fix intermittent "Pool is CLOSING" exception in the write-only setup phase of Java load-tester - [
c560765
] Adding java support for shared thirdparty - [
c52c55e
] Automatically set network buffer limits based on available memory - [
7ba423c
] LogCache improvements: SpaceUsed outside lock and fix race on next_sequential_op_index_ - [
7892a2a
] Limit max wait in SetPermanentUuidForRemotePeer - [
9bf8fce
] Use atomic variable for state in TabletPeer - [
43cda3b
] Further reduce writers for batch CQL workloads. - [
7458489
] Removed filenames from error messages - [
e0b4b5d
] Add links for Cassandra, Redis and PGSQL API RPCs in progress in tserver. - [
aad076c
] Reduce default logging from reactor. - [
be18db9
] Fix TSAN version of TestRedisService.TestHMGetTiming - [
bb204e4
] #236: Fixed TestPathUtil.TestODirectFileCreationInDir - [
26552c5
] Linting error for common due to new lib yb_bfpg - [
e86a336
] #197: Fix DoсDB compaction filter to skip transaction metadata - [
222341b
] Switch RaftConsensus to shared_ptr - [
3cdeecf
] Load balancer does not respect replication factor - [
a9fcc08
] #196: Fix "Commit of expired transaction" error under high-load distributed transactions - [
9b6df54
] Harden CreateTable validation in CatalogManager - [
5dc30fc
] Improve DocDB and IntentAwareIterator performance - [
92ac433
] Keep pending operation counter disabled on tablet shutdown - [
49c9d4a
] Postgresql Support - [
7b12cce
] Allow integration of distributed txns with NTP clocks such as AWS time sync service - [
d6d130b
] #194: Some java client wait APIs could incorrectly exit due to overflow. - [
b125942
] Fix postgres port in java mini cluster - [
7482468
] #170: New TsRevRangeByTimestamp redis command - [
8797e39
] Implement ZRANGE for Sorted Sets. - [
158def7
] Improve performance of IntentAwareIterator - [
91e6e02
] #159: Added psql 3rd party - [
9ba8436
] Async DNS resolution of peers - [
a7d1447
] Removed exclusive index bounds in ZRevRange. - [
d0679af
] #23: Use cassandra driver's DNS resolution - [
b67e03c
] #82 Do not tombstone a tablet even if new tserver doesn't get promoted - [
d537ed2
] #87 Expire based on time spent in the queue - [
1796740
] (#141) DocDB filtering on minor compactions - [
08762c7
] #148: Fixed clqsh wrapper - [
be2d598
] Basic jsonb implementation with support at C++ SQL processor level. - [
c9d74a2
] #110: Allow redis reads from followers - [
d78db0f
] Remove transaction_table_num_replicas flag. - [
e640ac7
] Add support for arrays in our jsonb serialization format. - [
05d100c
] Additional data types for jsonb serialization. - [
907243a
] (#109) Support TSCard for redis time series. - [
17c3081
] Make the appenders use a thread pool - [
c2555ed
] Allow YBClient callback(s) to run in a separate threadpool - [
9cd6a2f
] Limit the total amount of memory consumed by network read buffers - [
8f2f390
] add gflag to enable/disable compression of sstables - [
29058a0
] #109 Implement TSLastN functionality for redis time series. - [
89a0269
] Change defaults for Kernel Watchdog - [[
4c5813a
](https://github.co...
v0.9.8 (Mar 21, 2018)
Overview of changes
- Basic jsonb serialization and de-serialization to support a document datatype
- Lots of performance improvements
- Improved performance when running on 2 core machines with auto-tuning of various gflags
- Reduced lock contention
- Eliminated unnecessary memory copies
- YugaByte DB can now run on ZFS filesystem
- Initial secondary index read/write support
- Handling large requests in Redis and memory protection on violating max command size
Key commits
- [
cdf48e3
] Fix hybrid time going backwards because of logical component overflow - [
0bf401e
] Add RPC read buffers to MemTracker - [
451b7f8
] Misc client template simplifications - [
e27d429
] #103 Do not crash due to block size mismatch on ZFS - [
218ddcd
] Remove log spew from TabletServiceImpl::Read - [
956deb2
] #101 pick better auto-defaults for max number of compactions - [
28ca802
] Keep java client API to pass in number of tablets for redis table creation. - [
e321311
] Secondary index read/write - [
e463718
] Fix macOS build issue in physical_time.cc - [
f4a1c89
] Fix build in pg_server_main.cc - [
5a91590
] #1 Enable building on gcc 7 on Ubuntu 17.10 - [
6f9bdef
] Add version info to log file including build timestamp and git - [
f9bafcc
] New clock abstraction layer - [
2826097
] Change defaults on server side for some flags. - [
0440305
] Fix missing comma in ybctl for pgsql service display. - [
a18d393
] Remove number of tablets from redis table creation client APIs. - [
26f909e
] RPC support for processing commands from Postgresql clients. - [
40786a4
] #97: Fix for Fatal failure on scaling down kubernetes cluster - [
a60c81f
] Report the stored log entry header CRC in the CRC mismatch error message. - [
4c6baeb
] Remove semi-colon requirement after "begin transaction" plus misc code cleanup. - [
5104ad2
] #98: Remove pointer to TableReader from MultiLevelIndexReader - [
4327930
] Quick fix of SegFault during reads. - [
44640b0
] Avoid copying of QLValue and QLValuePB. - [
960f19f
] Do not print a failure message when remote bootstrap is started successfully - [
5b16cf1
] Send num shards parameter to master from yb-ctl. - [
c311ad3
] Master removal needs to remove yb-data contents for shell mode. - [
2726eac
] Resolving bug where the placement info that gets allocated to a master/tserver is off by one respect to the command line argument. - [
280fdc0
] Fix ScopedPendingOperation to return Status::Busy error when unavailable. - [
d16bc28
] Backoff exponentially for server too busy errors - [
e0b78dc
] Set upperbound for intent iterator in IntentAwareIterator. - [
7147469
] Miscellaneous test improvements, and better diagnostics before a fatal error in MvccManager::AddPending - [
6be69a8
] Handle case when read buffer is full and command is not fully transferred yet - [
72de5cb
] Put ValueType::kIntentPrefix's before all non-intent ValueTypes. - [
ed45995
] Handle dependencies for libraries in mac_library_packager.py - [
556f710
] TSAN Race Condition between Register and Load Balancer. - [
e2f4b9b
] Fix the increment of SQLProcessor_ExecuteRequest metric. - [
2871820
] #93 Fix trying to read ahead of the log while preparing peer request - [
b1d4d7f
] #90: Reduce lock contention in TabletInvoker::IsLocalCall - [
0250c13
] #88: Fix return value from XX and NX options - [
63363df
] Basic jsonb serialization and de-serialization code. - [
897a925
] #86: Accept lowercase options for SET - [
679b57b
] Fix bug timezone parsing for timestamp literals - [
4902d06
] Allow flushing all tablets of a given table
v0.9.7 (Mar 07, 2018)
Overview of changes
- Enables high data density by turning multi-level indexing on by default. This allows efficient queries even where there is a lot of data per node.
- Core performance fixes to run better on lightweight (2 vCPU) machines
- Better handling of huge io spikes. The scenario is having many more requests from the clients than what the database cluster can handle.
- Tuning the Redis query layer performance
Key commits
- [
a4498b4
] #88: Ensure we check TTL when we look up the type of a subdoc - [
beae94d
] Remove Scoped watch stack from outbound calls. Gflags for consensus log - [
abe90b1
] Make the appenders use a thread pool - [
6b33e8d
] Bundle yb-prof.py in the release package. - [
e94574c
] Change defaults for the number of concurrent tserver-to-master RPCs and Redis buffer size - [
e96545a
] Allow std::atomic usage with clang and libstdc++ - [
13724f5
] Remove unnecessary encoding and decoding from DocDB - [
b36c90e
] Spawn a shell master when adding a new master. - [
702d528
] Use multi-level indexes by default - [
72ffc21
] Fixing reactor-test: DelayedTask::AbortTask should still call the callback for tasks that have not been scheduled - [
c0c4c7b
] Add paging to table iterator to fix RaftConsensusITest.TestAutoCreateReplica
v0.9.6 (Mar 01, 2018)
Overview of changes
- Support for using Kubernetes style cnames in YugaByte CQL client natively! The sample applications can easily be run as a Kubernetes service now.
- Lots of perf fixes for running YugaByte on machines with large number of CPUs.
- Added built-in time functions such as now(), totimestamp(), tounixtimestamp() and unixtimestampof().
- Support for high-performance batch transaction codepath with intra-batch dependencies.
Key commits
- [
fadfd84
] Use a separate thread pool for consensus service - [
71fc829
] Initialize being_compacted to false - [
db55a6f
] Support Kubernetes style cname in YugaByteDB clients - [
c27f929
] Correct apply of repeated keys in txn - [
8ceaeb9
] Enable creating multiple outstanding pipelines per IO thread - [
699a58e
] Handle intra-dependency in batch request / transaction - [
39100f4
] Replace upgrade lock with shared_lock and unique_lock - [
f17b2a8
] Implementing now(), totimestamp(), tounixtimestamp() and unixtimestampof() functions for YQL. - [
024730e
] Use circular buffer for receive - [
c619be7
] Reserve the number of subkeys from ParseCollection - [
de6a268
] Handle intra-dependency in batch request / transaction - [
a26f8d2
] Need to remove the special tserver service queue sizes on "low-cpu" machines. - [
3857155
] Change distributed transaction test cases to test writing to the same hash / primary key in the same transaction. - [
99d4adb
] Group lookup tablet requests - [
0bd8878
] Set iterate_upper_bound to avoid seeking over deleted keys in RocksDB. - [
88cf84e
] Introduce limits for queued commands and don't drop connection on read buffer overflow - [
2250acb
] #59: Set GIT_DIR to /tmp when building AWS SDK so that it does not pick up YugaByte DB version as its own - [
b4a9b8e
] Reduce log spew for unavailable peer - [
0261099
] Make Redis read buffer size and number of concurrent master lookups in meta cache configurable - [
f3e9672
] Gflag for block cache num shards - [
b0553d9
] Porting nonredundant functionalities of local_cluster_ctl to yb-ctl. - [
dc6e2e2
] Log spew during tablet startup under load. - [
4ad88df
] system_redis.redis should not be counted as an user table - [
7302b1f
] Correct handling of failure to retry RPC command - [
f90a83f
] Fix TransactionManager destruction