TDV Adapter for Couchbase

Build 22.0.8462


General Changes

[8452] 02/21/20238452CouchbaseAdded
  • Added support for Analytics views and tabular Analytics views. Tabular Analytics views use the metadata provided as part of the
    DDL statement instead of performing rowscan. Supported column metadata includes column names, types, nullability, primary keys, and foreign keys. Both types of views have similar limitations to external Analytics collections (they do not support Document.Id or Document.TTL, and are not scanned for child tables).
  • Added the Default column to the sys_procedureparameters table.
  • Added the IsPath column to the sys_procedureparameters table.
  • We now support handling the keyword "COLLATE" as standard function name as well.
[8045] 01/10/20228045CouchbaseAdded
  • Added support for the NATIVEQUERY table function. This function can be used after a FROM to execute a query using Couchbase-native N1QL instead of SQL. For example,
    SELECT * FROM NATIVEQUERY('SELECT META(a).id, b.rowdata FROM abucket AS a UNNEST a.rows AS b')
    will execute the inner query directly on Couchbase and return the results. This will work even in tools which are not normally compatible with QueryPassthrough=true.
  • Added support for UpdateNullValues. This provides control over whether NULL values written to doucments via UPDATE are stored as NULL in Couchbase, or are removed from the document.
  • Added support for N1Q transactions. They apply to all N1QL queries that are not triggered by metadata or stored procedures. They can be either disabled entirely (the default), enabled for explicit use only (like setAutoCommit(false) or BeginTransaction()), or for implicit use where a one-statement transaction is used when no explicit transaction is active on the connection. Connection properties were also added to control transaction durability and lifetime requirements.
  • Added the corresponding connection properties, UseTransactions, TransactionDurability, and TransactionTimeout.
  • Added support for calling user-defined functions in N1QL and Analytics. Global functions may be called using their unscoped names (to_meters("")) or their scoped names ("Default.to_meters"("")). Scoped functions must be called using their fully qualified names, which are two-parts or three-parts in Analytics ("experiments.to_meters") or three-parts only in N1QL ("experiments.units.to_meters").
  • Added support for the STRING_SPLIT table-valued function in the CROSS APPLY clause.
  • Added the KeySeq column to the sys_foreignkeys table.
  • Added the new sys_primarykeys system table.
  • Updated the Literal Function Names for relative date/datetime functions. Previously relative date/datetime functions resolved to a different value when used in the projection vs te predicate. Ie: SELECT LAST_MONTH() AS lm, Col FROM Table WHERE Col > LAST_MONTH(). Formerly the two LAST_MONTH() methods would resolve to different datetimes. Now they will match.
  • As a replacement for the previous behavior, the relative date/datetime functions in the criteria may have an 'L' appended to them. Ie: WHERE col > L_LAST_MONTH(). This will continue to resolve to the same values that previously were calculated in the criteria. Note that the "L_" prefix will only work in the predicate - it not available for the projection.
  • Added support for performing DML on nested child tables in NewChildJoinsMode, which completes our new relational model. You can now INSERT, UPDATE, and DELETE on every table exposed by the provider when NCJM is enabled.
  • Added support for creating collections via DDL. When the hidden UseCollectionsForDDL property is enabled, CREATE TABLE "abucket.ascope.acollection"(...) will create the bucket, scope and collection which correspond to the table's name.
  • Added the TCP Logging Module for the logging information happening on the TCP wire protocol. The transport bytes that are incoming and ongoing will be logged at verbosity=5.
  • Added support for creating collections via DDL. When the hidden UseCollectionsForDDL property is enabled, CREATE TABLE "abucket.ascope.acollection"(...) will create the bucket, scope and collection which correspond to the table's name.
  • Added support for handling client side formulas during insert / update. For example: UPDATE Table SET Col1 = Concat(Col1, " - ", Col2) WHERE Col2 LIKE 'A%'
  • Updated how display sizes are determined for varchar primary key and foreign key columns so they will match the reported length of the column.
  • Non-conditional updates between two columns is now available to all drivers. For example: UPDATE Table SET Col1=Col2

  • Reduced the length to 255 for varchar primary key and foreign key columns.
  • Updated implicit and metadata caching to improve performance and support for multiple connections. Old metadata caches are not compatible - you would need to generate new metadata caches if you are currently using CacheMetadata.
  • Updated index naming convention to avoid duplicates
  • Updated and standardized Getting Started connection help.
  • Added the Advanced Features section to the help of all drivers.
  • Categorized connection property listings in the help for all editions.
04/15 /20217775GeneralChanged
  • Kerberos authentication is updated to use TCP by default, but will fall back to UDP if a TCP connection cannot be established
  • Added support for the USE KEYS query construct. When executing an N1QL query, the driver will attempt to determine if it contains any eligible filters on Document.Id - if there are any they are removed from the WHERE clause and migrated to the USE KEYS clause. When this transformation is applied the resulting query can avoid index scans, which allows for more queries to be run without a primary index and improves execution speed.
  • Updated AddDocuments and ManageIndices so the interface no longer operates based on column#1 values. AddDocuments now accepts either a single ID and Document or a SourceTable that refers to a #TEMP table (analogus to a normal bulk insert), while ManageIndices accepts JSON arrays for multiple values since these are mostly typed by hand and have very few elements.
  • Added support for collections and scopes within Couchbase v7. This touches on a lot of the driver but here are the main aspects:
    • Tables are now generated for collections as well as buckets/datasets in both N1Ql and Analytics. They have dotted names similar to Analytics datasets. The only exceptions are N1QL default collections which just use the bucket name (the server calls them _default) and Analytics legacy dataverses (which have the same two-level hierarchy)
    • Queries can now use data from collections in all the usual ways (flavors, UNNEST, etc), and collection tables can now be used with DROP TABLE. Buckets still work with DROP TABLE as well but only in limited contexts to prevent users from deleting data outside the default collection.
    • Added new stored procedures for creating and dropping scopes/collections, and updated index management stored predures to report information about scopes/collections.
    • The Dataverse option now expects to follow SQL quoting rules, and can be either a single SQL identifier (foo) for legacy dataverses, or a two-level qualified identifier ( for Analytics dataverses/scopes

Copyright (c) 2023 CData Software, Inc. - All rights reserved.
Build 22.0.8462