Changeset: b00f5f33afd3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b00f5f33afd3
Modified Files:
        sql/src/backends/monet5/vaults/Makefile.ag
        sql/src/backends/monet5/vaults/fits.mx
Branch: default
Log Message:

Load of FITS tables (whithout string columns).
First SQL queries against loaded data work.


diffs (141 lines):

diff -r 916308ab6293 -r b00f5f33afd3 sql/src/backends/monet5/vaults/Makefile.ag
--- a/sql/src/backends/monet5/vaults/Makefile.ag        Wed Dec 08 15:23:14 
2010 +0100
+++ b/sql/src/backends/monet5/vaults/Makefile.ag        Wed Dec 08 16:18:06 
2010 +0100
@@ -15,7 +15,7 @@
 # Copyright August 2008-2010 MonetDB B.V.
 # All Rights Reserved.
 
-INCLUDES = ../../../include ../../../common ../../../storage ../../../server 
../ ../../../storage/bpm \
+INCLUDES = ../../../include ../../../common ../../../storage ../../../server 
../ \
        $(MONETDB5_INCS) $(CLIENTS_INCS) $(MONETDB_INCS) $(READLINE_INCS) 
$(MSEED_CFLAGS) $(CFITSIO_CFLAGS)
 
 lib__vault = {
diff -r 916308ab6293 -r b00f5f33afd3 sql/src/backends/monet5/vaults/fits.mx
--- a/sql/src/backends/monet5/vaults/fits.mx    Wed Dec 08 15:23:14 2010 +0100
+++ b/sql/src/backends/monet5/vaults/fits.mx    Wed Dec 08 16:18:06 2010 +0100
@@ -49,7 +49,6 @@
 #include <sql_mvc.h>
 #include <sql_scenario.h>
 #include <sql.h>
-#include "bpm_storage.h"
 #include "clients.h"
 #include "mal.h" 
 #include "mal_client.h"
@@ -301,7 +300,7 @@
                store_funcs.append_col(m->session->tr,
                        mvc_bind_column(m, fits_tbl, "id"), &tid, TYPE_int);
                store_funcs.append_col(m->session->tr,
-                       mvc_bind_column(m, fits_tbl, "name"), tname, TYPE_str);
+                       mvc_bind_column(m, fits_tbl, "name"), toLower(tname), 
TYPE_str);
                store_funcs.append_col(m->session->tr,
                        mvc_bind_column(m, fits_tbl, "columns"), &cnum, 
TYPE_str);
                store_funcs.append_col(m->session->tr,
@@ -323,7 +322,7 @@
                        store_funcs.append_col(m->session->tr,
                                mvc_bind_column(m, fits_col, "id"), &j, 
TYPE_int);
                        store_funcs.append_col(m->session->tr,
-                               mvc_bind_column(m, fits_col, "name"), cname, 
TYPE_str);
+                               mvc_bind_column(m, fits_col, "name"), 
toLower(cname), TYPE_str);
                        store_funcs.append_col(m->session->tr,
                                mvc_bind_column(m, fits_col, "type"), tform, 
TYPE_str);
                        store_funcs.append_col(m->session->tr,
@@ -345,17 +344,17 @@
        sql_table *fits_fl, *fits_tbl, *tbl = NULL;
        sql_column *col;
        sql_subtype tpe;
-       sql_bpm *p; 
        fitsfile *fptr; 
        str tname = *(str*) getArgReference(stk, pci, 1);
        str fname;
        str msg = MAL_SUCCEED; 
        oid rid = oid_nil, frid = oid_nil;
-       int status = 0, cnum = 0, fid, hdu, hdutype, *tpcode = NULL, j, anynull;
+       int status = 0, cnum = 0, fid, hdu, hdutype, *tpcode = NULL, j, 
anynull, mtype, i;
        long rep, wid, rows;
-       char keywrd[80], **cname;
-       BAT *b;
+       char keywrd[80], **cname, *v, nm[FLEN_VALUE];
+       /*      BAT *b;*/
        ptr nilptr;
+       
 
        msg = getContext(cntxt, mb, &m, NULL);
        if (msg)
@@ -389,9 +388,9 @@
        col = mvc_bind_column(m, fits_fl, "id");
        frid = table_funcs.column_find_row(m->session->tr, col, (void *) &fid, 
NULL);
        col = mvc_bind_column(m, fits_fl, "name");
-       fname = *(str*) table_funcs.column_find_value(m->session->tr, col, 
frid);
-    if ( fits_open_file(&fptr, fname, READONLY, &status) ){
-               msg = createException(MAL, "fits.loadtable", "Missing FITS file 
%s.\n", fname);
+       fname = (char *) table_funcs.column_find_value(m->session->tr, col, 
frid);
+       if ( fits_open_file(&fptr, fname, READONLY, &status) ){
+               msg = createException(MAL, "fits.loadtable", "Missing FITS file 
%s.\n", fname);
                return msg;
        }
 
@@ -411,15 +410,16 @@
 
        tpcode = (int *)GDKzalloc(sizeof(int) * cnum);
        cname = (char **)GDKzalloc(sizeof(char *) * cnum);
+
        for ( j = 1; j <= cnum; j++ ){
                /*              fits_get_acolparms(fptr, j, cname, &tbcol, 
tunit, tform, &tscal, &tzero, tnull, tdisp, &status); */
-               cname[j-1] = (char *)GDKzalloc(FLEN_VALUE);
                snprintf(keywrd,80,"TTYPE%d", j);
-               fits_read_key(fptr, TSTRING, keywrd, cname[j-1], NULL, &status);
+               fits_read_key(fptr, TSTRING, keywrd, nm, NULL, &status);
                if ( status ) {
-                       snprintf(cname[j-1],FLEN_VALUE,"Column_%d", j);
+                       snprintf(nm,FLEN_VALUE,"column_%d", j);
                        status = 0;
                }
+               cname[j-1] = GDKstrdup(toLower(nm));
                fits_get_coltype(fptr, j, &tpcode[j-1], &rep, &wid, &status);
                fits2subtype(&tpe, tpcode[j-1], rep, wid);
                mvc_create_column(m, tbl, cname[j-1], &tpe);
@@ -428,28 +428,31 @@
        /* data load */
        fits_get_num_rows(fptr, &rows, &status);
        for ( j = 1; j <= cnum; j++ ){
-               nilptr = ATOMnil(fits2mtype(tpcode[j-1]));
+               mtype = fits2mtype(tpcode[j-1]);
+               nilptr = ATOMnil(mtype);
                col = mvc_bind_column(m, tbl, cname[j-1]);
-               p = col->data;
-               b = BATdescriptor(p->parts[0].bid);
-        fits_read_col(fptr, tpcode[j-1], j, 1, 1, rows, nilptr, 
BUNtloc(bat_iterator(b),BUNfirst(b)), &anynull, &status );
-               BBPunfix(b->batCacheid);
+               v = GDKzalloc(rows * ATOMsize(mtype));
+               /*              b = store_funcs.bind_col(m->session->tr, col, 
RD_INS);
+                               fits_read_col(fptr, tpcode[j-1], j, 1, 1, rows, 
nilptr, BUNtloc(bat_iterator(b),BUNfirst(b)), &anynull, &status ); */
+               fits_read_col(fptr, tpcode[j-1], j, 1, 1, rows, nilptr, (void 
*)v, &anynull, &status );
                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);
-                       fits_close_file(fptr, &status);
-                       return msg;
+                       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;
         }
+               for (i = 0; i<rows; i++)
+                       store_funcs.append_col(m->session->tr, col, v + i * 
ATOMsize(mtype), mtype);
+               GDKfree(v);
        }
 
+ finish:
        GDKfree(tpcode);
-       for ( j = 0; j < cnum; j++ )
-               GDKfree(cname[j]);
        GDKfree(cname);
 
        fits_close_file(fptr, &status);
-       return MAL_SUCCEED;
+       return msg;
 }
 
 @}
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to