Changeset: 58f53e7a7563 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/58f53e7a7563
Modified Files:
        sql/storage/store.c
Branch: Aug2024
Log Message:

Some error checking.


diffs (66 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -7398,9 +7398,11 @@ convert_part_values(sql_trans *tr, sql_t
                                        if (ok)
                                                ok = VALconvert(localtype, 
&vvalue);
                                        if (ok) {
-                                               v->value = NEW_ARRAY(char, 
vvalue.len);
-                                               memcpy(v->value, 
VALget(&vvalue), vvalue.len);
-                                               v->length = vvalue.len;
+                                               ok = v->value = NEW_ARRAY(char, 
vvalue.len);
+                                               if (ok) {
+                                                       memcpy(v->value, 
VALget(&vvalue), vvalue.len);
+                                                       v->length = vvalue.len;
+                                               }
                                        }
                                        VALclear(&vvalue);
                                        if (!ok)
@@ -7425,10 +7427,17 @@ convert_part_values(sql_trans *tr, sql_t
 
                                                p->part.range.minvalue = 
NEW_ARRAY(char, nil_len);
                                                p->part.range.maxvalue = 
NEW_ARRAY(char, nil_len);
-                                               memcpy(p->part.range.minvalue, 
nil_ptr, nil_len);
-                                               memcpy(p->part.range.maxvalue, 
nil_ptr, nil_len);
-                                               p->part.range.minlength = 
nil_len;
-                                               p->part.range.maxlength = 
nil_len;
+                                               if (p->part.range.minvalue == 
NULL ||
+                                                       p->part.range.maxvalue 
== NULL) {
+                                                       ok = NULL;
+                                                       
_DELETE(p->part.range.minvalue);
+                                                       
_DELETE(p->part.range.maxvalue);
+                                               } else {
+                                                       
memcpy(p->part.range.minvalue, nil_ptr, nil_len);
+                                                       
memcpy(p->part.range.maxvalue, nil_ptr, nil_len);
+                                                       p->part.range.minlength 
= nil_len;
+                                                       p->part.range.maxlength 
= nil_len;
+                                               }
                                        } else {
                                                ok = VALconvert(localtype, 
&vmin);
                                                if (ok)
@@ -7436,13 +7445,20 @@ convert_part_values(sql_trans *tr, sql_t
                                                if (ok) {
                                                        p->part.range.minvalue 
= NEW_ARRAY(char, vmin.len);
                                                        p->part.range.maxvalue 
= NEW_ARRAY(char, vmax.len);
-                                                       
memcpy(p->part.range.minvalue, VALget(&vmin), vmin.len);
-                                                       
memcpy(p->part.range.maxvalue, VALget(&vmax), vmax.len);
-                                                       p->part.range.minlength 
= vmin.len;
-                                                       p->part.range.maxlength 
= vmax.len;
+                                                       if 
(p->part.range.minvalue == NULL ||
+                                                               
p->part.range.maxvalue == NULL) {
+                                                               ok = NULL;
+                                                               
_DELETE(p->part.range.minvalue);
+                                                               
_DELETE(p->part.range.maxvalue);
+                                                       } else {
+                                                               
memcpy(p->part.range.minvalue, VALget(&vmin), vmin.len);
+                                                               
memcpy(p->part.range.maxvalue, VALget(&vmax), vmax.len);
+                                                               
p->part.range.minlength = vmin.len;
+                                                               
p->part.range.maxlength = vmax.len;
+                                                       }
                                                }
                                        }
-                                       if (isPartitionedByColumnTable(p->t))
+                                       if (ok && 
isPartitionedByColumnTable(p->t))
                                                col_set_range(tr, p, true);
                                }
                                VALclear(&vmin);
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to