Changeset: 772268381663 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=772268381663
Modified Files:
        sql/backends/monet5/vaults/fits.c
Branch: headless
Log Message:

Merge with default branch.


diffs (115 lines):

diff --git a/sql/backends/monet5/vaults/fits.c 
b/sql/backends/monet5/vaults/fits.c
--- a/sql/backends/monet5/vaults/fits.c
+++ b/sql/backends/monet5/vaults/fits.c
@@ -97,7 +97,7 @@
                fits_tp = mvc_create_table(m, sch, "fits_table_properties", 
tt_table, 0, SQL_PERSIST, 0, 5);
                mvc_create_column_(m, fits_tp, "table_id", "int", 32);
                mvc_create_column_(m, fits_tp, "xtension", "varchar", 80);
-               mvc_create_column_(m, fits_tp, "bitpix", "varchar", 80);
+               mvc_create_column_(m, fits_tp, "bitpix", "int", 32);
                mvc_create_column_(m, fits_tp, "stilvers", "varchar", 80);
                mvc_create_column_(m, fits_tp, "stilclas", "varchar", 80);
        }
@@ -286,13 +286,13 @@
        str msg = MAL_SUCCEED;
        str fname = *(str*) getArgReference(stk, pci, 1);
        fitsfile *fptr;  /* pointer to the FITS file */
-       int status = 0, i, j, hdutype, hdunum = 1, cnum = 0;
+       int status = 0, i, j, hdutype, hdunum = 1, cnum = 0, bitpixnumber= 0;
        oid  fid, tid, cid, rid = oid_nil;
        char tname[BUFSIZ], *tname_low = NULL, *s, bname[BUFSIZ], stmt[BUFSIZ];
        long tbcol;
        char cname[BUFSIZ], tform[BUFSIZ], tunit[BUFSIZ], tnull[BUFSIZ], 
tdisp[BUFSIZ];
        double tscal, tzero;
-       char bitpixnumber[BUFSIZ]="", xtensionname[BUFSIZ]="", 
stilversion[BUFSIZ]="";
+       char xtensionname[BUFSIZ]="", stilversion[BUFSIZ]="";
        char stilclass[BUFSIZ]="", tdate[BUFSIZ]="", orig[BUFSIZ]= "", 
comm[BUFSIZ]="";
 
        msg = getContext(cntxt, mb, &m, NULL);
@@ -368,7 +368,7 @@
                        }
                }
 
-               fits_read_key(fptr, TSTRING, "BITPIX", bitpixnumber, NULL, 
&status);
+               fits_read_key(fptr, TSTRING, "BITPIX", &bitpixnumber, NULL, 
&status);
                if ( status ) {
                        status = 0;
                }
@@ -404,7 +404,7 @@
                store_funcs.append_col(m->session->tr,
                        mvc_bind_column(m, fits_tbl, "name"), tname_low, 
TYPE_str);
                store_funcs.append_col(m->session->tr,
-                       mvc_bind_column(m, fits_tbl, "columns"), &cnum, 
TYPE_str);
+                       mvc_bind_column(m, fits_tbl, "columns"), &cnum, 
TYPE_int);
                store_funcs.append_col(m->session->tr,
                        mvc_bind_column(m, fits_tbl, "file_id"), &fid, 
TYPE_int);
                store_funcs.append_col(m->session->tr,
@@ -421,7 +421,7 @@
                store_funcs.append_col(m->session->tr,
                        mvc_bind_column(m, fits_tp, "xtension"), xtensionname, 
TYPE_str);
                store_funcs.append_col(m->session->tr,
-                       mvc_bind_column(m, fits_tp, "bitpix"), bitpixnumber, 
TYPE_str);
+                       mvc_bind_column(m, fits_tp, "bitpix"), &bitpixnumber, 
TYPE_int);
                store_funcs.append_col(m->session->tr,
                        mvc_bind_column(m, fits_tp, "stilvers"), stilversion, 
TYPE_str);
                store_funcs.append_col(m->session->tr,
@@ -459,7 +459,7 @@
        int *tpcode = NULL;
        long *rep=NULL, *wid=NULL, rows;
        char keywrd[80], **cname, **v = NULL, nm[FLEN_VALUE];
-       BAT *b, *tmp = NULL;
+       BAT *b;
        ptr nilptr;
 
 
@@ -511,8 +511,9 @@
        }
 
        /* create a SQL table to hold the FITS table */
-       col = mvc_bind_column(m, fits_tbl, "columns");
-       cnum = *(int*) table_funcs.column_find_value(m->session->tr, col, rid);
+       /*      col = mvc_bind_column(m, fits_tbl, "columns");
+         cnum = *(int*) table_funcs.column_find_value(m->session->tr, col, 
rid); */
+       fits_get_num_cols(fptr, &cnum, &status);
        tbl = mvc_create_table(m, sch, tname, tt_table, 0, SQL_PERSIST, 0, 
cnum);
 
        tpcode = (int *)GDKzalloc(sizeof(int) * cnum);
@@ -542,11 +543,13 @@
        for ( j = 1; j <= cnum; j++ ){
                mtype = fits2mtype(tpcode[j-1]);
                nilptr = ATOMnil(mtype);
+               col = mvc_bind_column(m, tbl, cname[j-1]);
 
                if (mtype != TYPE_str ){
-                       tmp = BATnew(TYPE_void, mtype, rows);
-                       BATseqbase(tmp, 0);
-                       fits_read_col(fptr, tpcode[j-1], j, 1, 1, rows, nilptr, 
(void *) BUNtloc(bat_iterator(tmp),BUNfirst(tmp)), &anynull, &status );
+                       b = store_funcs.bind_col(m->session->tr, col, RDONLY);
+                       BATextend(b, rows);
+                       BATmadvise(b, BUF_SEQUENTIAL,BUF_SEQUENTIAL,0,0);
+                       fits_read_col(fptr, tpcode[j-1], j, 1, 1, rows, nilptr, 
(void *) BUNtloc(bat_iterator(b),BUNfirst(b)), &anynull, &status );
                }
                else {
                        v = (char **) GDKzalloc(sizeof(char *) * rows);
@@ -559,19 +562,13 @@
                        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);
-                       /*      GDKfree(v); */
                        goto finish;
                }
 
-               col = mvc_bind_column(m, tbl, cname[j-1]);
                if (mtype != TYPE_str ){
-                       BATsetcount(tmp, rows);
-                       BATsetcapacity(tmp, rows);
-                       tmp->tsorted = 0;
-                       b = store_funcs.bind_col(m->session->tr, col, RDONLY);
-                       BATappend(b,tmp,TRUE);
+                       BATsetcount(b, rows);
+                       b->tsorted = 0;
                        BBPunfix(b->batCacheid);
-                       BBPreclaim(tmp);
                }
                else {
                        for (i = 0; i<rows; i++)
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to