Changeset: 7a24600fe8aa for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7a24600fe8aa
Modified Files:
sql/backends/monet5/miniseed/registrar.c
Branch: DVframework
Log Message:
Registrar: fixed leaks caused by BAT refs.
diffs (233 lines):
diff --git a/sql/backends/monet5/miniseed/registrar.c
b/sql/backends/monet5/miniseed/registrar.c
--- a/sql/backends/monet5/miniseed/registrar.c
+++ b/sql/backends/monet5/miniseed/registrar.c
@@ -9,6 +9,7 @@
#include "sql_mvc.h"
#include "sql.h"
+#include "gdk_private.h"
/*
* keeps BAT and other properties of columns of a table.
@@ -512,7 +513,7 @@ str register_clean_up(temp_container* tc
{
for(c = 0; c < tc->num_columns[t]; c++)
{
- BBPreleaseref(tc->tables_columns[t].column_bats[c]);
+ BBPreleaselref(tc->tables_columns[t].column_bats[c]);
GDKfree(tc->tables_columns[t].column_names[c]);
GDKfree(tc->tables_columns[t].column_types_strs[c]);
}
@@ -564,35 +565,44 @@ str mseed_register(str file_path, temp_c
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[0])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) file_path, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[0]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[1])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
ch[0] = msr->dataquality;
// BUNappend(aBAT, (ptr) &(msr->dataquality), FALSE);
BUNappend(aBAT, (ptr) ch, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[1]);
+
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[2])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) msr->network, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[2]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[3])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) msr->station, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[3]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[4])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) msr->location, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[4]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[5])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) msr->channel, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[5]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[6])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->encoding), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[6]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[7])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->byteorder), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[7]);
files_done = TRUE;
}
@@ -600,43 +610,50 @@ str mseed_register(str file_path, temp_c
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[0])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) file_path, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[0]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[1])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->sequence_number), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[1]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[2])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->reclen), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[2]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[3])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
st = (lng) msr->starttime / 1000;
MTIMEtimestamp_lng(&start_timestamp, &st);
BUNappend(aBAT, (ptr) &start_timestamp, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[3]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[4])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->samprate), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[4]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[5])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->samplecnt), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[5]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[6])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
ch[0] = msr->sampletype;
// BUNappend(aBAT, (ptr) &(msr->sampletype), FALSE);
BUNappend(aBAT, (ptr) ch, FALSE);
-
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[6]);
+
}
+ /* Cleanup memory and close file */
+ ms_readmsr (&msr, NULL, 0, NULL, NULL, 0, 0, 0);
+
if ( retcode != MS_ENDOFFILE )
throw(MAL, "mseed_register", "Cannot read %s: %s\n", file_path,
ms_errorstr(retcode));
- /* Cleanup memory and close file */
- ms_readmsr (&msr, NULL, 0, NULL, NULL, 0, 0, 0);
-
return MAL_SUCCEED;
}
@@ -674,35 +691,44 @@ str mseed_register_and_mount(str file_pa
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[0])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) file_path, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[0]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[1])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
ch[0] = msr->dataquality;
// BUNappend(aBAT, (ptr)
&(msr->dataquality), FALSE);
BUNappend(aBAT, (ptr) ch, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[1]);
+
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[2])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) msr->network, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[2]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[3])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) msr->station, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[3]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[4])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) msr->location, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[4]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[5])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) msr->channel, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[5]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[6])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->encoding), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[6]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[0].column_bats[7])) == NULL)
throw(MAL, "mseed_register",
RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->byteorder), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[0].column_bats[7]);
files_done = TRUE;
}
@@ -710,34 +736,41 @@ str mseed_register_and_mount(str file_pa
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[0])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) file_path, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[0]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[1])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->sequence_number), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[1]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[2])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->reclen), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[2]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[3])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
st = (lng) msr->starttime / 1000;
MTIMEtimestamp_lng(&start_timestamp, &st);
BUNappend(aBAT, (ptr) &start_timestamp, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[3]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[4])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->samprate), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[4]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[5])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
BUNappend(aBAT, (ptr) &(msr->samplecnt), FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[5]);
if ((aBAT =
BATdescriptor(ret_tc->tables_columns[1].column_bats[6])) == NULL)
throw(MAL, "mseed_register", RUNTIME_OBJECT_MISSING);
ch[0] = msr->sampletype;
// BUNappend(aBAT, (ptr) &(msr->sampletype),
FALSE);
BUNappend(aBAT, (ptr) ch, FALSE);
+ BBPreleaseref(ret_tc->tables_columns[1].column_bats[6]);
// mount
{
@@ -771,6 +804,11 @@ str mseed_register_and_mount(str file_pa
BUNappend(bdata, (ptr) (data_samples+i), FALSE);
sampling_time += sample_interval;
}
+
+ BBPreleaseref(ret_tc->tables_columns[2].column_bats[0]);
+ BBPreleaseref(ret_tc->tables_columns[2].column_bats[1]);
+ BBPreleaseref(ret_tc->tables_columns[2].column_bats[2]);
+ BBPreleaseref(ret_tc->tables_columns[2].column_bats[3]);
}
}
@@ -910,10 +948,10 @@ str register_table(Client cntxt, MalBlkP
{
// see if BATs are filled
/* bat-id -> BAT-descriptor */
- BAT *aBAT = NULL;
+// BAT *aBAT = NULL;
- if ((aBAT =
BATdescriptor(tc->tables_columns[table_idx].column_bats[c])) == NULL)
- throw(MAL, "registrar.register_table",
RUNTIME_OBJECT_MISSING);
+// if ((aBAT =
BATdescriptor(tc->tables_columns[table_idx].column_bats[c])) == NULL)
+// throw(MAL, "registrar.register_table",
RUNTIME_OBJECT_MISSING);
// can be uncommented for debugging to see if the BATs are filled
// if (aBAT->ttype == TYPE_str)
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list