Changeset: adc8aae85814 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/adc8aae85814
Modified Files:
        clients/mapiclient/dump.c
        clients/mapiclient/mhelp.c
        clients/odbc/driver/SQLGetInfo.c
        clients/odbc/samples/testgetinfo.c
        sql/backends/monet5/sql_upgrades.c
        sql/include/sql_catalog.h
        sql/scripts/10_sys_schema_extension.sql
        sql/scripts/52_describe.sql
        sql/server/rel_schema.c
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/storage/bat/bat_storage.c
Branch: unlogged
Log Message:

Initial patch containing the unlogged table feature.


diffs (truncated from 405 to 300 lines):

diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1267,6 +1267,7 @@ describe_table(Mapi mid, const char *sch
                                         type == 4 ? "STREAM " :
                                         type == 5 ? "REMOTE " :
                                         type == 6 ? "REPLICA " :
+                                        type == 7 ? "UNLOGGED " :
                                         "");
                dquoted_print(toConsole, schema, ".");
                dquoted_print(toConsole, tname, " ");
@@ -1724,6 +1725,10 @@ dump_table_data(Mapi mid, const char *sc
                        /* replica table */
                        goto doreturn;
                }
+               if (strcmp(ttype, "7") == 0) {
+                       /* unlogged table */
+                       goto doreturn;
+               }
        }
        if (mapi_error(mid))
                goto bailout;
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -187,6 +187,13 @@ SQLhelp sqlhelp1[] = {
         "CREATE REMOTE TABLE [ IF NOT EXISTS ] qname ON string [WITH [USER 
'username'] [[ENCRYPTED] PASSWORD 'password']]",
         NULL,
         "remote name should match 
