Changeset: 0edd711f0631 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0edd711f0631
Modified Files:
        monetdb5/modules/atoms/url.c
        monetdb5/modules/atoms/uuid.c
        sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql
        sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out
Branch: default
Log Message:

isauuid and isaURL functions must return null on null input


diffs (64 lines):

diff --git a/monetdb5/modules/atoms/url.c b/monetdb5/modules/atoms/url.c
--- a/monetdb5/modules/atoms/url.c
+++ b/monetdb5/modules/atoms/url.c
@@ -689,7 +689,10 @@ URLisaURL(bit *retval, str *val)
 {
        if (val == NULL || *val == NULL)
                throw(ILLARG, "url.isaURL", "url missing");
-       *retval = skip_scheme(*val) != NULL;
+       if (strNil(*val))
+               *retval = bit_nil;
+       else
+               *retval = skip_scheme(*val) != NULL;
        return MAL_SUCCEED;
 }
 
diff --git a/monetdb5/modules/atoms/uuid.c b/monetdb5/modules/atoms/uuid.c
--- a/monetdb5/modules/atoms/uuid.c
+++ b/monetdb5/modules/atoms/uuid.c
@@ -239,7 +239,14 @@ UUIDisaUUID(bit *retval, str *s)
        uuid u;
        uuid *pu = &u;
        size_t l = UUID_SIZE;
-       *retval = UUIDfromString(*s, &l, &pu, false) > 1; /* valid, not nil */
+       ssize_t res = UUIDfromString(*s, &l, &pu, false);
+
+       if (res > 1)
+               *retval = true;
+       else if (res == 1)
+               *retval = bit_nil;
+       else
+               *retval = false;
        return MAL_SUCCEED;
 }
 
diff --git a/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql 
b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql
--- a/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql
+++ b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.sql
@@ -6,7 +6,7 @@ select isauuid('XYZaee1a538-aca1-381b-d9
 select isauuid(uuid()); -- true
 select isauuid('aee1a538-aca1-381b-d9f4-8c29ef3f5f34'); -- true
 select isauuid('AEE1A538-ACA1-381B-D9F4-8C29EF3F5F34'); -- true
-select isauuid(null); -- false
+select isauuid(null); -- null
 select cast('aee1a538-aca1-381b-d9f4-8c29ef3f5f34' as uuid); -- true
 select cast('AEE1A538-ACA1-381B-D9F4-8C29EF3F5F34' as uuid); -- true
 
diff --git a/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out 
b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out
--- a/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out
+++ b/sql/test/BugTracker-2019/Tests/isaUUID.Bug-6784.stable.out
@@ -101,12 +101,12 @@ stdout of test 'isaUUID.Bug-6784` in dir
 % boolean # type
 % 5 # length
 [ true ]
-#select isauuid(null); -- false
+#select isauuid(null); -- null
 % . # table_name
 % %1 # name
 % boolean # type
 % 5 # length
-[ false        ]
+[ NULL ]
 #select cast('aee1a538-aca1-381b-d9f4-8c29ef3f5f34' as uuid); -- true
 % . # table_name
 % %1 # name
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to