Changeset: afedb69bc1e7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/afedb69bc1e7
Modified Files:
        sql/backends/monet5/generator/generator.c
Branch: Jul2021
Log Message:

Don't leak result bat on error


diffs (53 lines):

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
@@ -574,7 +574,7 @@ str VLTgenerator_thetasubselect(Client c
        BUN cap,j;
        oid o = 0;
        InstrPtr p;
-       str oper, msg= MAL_SUCCEED;
+       str oper;
 
        (void) cntxt;
        p = findGeneratorDefinition(mb,pci,pci->argv[1]);
@@ -685,8 +685,10 @@ str VLTgenerator_thetasubselect(Client c
                                }
                                val = timestamp_add_usec(val, s);
                                if (is_timestamp_nil(val)) {
-                                       msg = createException(MAL, 
"generator.thetaselect", SQLSTATE(22003) "overflow in calculation");
-                                       goto wrapup;
+                                       if (cand)
+                                               BBPunfix(cand->batCacheid);
+                                       BBPreclaim(bn); 
+                                       throw(MAL, "generator.thetaselect", 
SQLSTATE(22003) "overflow in calculation");
                                }
                        }
                } else {
@@ -696,19 +698,16 @@ str VLTgenerator_thetasubselect(Client c
                }
        }
 
-wrapup:
        if( cndid)
                BBPunfix(cndid);
-       if( bn){
-               bn->tsorted = true;
-               bn->trevsorted = false;
-               bn->tkey = true;
-               bn->tnil = false;
-               bn->tnonil = true;
-               BATsetcount(bn,c);
-               BBPkeepref(*getArgReference_bat(stk,pci,0)= bn->batCacheid);
-       }
-       return msg;
+       bn->tsorted = true;
+       bn->trevsorted = false;
+       bn->tkey = true;
+       bn->tnil = false;
+       bn->tnonil = true;
+       BATsetcount(bn,c);
+       BBPkeepref(*getArgReference_bat(stk,pci,0)= bn->batCacheid);
+       return MAL_SUCCEED;
 }
 
 #define VLTprojection(TPE)                                                     
                                        \
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to