mapi:monetdb://host:port/database[/schema[/table]]"},
+       {"CREATE UNLOGGED TABLE",
+        "Create a new unlogged table",
+        "CREATE UNLOGGED TABLE [ IF NOT EXISTS ] qname table_source [STORAGE 
ident string]\n"
+        "CREATE UNLOGGED TABLE [ IF NOT EXISTS ] qname FROM LOADER 
function_ref\n"
+        "CREATE UNLOGGED TABLE [ IF NOT EXISTS ] qname table_source 
[on_commit]",
+        "table_source,on_commit,function_ref",
+        "See also 
https://www.monetdb.org/documentation/user-guide/sql-manual/data-definition/table-definition/"},
        {"CREATE REPLICA TABLE",
         "",
         "CREATE REPLICA TABLE [ IF NOT EXISTS ] qname table_source",
diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -687,7 +687,7 @@ MNDBGetInfo(ODBCDbc *dbc,
                        "ROW_NUMBER,SAMPLE,SAVEPOINT,SEQUENCE,SERIAL,"
                        "SERIALIZABLE,SIMPLE,SPLIT_PART,STDIN,STDOUT,STREAM,"
                        "STRING,SYMMETRIC,TIES,TINYINT,TRIGGER,TRUNCATE,"
-                       "UNBOUNDED,UNCOMMITTED,UNENCRYPTED,WHILE,WINDOW,XMLAGG,"
+                       
"UNBOUNDED,UNCOMMITTED,UNENCRYPTED,UNLOGGED,WHILE,WINDOW,XMLAGG,"
                        "XMLATTRIBUTES,XMLCOMMENT,XMLCONCAT,XMLDOCUMENT,"
                        "XMLELEMENT,XMLFOREST,XMLNAMESPACES,XMLPARSE,XMLPI,"
                        "XMLQUERY,XMLSCHEMA,XMLTEXT,XMLVALIDATE";
diff --git a/clients/odbc/samples/testgetinfo.c 
b/clients/odbc/samples/testgetinfo.c
--- a/clients/odbc/samples/testgetinfo.c
+++ b/clients/odbc/samples/testgetinfo.c
@@ -644,7 +644,7 @@ const struct {
                .info = SQL_KEYWORDS,
                .name = "SQL_KEYWORDS",
                .type = STRING,
-               .str = 
"ADD,ADMIN,AFTER,AGGREGATE,ALL,ALTER,ALWAYS,AND,ANY,ASYMMETRIC,ATOMIC,AUTO_INCREMENT,BEFORE,BEST,BIGINT,BIGSERIAL,BINARY,BLOB,CALL,CHAIN,CLOB,COMMITTED,COPY,CUME_DIST,CURRENT_ROLE,DELIMITERS,DENSE_RANK,DO,EACH,EFFORT,ELSEIF,ENCRYPTED,EVERY,EXCLUDE,FOLLOWING,FUNCTION,FWF,GENERATED,GEOMETRYCOLLECTION,GEOMETRYCOLLECTIONM,GEOMETRYCOLLECTIONZ,GEOMETRYCOLLECTIONZM,HUGEINT,IF,ILIKE,LATERAL,LIMIT,LINESTRING,LINESTRINGM,LINESTRINGZ,LINESTRINGZM,LOADER,LOCALTIME,LOCALTIMESTAMP,LOCKED,MEDIUMINT,MERGE,MULTILINESTRING,MULTILINESTRINGM,MULTILINESTRINGZ,MULTILINESTRINGZM,MULTIPOINT,MULTIPOINTM,MULTIPOINTZ,MULTIPOINTZM,MULTIPOLYGON,MULTIPOLYGONM,MULTIPOLYGONZ,MULTIPOLYGONZM,NEW,NOCYCLE,NOMAXVALUE,NOMINVALUE,NOW,OFFSET,OLD,ORDERED,OTHERS,OVER,PARTITION,PERCENT_RANK,POINT,POINTM,POINTZ,POINTZM,POLYGON,POLYGONM,POLYGONZ,POLYGONZM,PRECEDING,RANGE,RANK,RECORDS,REFERENCING,REMOTE,RENAME,REPEATABLE,REPLICA,RESTART,RETURN,RETURNS,ROW_NUMBER,SAMPLE,SAVEPOINT,SEQUENCE,SERIAL,SERIALIZABLE,SIMPLE,SPLI
 
T_PART,STDIN,STDOUT,STREAM,STRING,SYMMETRIC,TIES,TINYINT,TRIGGER,TRUNCATE,UNBOUNDED,UNCOMMITTED,UNENCRYPTED,WHILE,WINDOW,XMLAGG,XMLATTRIBUTES,XMLCOMMENT,XMLCONCAT,XMLDOCUMENT,XMLELEMENT,XMLFOREST,XMLNAMESPACES,XMLPARSE,XMLPI,XMLQUERY,XMLSCHEMA,XMLTEXT,XMLVALIDATE",
+               .str = 
"ADD,ADMIN,AFTER,AGGREGATE,ALL,ALTER,ALWAYS,AND,ANY,ASYMMETRIC,ATOMIC,AUTO_INCREMENT,BEFORE,BEST,BIGINT,BIGSERIAL,BINARY,BLOB,CALL,CHAIN,CLOB,COMMITTED,COPY,CUME_DIST,CURRENT_ROLE,DELIMITERS,DENSE_RANK,DO,EACH,EFFORT,ELSEIF,ENCRYPTED,EVERY,EXCLUDE,FOLLOWING,FUNCTION,FWF,GENERATED,GEOMETRYCOLLECTION,GEOMETRYCOLLECTIONM,GEOMETRYCOLLECTIONZ,GEOMETRYCOLLECTIONZM,HUGEINT,IF,ILIKE,LATERAL,LIMIT,LINESTRING,LINESTRINGM,LINESTRINGZ,LINESTRINGZM,LOADER,LOCALTIME,LOCALTIMESTAMP,LOCKED,MEDIUMINT,MERGE,MULTILINESTRING,MULTILINESTRINGM,MULTILINESTRINGZ,MULTILINESTRINGZM,MULTIPOINT,MULTIPOINTM,MULTIPOINTZ,MULTIPOINTZM,MULTIPOLYGON,MULTIPOLYGONM,MULTIPOLYGONZ,MULTIPOLYGONZM,NEW,NOCYCLE,NOMAXVALUE,NOMINVALUE,NOW,OFFSET,OLD,ORDERED,OTHERS,OVER,PARTITION,PERCENT_RANK,POINT,POINTM,POINTZ,POINTZM,POLYGON,POLYGONM,POLYGONZ,POLYGONZM,PRECEDING,RANGE,RANK,RECORDS,REFERENCING,REMOTE,RENAME,REPEATABLE,REPLICA,RESTART,RETURN,RETURNS,ROW_NUMBER,SAMPLE,SAVEPOINT,SEQUENCE,SERIAL,SERIALIZABLE,SIMPLE,SPLI
 
T_PART,STDIN,STDOUT,STREAM,STRING,SYMMETRIC,TIES,TINYINT,TRIGGER,TRUNCATE,UNBOUNDED,UNCOMMITTED,UNENCRYPTED,UNLOGGED,WHILE,WINDOW,XMLAGG,XMLATTRIBUTES,XMLCOMMENT,XMLCONCAT,XMLDOCUMENT,XMLELEMENT,XMLFOREST,XMLNAMESPACES,XMLPARSE,XMLPI,XMLQUERY,XMLSCHEMA,XMLTEXT,XMLVALIDATE",
        },
        {
                .info = SQL_LIKE_ESCAPE_CLAUSE,
diff --git a/sql/backends/monet5/sql_upgrades.c 
b/sql/backends/monet5/sql_upgrades.c
--- a/sql/backends/monet5/sql_upgrades.c
+++ b/sql/backends/monet5/sql_upgrades.c
@@ -2542,7 +2542,7 @@ sql_update_jul2021(Client c, mvc *sql)
                                        "                ''\n"
                                        "        END opt\n"
                                        "    FROM sys.schemas s, 
sys.table_types ts, sys.tables t\n"
-                                       "    WHERE ts.table_type_name IN 
('TABLE', 'VIEW', 'MERGE TABLE', 'REMOTE TABLE', 'REPLICA TABLE')\n"
+                                       "    WHERE ts.table_type_name IN 
('TABLE', 'VIEW', 'MERGE TABLE', 'REMOTE TABLE', 'REPLICA TABLE', 'UNLOGGED 
TABLE')\n"
                                        "        AND t.system = FALSE\n"
                                        "        AND s.id = t.schema_id\n"
                                        "        AND ts.table_type_id = 
t.type\n"
@@ -3545,7 +3545,7 @@ sql_update_jan2022(Client c, mvc *sql)
                                        "                               ''\n"
                                        "               END opt\n"
                                        "       FROM sys.schemas s, 
sys.table_types ts, sys.tables t\n"
-                                       "       WHERE ts.table_type_name IN 
('TABLE', 'VIEW', 'MERGE TABLE', 'REMOTE TABLE', 'REPLICA TABLE')\n"
+                                       "       WHERE ts.table_type_name IN 
('TABLE', 'VIEW', 'MERGE TABLE', 'REMOTE TABLE', 'REPLICA TABLE', 'UNLOGGED 
TABLE')\n"
                                        "               AND t.system = FALSE\n"
                                        "               AND s.id = 
t.schema_id\n"
                                        "               AND ts.table_type_id = 
t.type\n"
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -147,7 +147,8 @@ typedef enum temp_t {
        SQL_MERGE_TABLE = 4,
        /* SQL_STREAM = 5, stream tables are not used anymore */
        SQL_REMOTE = 6,
-       SQL_REPLICA_TABLE = 7
+       SQL_REPLICA_TABLE = 7,
+       SQL_UNLOGGED_TABLE = 8
 } temp_t;
 
 typedef enum comp_type {
@@ -634,16 +635,20 @@ typedef enum table_types {
        tt_merge_table = 3,     /* multiple tables form one table */
        /* tt_stream = 4, stream tables are not used anymore */
        tt_remote = 5,          /* stored on a remote server */
-       tt_replica_table = 6    /* multiple replica of the same table */
+       tt_replica_table = 6,   /* multiple replica of the same table */
+       tt_unlogged_table = 7
 } table_types;
 
-#define TABLE_TYPE_DESCRIPTION(tt, properties)                                 
                                     \
-((tt) == tt_table)?"TABLE":((tt) == tt_view)?"VIEW":((tt) == tt_merge_table && 
!(properties))?"MERGE TABLE":                \
-((tt) == tt_remote)?"REMOTE TABLE":                                            
      \
-((tt) == tt_merge_table && ((properties) & PARTITION_LIST) == 
PARTITION_LIST)?"LIST PARTITION TABLE":                   \
-((tt) == tt_merge_table && ((properties) & PARTITION_RANGE) == 
PARTITION_RANGE)?"RANGE PARTITION TABLE":"REPLICA TABLE"
+#define TABLE_TYPE_DESCRIPTION(tt, properties)                                 
                                                          \
+       ((tt) == tt_table) ? "TABLE" : ((tt) == tt_view)                        
                                                                                
           ? "VIEW"                  \
+                                                          : ((tt) == 
tt_merge_table && !(properties))                                                
                     ? "MERGE TABLE"           \
+                                                          : ((tt) == 
tt_remote)                                                                      
                                             ? "REMOTE TABLE"          \
+                                                          : ((tt) == 
tt_merge_table && ((properties)&PARTITION_LIST) == PARTITION_LIST)   ? "LIST 
PARTITION TABLE"  \
+                                                          : ((tt) == 
tt_merge_table && ((properties)&PARTITION_RANGE) == PARTITION_RANGE) ? "RANGE 
PARTITION TABLE" \
+                                                          : ((tt) == 
tt_unlogged_table)                                                              
                                     ? "UNLOGGED TABLE"        \
+                                                                               
                                                                                
                                                           : "REPLICA TABLE"
 
-#define isTable(x)                        ((x)->type==tt_table)
+#define isTable(x)                        ((x)->type==tt_table || 
(x)->type==tt_unlogged_table)
 #define isView(x)                         ((x)->type==tt_view)
 #define isNonPartitionedTable(x)          ((x)->type==tt_merge_table && 
!(x)->properties)
 #define isRangePartitionTable(x)          ((x)->type==tt_merge_table && 
((x)->properties & PARTITION_RANGE) == PARTITION_RANGE)
@@ -653,7 +658,8 @@ typedef enum table_types {
 #define isMergeTable(x)                   ((x)->type==tt_merge_table)
 #define isRemote(x)                       ((x)->type==tt_remote)
 #define isReplicaTable(x)                 ((x)->type==tt_replica_table)
-#define isKindOfTable(x)                  (isTable(x) || isMergeTable(x) || 
isRemote(x) || isReplicaTable(x))
+#define isUnloggedTable(x)                               
((x)->type==tt_unlogged_table)
+#define isKindOfTable(x)                  (isTable(x) || isMergeTable(x) || 
isRemote(x) || isReplicaTable(x) || isUnloggedTable(x))
 
 #define TABLE_WRITABLE 0
 #define TABLE_READONLY 1
