Changeset: df3da4e56ac4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/df3da4e56ac4
Branch: cmp-or-patterns
Log Message:

Merges default


diffs (truncated from 385 to 300 lines):

diff --git a/clients/mapilib/ChangeLog.Aug2024 
b/clients/mapilib/ChangeLog.Aug2024
--- a/clients/mapilib/ChangeLog.Aug2024
+++ b/clients/mapilib/ChangeLog.Aug2024
@@ -1,3 +1,10 @@
 # ChangeLog file for mapilib
 # This file is updated with Maddlog
 
+* Wed Jun 19 2024 Joeri van Ruth <joeri.van.r...@monetdbsolutions.com>
+- Add new columns to sys.sessions. Column 'language' is usually 'sql'.
+  Column 'peer' is the network address of the client (something like
+  '[::1]:46558' or '<UNIX SOCKET>'). Columns 'hostname', 'application',
+  'client', 'clientpid' and 'remark' can be set by the client.
+  Libmapi/mclient, pymonetdb and monetdb-java have been modified to fill
+  in sensible default values.
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -753,7 +753,7 @@ typedef struct {
 #define GDKLIBRARY_HSIZE       061045U /* first in Jan2022: heap "size" values 
*/
 #define GDKLIBRARY_JSON        061046U /* first in Sep2022: json storage 
changes*/
 #define GDKLIBRARY_STATUS      061047U /* first in Dec2023: no status/filename 
columns */
-#define GDKLIBRARY             061050U /* first after Dec2023 */
+#define GDKLIBRARY             061050U /* first in Aug2024 */
 
 /* The batRestricted field indicates whether a BAT is readonly.
  * we have modes: BAT_WRITE  = all permitted
diff --git a/monetdb5/modules/mal/txtsim.c b/monetdb5/modules/mal/txtsim.c
--- a/monetdb5/modules/mal/txtsim.c
+++ b/monetdb5/modules/mal/txtsim.c
@@ -203,8 +203,10 @@ levenshtein(int *res, const char *x, con
        xlen = UTF8_strlen(x);
        ylen = UTF8_strlen(y);
 
-       if (xlen == ylen && (strcmp(x, y) == 0))
+       if (xlen == ylen && (strcmp(x, y) == 0)) {
+               *res = 0;
                return MAL_SUCCEED;
+       }
 
        column = GDKmalloc((xlen + 1) * sizeof(unsigned int));
        if (column == NULL)
diff --git a/sql/backends/monet5/generator/generator.c 
b/sql/backends/monet5/generator/generator.c
--- a/sql/backends/monet5/generator/generator.c
+++ b/sql/backends/monet5/generator/generator.c
@@ -831,6 +831,7 @@ VLTgenerator_subselect(Client cntxt, Mal
        do {                                                                    
                                                        \
                TPE f,l,s, low, hgh;                                            
                                        \
                BUN j; oid *v;                                                  
                                                \
+               bool nil_matches = false;                                       
                                        \
                f = *getArgReference_##TPE(stk,p, 1);                           
                        \
                l = *getArgReference_##TPE(stk,p, 2);                           
                        \
                if ( p->argc == 3)                                              
                                                \
@@ -858,18 +859,26 @@ VLTgenerator_subselect(Client cntxt, Mal
                        low = NEXTVALUE##TPE(low);                              
                                        \
                } else if ( strcmp(oper,">=") == 0){                            
                        \
                        low= *getArgReference_##TPE(stk,pci,3);                 
                        \
-               } else if ( strcmp(oper,"!=") == 0 || strcmp(oper, "<>") == 0){ 
\
+               } else if (strcmp(oper, "!=") == 0 || strcmp(oper, "<>") == 0) 
{ \
+                       hgh= low= *getArgReference_##TPE(stk,pci,3);            
                \
+                       anti = true;                                            
                                                \
+               } else if (strcmp(oper, "==") == 0 || strcmp(oper, "=") == 0) { 
\
                        hgh= low= *getArgReference_##TPE(stk,pci,3);            
                \
-                       anti = 1;                                               
                                                        \
-               } else if ( strcmp(oper,"==") == 0 || strcmp(oper, "=") == 0){  
\
+               } else if (strcmp(oper, "ne") == 0) {                           
                        \
                        hgh= low= *getArgReference_##TPE(stk,pci,3);            
                \
+                       anti = true;                                            
                                                \
+                       nil_matches = true;                                     
                                                \
+               } else if (strcmp(oper, "eq") == 0) {                           
                        \
+                       hgh= low= *getArgReference_##TPE(stk,pci,3);            
                \
+                       nil_matches = true;                                     
                                                \
                } else {                                                        
                                                        \
                        BBPreclaim(cand);                                       
                                                \
                        BBPreclaim(bn);                                         
                                                \
                        throw(MAL,"generator.thetaselect", SQLSTATE(42000) 
"Unknown operator"); \
                }                                                               
                                                                \
                for(j=0;j<cap;j++, f+=s, o++)                                   
                                \
-                       if( ((is_##TPE##_nil(low) || f >= low) && 
(is_##TPE##_nil(hgh) || f <= hgh)) != anti){ \
+                       if (nil_matches && is_##TPE##_nil(low) ? anti :         
                \
+                               ((is_##TPE##_nil(low) || f >= low) && 
(is_##TPE##_nil(hgh) || f <= hgh)) != anti){ \
                                if(cand == NULL || canditer_contains(&ci, o)) { 
                \
                                        *v++ = o;                               
                                                        \
                                        c++;                                    
                                                        \
@@ -880,7 +889,8 @@ VLTgenerator_subselect(Client cntxt, Mal
 
 str VLTgenerator_thetasubselect(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci)
 {
-       int anti =0,tpe;
+       bool anti = false;
+       int tpe;
        bat cndid =0;
        BAT *cand = 0, *bn = NULL;
        struct canditer ci = (struct canditer) {.tpe = cand_dense};
@@ -963,7 +973,7 @@ str VLTgenerator_thetasubselect(Client c
                        } else
                        if ( strcmp(oper,"!=") == 0 || strcmp(oper, "<>") == 0){
                                hgh= low= *getArgReference_TYPE(stk,pci,3, 
date);
-                               anti = 1;
+                               anti = true;
                        } else
                        if ( strcmp(oper,"==") == 0 || strcmp(oper, "=") == 0){
                                hgh= low= *getArgReference_TYPE(stk,pci,3, 
date);
@@ -1038,7 +1048,7 @@ str VLTgenerator_thetasubselect(Client c
                        } else
                        if ( strcmp(oper,"!=") == 0 || strcmp(oper, "<>") == 0){
                                hgh= low= *getArgReference_TYPE(stk,pci,3, 
date);
-                               anti = 1;
+                               anti = true;
                        } else
                        if ( strcmp(oper,"==") == 0 || strcmp(oper, "=") == 0){
                                hgh= low= *getArgReference_TYPE(stk,pci,3, 
date);
@@ -1116,7 +1126,7 @@ str VLTgenerator_thetasubselect(Client c
                        } else
                        if ( strcmp(oper,"!=") == 0 || strcmp(oper, "<>") == 0){
                                hgh= low= *getArgReference_TYPE(stk,pci,3, 
timestamp);
-                               anti = 1;
+                               anti = true;
                        } else
                        if ( strcmp(oper,"==") == 0 || strcmp(oper, "=") == 0){
                                hgh= low= *getArgReference_TYPE(stk,pci,3, 
timestamp);
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -24,7 +24,6 @@
 #define CATALOG_JUL2021 52300  /* first in Jul2021 */
 #define CATALOG_JAN2022 52301  /* first in Jan2022 */
 #define CATALOG_SEP2022 52302  /* first in Sep2022 */
-#define CATALOG_FIRST_AFTER_DEC2023 52303      /* first after Dec2023 */
 
 /* Note, CATALOG version 52300 is the first one where the basic system
  * tables (the ones created in store.c) have fixed and unchangeable
@@ -93,14 +92,6 @@ bl_preversion(sqlstore *store, int oldve
        }
 #endif
 
-#ifdef CATALOG_FIRST_AFTER_DEC2023
-       if (oldversion == CATALOG_FIRST_AFTER_DEC2023) {
-               /* upgrade to default releases */
-               store->catalog_version = oldversion;
-               return GDK_SUCCEED;
-       }
-#endif
-
        return GDK_FAIL;
 }
 
