Changeset: 26800b3b7a0e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=26800b3b7a0e
Modified Files:
sql/backends/monet5/vaults/fits.mx
Branch: default
Log Message:
small simplification of string loading from fits files
diffs (78 lines):
diff --git a/sql/backends/monet5/vaults/fits.mx
b/sql/backends/monet5/vaults/fits.mx
--- a/sql/backends/monet5/vaults/fits.mx
+++ b/sql/backends/monet5/vaults/fits.mx
@@ -495,8 +495,7 @@
int status = 0, cnum = 0, fid, hdu, hdutype, i, j, anynull=0, mtype;
int *tpcode = NULL;
long *rep=NULL, *wid=NULL, rows;
- char keywrd[80], **cname, **v = NULL, nm[FLEN_VALUE];
- BAT *tmp = NULL;
+ char keywrd[80], **cname, nm[FLEN_VALUE];
ptr nilptr;
@@ -578,46 +577,38 @@
/* data load */
fits_get_num_rows(fptr, &rows, &status);
for ( j = 1; j <= cnum; j++ ){
+ BAT *tmp = NULL;
mtype = fits2mtype(tpcode[j-1]);
nilptr = ATOMnil(mtype);
col = mvc_bind_column(m, tbl, cname[j-1]);
+ tmp = BATnew(TYPE_void, mtype, rows);
+ BATseqbase(tmp, 0);
+ if ( rows > (long) REMAP_PAGE_MAXSIZE )
+ BATmmap(tmp, STORE_MMAP, STORE_MMAP, STORE_MMAP,
STORE_MMAP, 0);
if (mtype != TYPE_str ){
- tmp = BATnew(TYPE_void, mtype, rows);
- BATseqbase(tmp, 0);
- if ( rows > (long) REMAP_PAGE_MAXSIZE )
- BATmmap(tmp, STORE_MMAP, STORE_MMAP,
STORE_MMAP, STORE_MMAP, 0);
- fits_read_col(fptr, tpcode[j-1], j, 1, 1, rows, nilptr, (void *)
BUNtloc(bat_iterator(tmp),BUNfirst(tmp)), &anynull, &status );
- }
- else {
- v = (char **) GDKzalloc(sizeof(char *) * rows);
- for(i = 0; i < rows; i++)
- v[i] = GDKzalloc(wid[j-1]);
- fits_read_col(fptr, tpcode[j-1], j, 1, 1, rows, nilptr,
(void *)v, &anynull, &status );
+ fits_read_col(fptr, tpcode[j-1], j, 1, 1, rows, nilptr,
(void *) BUNtloc(bat_iterator(tmp),BUNfirst(tmp)), &anynull, &status );
+ BATsetcount(tmp, rows);
+ tmp->tsorted = 0;
+ } else {
+ char *v = GDKzalloc(100 /* TODO needs proper size*/);
+ for(i = 0; i < rows; i++) {
+ fits_read_col(fptr, tpcode[j-1], j, 1+i, 1, 1,
nilptr, &v, &anynull, &status );
+ BUNappend(tmp, v, TRUE);
+ }
+ GDKfree(v);
}
if ( status ){
char buf[FLEN_ERRMSG+1];
fits_read_errmsg(buf);
msg = createException(MAL, "fits.loadtable", "Cannot
load column %s of %s table: %s.\n", cname[j-1], tname, buf);
- goto finish;
+ break;
}
-
- if (mtype != TYPE_str ){
- BATsetcount(tmp, rows);
- tmp->tsorted = 0;
- store_funcs.append_col(m->session->tr, col, tmp, TYPE_bat);
- }
- else {
- for (i = 0; i<rows; i++)
- store_funcs.append_col(m->session->tr, col,
v[i], mtype);
- for(i = 0; i < rows; i++)
- GDKfree(v[i]);
- GDKfree(v);
- }
+ store_funcs.append_col(m->session->tr, col, tmp, TYPE_bat);
+ BBPunfix(tmp->batCacheid);
}
- finish:
GDKfree(tpcode);
GDKfree(rep);
GDKfree(wid);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list