diff --git a/sql/scripts/10_sys_schema_extension.sql 
b/sql/scripts/10_sys_schema_extension.sql
--- a/sql/scripts/10_sys_schema_extension.sql
+++ b/sql/scripts/10_sys_schema_extension.sql
@@ -333,6 +333,7 @@ INSERT INTO sys.table_types (table_type_
   (3, 'MERGE TABLE'),
   (5, 'REMOTE TABLE'),
   (6, 'REPLICA TABLE'),
+  (7, 'UNLOGGED TABLE'),
 -- synthetically constructed system obj variants (added 10 to
 -- sys._tables.type value when sys._tables.system is true).
   (10, 'SYSTEM TABLE'),
diff --git a/sql/scripts/52_describe.sql b/sql/scripts/52_describe.sql
--- a/sql/scripts/52_describe.sql
+++ b/sql/scripts/52_describe.sql
@@ -299,7 +299,7 @@ CREATE VIEW sys.describe_tables AS
                                ''
                END opt
        FROM sys.schemas s, sys.table_types ts, sys.tables t
-       WHERE ts.table_type_name IN ('TABLE', 'VIEW', 'MERGE TABLE', 'REMOTE 
TABLE', 'REPLICA TABLE')
+       WHERE ts.table_type_name IN ('TABLE', 'VIEW', 'MERGE TABLE', 'REMOTE 
TABLE', 'REPLICA TABLE', 'UNLOGGED TABLE')
                AND t.system = FALSE
                AND s.id = t.schema_id
                AND ts.table_type_id = t.type
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -217,7 +217,8 @@ mvc_create_table_as_subquery(mvc *sql, s
        sql_table *t = NULL;
        table_types tt =(temp == SQL_REMOTE)?tt_remote:
                (temp == SQL_MERGE_TABLE)?tt_merge_table:
-               (temp == SQL_REPLICA_TABLE)?tt_replica_table:tt_table;
+               (temp == SQL_REPLICA_TABLE)?tt_replica_table:
+               (temp == SQL_UNLOGGED_TABLE)?tt_unlogged_table:tt_table;
 
        switch (mvc_create_table(&t, sql, s, tname, tt, 0, SQL_DECLARED_TABLE, 
commit_action, -1, 0)) {
                case -1:
@@ -1280,7 +1281,8 @@ rel_create_table(sql_query *query, int t
        mvc *sql = query->sql;
        int tt = (temp == SQL_REMOTE)?tt_remote:
                 (temp == SQL_MERGE_TABLE)?tt_merge_table:
-                (temp == SQL_REPLICA_TABLE)?tt_replica_table:tt_table;
+                (temp == SQL_REPLICA_TABLE)?tt_replica_table:
+                (temp == SQL_UNLOGGED_TABLE)?tt_unlogged_table:tt_table;
        bit properties = partition_def ? (bit) 
partition_def->data.lval->h->next->next->data.i_val : 0;
        sql_table *t = NULL;
        const char *action = (temp == SQL_DECLARED_TABLE)?"DECLARE":"CREATE";
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -684,7 +684,7 @@ CONTINUE CURRENT CURSOR FOUND GOTO GO LA
 SQLCODE SQLERROR UNDER WHENEVER
 */
 
-%token TEMP TEMPORARY MERGE REMOTE REPLICA
+%token TEMP TEMPORARY MERGE REMOTE REPLICA UNLOGGED
 %token<sval> ASC DESC AUTHORIZATION
 %token CHECK CONSTRAINT CREATE COMMENT NULLS FIRST LAST
 %token TYPE PROCEDURE FUNCTION sqlLOADER AGGREGATE RETURNS EXTERNAL sqlNAME 
DECLARE
@@ -1555,6 +1555,19 @@ table_def:
          append_int(l, $3);
          append_symbol(l, NULL); /* only used for merge table */
          $$ = _symbol_create_list( SQL_CREATE_TABLE, l ); }
+ |  UNLOGGED TABLE if_not_exists qname table_content_source
+       { int commit_action = CA_COMMIT, tpe = SQL_UNLOGGED_TABLE;
+         dlist *l = L();
+
+         append_int(l, tpe);
+         append_list(l, $4);
+         append_symbol(l, $5);
+         append_int(l, commit_action);
+         append_string(l, NULL);
+         append_list(l, NULL);
+         append_int(l, $3);
+         append_symbol(l, NULL); /* only used for merge table */
+         $$ = _symbol_create_list( SQL_CREATE_TABLE, l ); }
   | opt_temp TABLE if_not_exists qname table_content_source opt_on_commit 
        { int commit_action = CA_COMMIT;
          dlist *l = L();
@@ -5468,6 +5481,7 @@ non_reserved_word:
 | STORAGE      { $$ = sa_strdup(SA, "storage"); }
 | TEMP         { $$ = sa_strdup(SA, "temp"); }
 | TEMPORARY    { $$ = sa_strdup(SA, "temporary"); }
+| UNLOGGED     { $$ = sa_strdup(SA, "unlogged"); }
 | sqlTEXT      { $$ = sa_strdup(SA, "text"); }
 | SQL_TRACE    { $$ = sa_strdup(SA, "trace"); }
 | TYPE         { $$ = sa_strdup(SA, "type"); }
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -300,6 +300,7 @@ scanner_init_keywords(void)
        failed += keywords_insert("REMOTE", REMOTE);
        failed += keywords_insert("MERGE", MERGE);
        failed += keywords_insert("REPLICA", REPLICA);
+       failed += keywords_insert("UNLOGGED", UNLOGGED);
        failed += keywords_insert("TO", TO);
        failed += keywords_insert("UNION", UNION);
        failed += keywords_insert("EXCEPT", EXCEPT);
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -2120,7 +2120,7 @@ update_col(sql_trans *tr, sql_column *c,
 
        assert(delta && delta->cs.ts == tr->tid);
        if ((!inTransaction(tr, c->t) && (odelta != delta || isTempTable(c->t)) 
&& isGlobal(c->t)) || (!isNew(c->t) && isLocalTemp(c->t)))
-               trans_add(tr, &c->base, delta, &tc_gc_col, &commit_update_col, 
isTempTable(c->t)?NULL:&log_update_col);
+               trans_add(tr, &c->base, delta, &tc_gc_col, &commit_update_col, 
isTempTable(c->t) || isUnloggedTable(c->t) ? NULL : &log_update_col);
 
        odelta = delta;
        if ((res = update_col_execute(tr, &delta, c->t, isNew(c), tids, upd, 
tpe == TYPE_bat)) != LOG_OK)
@@ -2192,7 +2192,7 @@ update_idx(sql_trans *tr, sql_idx * i, v
 
        assert(delta && delta->cs.ts == tr->tid);
        if ((!inTransaction(tr, i->t) && (odelta != delta || isTempTable(i->t)) 
&& isGlobal(i->t)) || (!isNew(i->t) && isLocalTemp(i->t)))
-               trans_add(tr, &i->base, delta, &tc_gc_idx, &commit_update_idx, 
isTempTable(i->t)?NULL:&log_update_idx);
+               trans_add(tr, &i->base, delta, &tc_gc_idx, &commit_update_idx, 
isTempTable(i->t) || isUnloggedTable(i->t) ? NULL : &log_update_idx);
 
        odelta = delta;
        res = update_col_execute(tr, &delta, i->t, isNew(i), tids, upd, tpe == 
TYPE_bat);
@@ -2391,7 +2391,7 @@ append_col(sql_trans *tr, sql_column *c,
        assert(delta && (!isTempTable(c->t) || delta->cs.ts == tr->tid));
        if (isTempTable(c->t))
        if ((!inTransaction(tr, c->t) && (odelta != delta || 
!segments_in_transaction(tr, c->t) || isTempTable(c->t)) && isGlobal(c->t)) || 
(!isNew(c->t) && isLocalTemp(c->t)))
-               trans_add(tr, &c->base, delta, &tc_gc_col, &commit_update_col, 
isTempTable(c->t)?NULL:&log_update_col);
+               trans_add(tr, &c->base, delta, &tc_gc_col, &commit_update_col, 
isTempTable(c->t) || isUnloggedTable(c->t) ? NULL : &log_update_col);
 
        odelta = delta;
        if ((res = append_col_execute(tr, &delta, c->base.id, offset, offsets, 
data, cnt, tpe, c->storage_type)) != LOG_OK)
@@ -2431,7 +2431,7 @@ append_idx(sql_trans *tr, sql_idx *i, BU
        assert(delta && (!isTempTable(i->t) || delta->cs.ts == tr->tid));
        if (isTempTable(i->t))
        if ((!inTransaction(tr, i->t) && (odelta != delta || 
!segments_in_transaction(tr, i->t) || isTempTable(i->t)) && isGlobal(i->t)) || 
(!isNew(i->t) && isLocalTemp(i->t)))
-               trans_add(tr, &i->base, delta, &tc_gc_idx, &commit_update_idx, 
isTempTable(i->t)?NULL:&log_update_idx);
+               trans_add(tr, &i->base, delta, &tc_gc_idx, &commit_update_idx, 
isTempTable(i->t) || isUnloggedTable(i->t) ? NULL : &log_update_idx);
 
        odelta = delta;
        res = append_col_execute(tr, &delta, i->base.id, offset, offsets, data, 
cnt, tpe, NULL);
@@ -2485,7 +2485,7 @@ storage_delete_val(sql_trans *tr, sql_ta
        }
        unlock_table(tr->store, t->base.id);
        if ((!inTransaction(tr, t) && (!in_transaction || isTempTable(t)) && 
isGlobal(t)) || (!isNew(t) && isLocalTemp(t)))
-               trans_add(tr, &t->base, s, &tc_gc_del, &commit_update_del, 
isTempTable(t)?NULL:&log_update_del);
+               trans_add(tr, &t->base, s, &tc_gc_del, &commit_update_del, 
isTempTable(t) || isUnloggedTable(t) ? NULL : &log_update_del);
        return LOG_OK;
 }
 
@@ -2603,7 +2603,7 @@ storage_delete_bat(sql_trans *tr, sql_ta
        if (i != oi)
                bat_destroy(i);
        if ((!inTransaction(tr, t) && (!in_transaction || isTempTable(t)) && 
isGlobal(t)) || (!isNew(t) && isLocalTemp(t)))
-               trans_add(tr, &t->base, s, &tc_gc_del, &commit_update_del, 
isTempTable(t)?NULL:&log_update_del);
+               trans_add(tr, &t->base, s, &tc_gc_del, &commit_update_del, 
isTempTable(t) || isUnloggedTable(t) ? NULL : &log_update_del);
        return ok;
 }
 
@@ -3065,7 +3065,7 @@ create_col(sql_trans *tr, sql_column *c)
                bat->cs.ucnt = 0;
 
                if (new /*&& !isTempTable(c->t)*/ && !isNew(c->t) /* alter */)
-                       trans_add(tr, &c->base, bat, &tc_gc_col, 
&commit_create_col, isTempTable(c->t)?NULL:&log_create_col);
+                       trans_add(tr, &c->base, bat, &tc_gc_col, 
&commit_create_col, isTempTable(c->t) ? NULL : &log_create_col);
        }
        return ok;
 }
@@ -3171,7 +3171,7 @@ create_idx(sql_trans *tr, sql_idx *ni)
                }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to