@@ -3262,9 +3253,8 @@ bl_postversion(void *Store, void *Lg)
        }
 #endif
 
-
-#ifdef CATALOG_FIRST_AFTER_DEC2023
-       if (store->catalog_version <= CATALOG_FIRST_AFTER_DEC2023) {
+#ifdef CATALOG_SEP2022
+       if (store->catalog_version <= CATALOG_SEP2022) {
                        /* new STRING column sys.keys.check */
                        BAT *b = log_temp_descriptor(log_find_bat(lg, 2088)); 
/* sys.keys.id */
                        if (b == NULL)
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
@@ -333,11 +333,8 @@ segments2cs(sql_trans *tr, segments *seg
        b->tnokey[1] = 0;
        b->theap->dirty = true;
        BUN cnt = BATcount(b);
-       MT_lock_unset(&b->theaplock);
 
        uint32_t *restrict dst;
-       /* why hashlock ?? */
-       MT_rwlock_wrlock(&b->thashlock);
        for (; s ; s=ATOMIC_PTR_GET(&s->next)) {
                if (s->start >= nr)
                        break;
@@ -404,12 +401,10 @@ segments2cs(sql_trans *tr, segments *seg
                                cnt = s->end;
                }
        }
-       MT_rwlock_wrunlock(&b->thashlock);
        if (nr > BATcount(b)) {
-               MT_lock_set(&b->theaplock);
                BATsetcount(b, nr);
-               MT_lock_unset(&b->theaplock);
        }
+       MT_lock_unset(&b->theaplock);
 
        bat_destroy(b);
        return LOG_OK;
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -23,7 +23,7 @@
 #include "bat/bat_logger.h"
 
 /* version 05.23.03 of catalog */
-#define CATALOG_VERSION 52304  /* second after Dec2023 */
+#define CATALOG_VERSION 52303  /* first in Aug2024 */
 
 ulng
 store_function_counter(sqlstore *store)
diff --git a/sql/test/BugTracker-2024/Tests/7541-levenshtein.test 
b/sql/test/BugTracker-2024/Tests/7541-levenshtein.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/7541-levenshtein.test
@@ -0,0 +1,38 @@
+statement ok
+CREATE TABLE t0 (c0 BOOLEAN)
+
+statement ok
+CREATE TABLE t1 (c1 INT)
+
+statement ok
+INSERT INTO t1(c1) VALUES (1)
+
+statement ok
+INSERT INTO t0(c0) VALUES (false)
+
+statement ok
+INSERT INTO t0(c0) VALUES (true)
+
+query II rowsort
+SELECT * FROM t1 LEFT  JOIN t0 ON LEVENSHTEIN(t0.c0, true)
+----
+1
+0
+
+query II rowsort
+SELECT * FROM t1 LEFT  JOIN t0 ON LEVENSHTEIN(t0.c0, true) WHERE t0.c0 UNION 
ALL SELECT * FROM t1 LEFT  JOIN t0 ON LEVENSHTEIN(t0.c0, true) WHERE (NOT 
t0.c0) UNION ALL SELECT * FROM t1 LEFT  JOIN t0 ON LEVENSHTEIN(t0.c0, true) 
WHERE ((t0.c0) IS NULL)
+----
+1
+0
+
+query I rowsort
+SELECT LEVENSHTEIN(true, true)
+----
+0
+
+query I rowsort
+SELECT LEVENSHTEIN(t0.c0, true) FROM t0
+----
+0
+4
+
diff --git a/sql/test/BugTracker-2024/Tests/All 
b/sql/test/BugTracker-2024/Tests/All
--- a/sql/test/BugTracker-2024/Tests/All
+++ b/sql/test/BugTracker-2024/Tests/All
@@ -63,8 +63,8 @@ 7524-right-outer-join
 7528-jarowinkler-null
 7534-is-distinct-from
 7535-create-view-groupby-func
-7536-mclient-forgets-to-flush
 7538-reduce-cast
 7539-is-distinct-from
 7537-prepare_stmt_with_dropped_table
 7536-mclient-forgets-to-flush
+7541-levenshtein
diff --git a/sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.py 
b/sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.py
--- a/sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.py
+++ b/sql/test/testdb-previous-upgrade-chain-hge/Tests/upgrade.py
@@ -76,7 +76,7 @@ if len(sys.argv) == 2 and sys.argv[1] ==
     if not os.getenv('HAVE_SHP'):
         for i in range(len(stable)):
             if 'create procedure SHPLoad' in stable[i]:
-                del stable[i-1:i+3]
+                del stable[i-1:i+4]
                 break
     import difflib
     for line in difflib.unified_diff(stable, srvout, fromfile='test', 
tofile=f):
diff --git a/sql/test/testdb-previous-upgrade-chain/Tests/upgrade.py 
b/sql/test/testdb-previous-upgrade-chain/Tests/upgrade.py
--- a/sql/test/testdb-previous-upgrade-chain/Tests/upgrade.py
+++ b/sql/test/testdb-previous-upgrade-chain/Tests/upgrade.py
@@ -77,7 +77,7 @@ if len(sys.argv) == 2 and sys.argv[1] ==
     if not os.getenv('HAVE_SHP'):
         for i in range(len(stable)):
             if 'create procedure SHPLoad' in stable[i]:
-                del stable[i-1:i+3]
+                del stable[i-1:i+4]
                 break
     import difflib
     for line in difflib.unified_diff(stable, srvout, fromfile='test', 
tofile=f):
diff --git a/sql/test/testdb-previous-upgrade-hge/Tests/upgrade.py 
b/sql/test/testdb-previous-upgrade-hge/Tests/upgrade.py
--- a/sql/test/testdb-previous-upgrade-hge/Tests/upgrade.py
+++ b/sql/test/testdb-previous-upgrade-hge/Tests/upgrade.py
@@ -76,7 +76,7 @@ if len(sys.argv) == 2 and sys.argv[1] ==
     if not os.getenv('HAVE_SHP'):
         for i in range(len(stable)):
             if 'create procedure SHPLoad' in stable[i]:
-                del stable[i-1:i+3]
+                del stable[i-1:i+4]
                 break
     import difflib
     for line in difflib.unified_diff(stable, srvout, fromfile='test', 
tofile=f):
diff --git a/sql/test/testdb-previous-upgrade/Tests/upgrade.py 
b/sql/test/testdb-previous-upgrade/Tests/upgrade.py
--- a/sql/test/testdb-previous-upgrade/Tests/upgrade.py
+++ b/sql/test/testdb-previous-upgrade/Tests/upgrade.py
@@ -77,7 +77,7 @@ if len(sys.argv) == 2 and sys.argv[1] ==
     if not os.getenv('HAVE_SHP'):
         for i in range(len(stable)):
             if 'create procedure SHPLoad' in stable[i]:
-                del stable[i-1:i+3]
+                del stable[i-1:i+4]
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to