Skip to content

11.3 SDK Feature Support

Compare feature support and API entry points to choose an SDK for your application. See each SDK page for installation, connections, functions, and runnable examples.

If choosing an SDK for the first time, read Choose an Integration Method first, then use this page to compare required features and exact API paths.

Nullable Metadata

Machbase reports SELECT result column nullability as NO_NULLS, NULLABLE, or UNKNOWN. Applications must handle NULL for both NULLABLE and UNKNOWN.

SDKRetrieval method
JDBCResultSetMetaData.isNullable()
Pythoncursor.description[i][6]
Go nativeapi.Column.Nullability
Go database/sqlRows.ColumnTypeNullable()
Node.jsColumnMeta.nullable
.NETAllowDBNull in GetSchemaTable()
SQLCLI/ODBCDescriptor nullable attribute

Expressions, aggregates, VIEWs, and JOIN results may report UNKNOWN. Do not equate a source column schema constraint with query result metadata.

PRIMARY KEY Metadata

SDKResult columnsTable catalog
JDBCODatabaseMetaData.getPrimaryKeys()
PythonOCatalog SQL
Go nativeOCatalog SQL
Go database/sqlNo standard APICatalog SQL
Node.jsOCatalog SQL
.NETOCatalog SQL
ODBCNo separate result APISQLPrimaryKeys()

Expressions, aggregates, and the NULL-supplying side of an outer join may not preserve the source column primary key attribute.

ROWID from INSERT

In Machbase 8.7.0 Standard Edition, a successful single INSERT ... VALUES can provide a ROWID to supported SDKs.

SDK/toolRetrieval methodWhen absent
machsqlSHOW LAST ROWIDNULL
Machbase SQLCLISQLGetGeneratedRowID()SQL_NO_DATA
Standard ODBCNo dedicated standard API-
JDBCStatement.getGeneratedKeys()Empty ResultSet
Pythoncursor.lastrowidNone
.NETMachCommand.RowIdnull
Go database/sqlResult.LastInsertId()Error
Go nativeUnsupported-
Node.jsExecution result rowIdundefined

Batches, executemany(), Append, loaders, INSERT ... SELECT, and UPSERT do not return a single ROWID. See ROWID for SQL semantics and table-specific constraints.

Append APIs and Table Types

API pathLOGTAGLOOKUPVOLATILETRANSACTIONBasis
SQLCLI SQLAppend* extensionOOOOOTRANSACTION requires Standard
JDBC MachStatement.executeAppend*OOOOONFX cce422d source/tests
Python 2.4 append*OOOOONFX cce422d source/tests
.NET MachAppendWriterOOOOONFX cce422d provider
Go v1.8.4 native AppenderOOXXOTRANSACTION requires Standard
Go database/sql standard APIXXXXXsql.Conn.Raw() extensions follow the native contract
Node source appendBatch()OONFX cce422d source build
Node source appendOpen()OOGeneric native/fallback path; table-specific validation required

Keep ordinary query connections and Append handle lifecycles distinct, and check close and flush results. O indicates support verified in the cited source/tests. means only a generic path is available and further table-specific regression testing is needed. Append extensions are not standard ODBC or database/sql features.

ARRAY and Selected-Column Append

Machbase DBMS 8.7.0 ARRAY support is as follows:

SDKDense ARRAY retrieval/inputSparse ARRAYSelected-column Append
SQLCLI/C++OOO
Machbase ODBC extensionOOO
JDBCOOO
PythonOOO
Node.jsOOO
.NET full/legacy providerOOO
Gov2 main sourcev2 main sourcev2 main source

Use a Machbase DBMS 8.7.0 server with an SDK build that includes ARRAY support. SQL ARRAY element positions and Machbase-specific SDK positions are 0-based. Existing full-row scalar Append APIs are unchanged. The Node.js prepared fallback also supports SparseArray. Go requires v2 main source after neo-client PR #17; until a public v2 release is specified, do not assume a published module version provides support. See Sparse ARRAY and Selected-Column Append API for input methods and APIs.

AUTH KEY

SDK/toolSupport
machsql, Machbase SQLCLI, ODBC, JDBCO
Go native, Go database/sqlO (neo-client v1.5.0+)
Python, Node.js, .NETX

See AUTH KEY Authentication for key generation, registration, and rotation. See supported SDK pages for connection options.

Transactions, Prepare, and Binding

SDKTransaction APIServer preparedNamed bind API
JDBCOO△ (Machbase extension)
PythonXOO
Go nativeOO
Go database/sqlOOO
.NETXX
Node.jsXOO
SQLCLIOO
ODBCOPositional binding

Prepared statements and parameter binding are separate from transaction support. See Named Bind Parameter for placeholder syntax.

For TAG data UPDATE in Machbase 8.7.0 Standard Edition, existing positional/named SDK APIs can bind NAME and BASETIME predicate values. NFX #4127 regression tests cover C/C++ SQLCLI, Go database/sql, JDBC, Node.js, Python, and .NET. ODBC is not included in that SDK regression matrix; it binds ? or named SQL placeholders by ordinal through standard SQLBindParameter(). See TAG Data UPDATE Binding for predicate requirements.

in the Transaction column means executing transaction SQL on the same connection instead of using a dedicated object. in Named bind means a driver extension or a client path that converts values to SQL literals, rather than a standard named binding API.

Verified Versions and Provenance

SDKVerification basis
SQLCLI/JDBC/PythonNFX cce422d2972; Python package 2.4
Node.jsNFX cce422d2972 source build (package.json 1.0.1)
.NETUni 8.0.55, limited 3.1.3, full 3.2.2
GoReleased neo-client v1.8.4; AUTH KEY v1.5.0+, database selection v1.8.3+

Some Node features in NFX cce422d were added after the public npm 1.0.1 release. Do not assume feature parity from the registry package version string. Check the artifact commit provenance or use an NFX source build.

ARRAY and selected-column Append were verified against NFX 655d1333870313c4951698b89c9a3c9ada11d630 and merge commit f756986c4836982723e2aa7727ec05b7e05e9707. Use Machbase DBMS 8.7.0 as the server baseline and verified SDK artifacts containing those changes as the client baseline.

SDK References

SDKDetailed documentation
Machbase SQLCLI/ODBCSQLCLI and ODBC
JDBCJDBC
PythonPython
Node.js / TypeScriptNode.js / TypeScript
.NET Connector.NET Connector
GoGo
Last updated on