Skip to content

16.6.2 Feature Support by Table Type

Machbase provides five table types for different uses. Each supports features according to its design goals.

Table Type Overview

Table TypePrimary Use
TAGHigh-speed time-series sensor ingestion and aggregation (ROLLUP)
LOGSequential storage of logs/events in defined columns and text search
LOOKUPMetadata, code tables, and reference data (supports UPDATE/DELETE)
VOLATILEIn-memory server state and caches; data is lost on restart
TRANSACTIONGeneral relational data requiring transactions

Feature Support Matrix

FeatureTAGLOGLOOKUPVOLATILETRANSACTION
Writes
INSERT (SQL)OOOOO
Updates/Deletes
UPDATEXOOO
DELETEOOOOO
Transactions
Transaction (COMMIT/ROLLBACK)XXXXO
Aggregation and Search
ROLLUPOXXXX
Text search (KEYWORD INDEX)XOXXX
JSON
JSON columnsOOOXO
JSON path queryOOOXO
Fixed-point Numbers
DECIMAL / NUMERIC columnsOOOOO
Fixed-length ARRAY
ARRAY column creationOOOOO
ARRAY ADD/DROP COLUMNOOOO
Indexes
Default indexesOOOOO
LSM indexesXOXXX
Queries
SELECTOOOOO
Latest-value queries (SCAN_BACKWARD, TAG stat)OXXXX
JOIN (with other tables)OOO
SubqueryOOOOO
VIEWOOOOO

Symbols: O = supported, X = not supported, △ = partially supported or constrained

Append support by table type depends on the client API. For the language and API you use, check the SDK Append Support Matrix.

DECIMAL is an exact fixed-point type available in all five table types. NUMERIC, DEC, FIXED, and NUMBER are aliases for DECIMAL. Maximum precision is 65 and maximum scale is 30. For details, see DECIMAL and NUMERIC Fixed-point Types.

ARRAY ADD/DROP is supported for LOG, VOLATILE, LOOKUP, TRANSACTION, and TAG METADATA in Standard Edition. The TAG column’s means that ALTER supports TAG METADATA only; ordinary TAG DATA columns cannot be added. Cluster Edition supports only the LOG path. For exact syntax and DEFAULT rules for existing rows, see DDL Syntax and Numeric ARRAY Types.

Main Constraints

TAG Table UPDATE Constraints (△, Standard Edition)

TAG table UPDATE must satisfy all of the following conditions.

TAG data UPDATE is not available in Cluster Edition.

  • Include a tag selection predicate (name =, name IN, or name LIKE) in WHERE
  • Include a BASETIME column predicate in WHERE
  • SET targets must be actual data columns
  • Data UPDATE cannot modify time (BASETIME), name, or metadata columns
  • SET right-hand expressions cannot reference existing row columns; use constants, binds, or column-free expressions
-- Allowed: update a data column using tag and time predicates
UPDATE sensor_data
   SET value = 101
 WHERE name = 'sensor01'
   AND time >= TO_DATE('2026-07-01', 'YYYY-MM-DD');

-- Not allowed: update the BASETIME column
UPDATE sensor_data
   SET time = SYSDATE
 WHERE name = 'sensor01'
   AND time >= TO_DATE('2026-07-01', 'YYYY-MM-DD');

For details, see TAG Data UPDATE Support.

Transaction Scope of LOOKUP and VOLATILE

Each DML statement on LOOKUP and VOLATILE tables is applied independently. These tables do not participate in TRANSACTION table transactions grouping multiple statements with BEGIN and COMMIT/ROLLBACK.

JSON Column Support

JSON columns are supported in TAG, LOG, LOOKUP, and TRANSACTION tables. VOLATILE does not support JSON columns. LOOKUP JSON columns can be ordinary columns but cannot be primary keys. See JSON Support by Table Type.

TAG Latest-value and Time-range Queries

TAG tables use reverse scans and time predicates to query recent values and time ranges.

-- Query the five latest values for a specific tag
SELECT /*+ SCAN_BACKWARD(sensor_data) */ *
  FROM sensor_data
 WHERE name = 'sensor01'
 LIMIT 5;

-- Query a time range
SELECT * FROM sensor_data
WHERE name = 'sensor01'
  AND time BETWEEN TO_DATE('2024-01-01') AND TO_DATE('2024-01-02');
Last updated on