Changeset: 12854af12df1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=12854af12df1
Modified Files:
Branch: default
Log Message:
merged
diffs (truncated from 369 to 300 lines):
diff -r 3d33e0899e64 -r 12854af12df1 MonetDB/configure.ag
--- a/MonetDB/configure.ag Fri Dec 03 20:55:11 2010 +0100
+++ b/MonetDB/configure.ag Fri Dec 03 20:56:09 2010 +0100
@@ -84,10 +84,10 @@
AM_MONETDB_LIBS()
# Checks for typedefs, structures, and compiler characteristics.
-AC_COMPILE_IFELSE(AC_LANG_SOURCE([int foo(int * restrict p) { return *p; }]),
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int foo(int * restrict p) { return *p;
}]])],
AC_DEFINE(HAVE_RESTRICT, 1,
[Define if the compiler supports the restrict keyword]),
- AC_COMPILE_IFELSE(AC_LANG_SOURCE([int foo(int * __restrict__ p) {
return *p; }]),
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int foo(int * __restrict__ p) {
return *p; }]])],
AC_DEFINE(HAVE___RESTRICT__, 1,
[Define if the compiler supports the __restrict__
keyword])))
diff -r 3d33e0899e64 -r 12854af12df1
MonetDB5/src/mal/Tests/parseErrors.stable.out
--- a/MonetDB5/src/mal/Tests/parseErrors.stable.out Fri Dec 03 20:55:11
2010 +0100
+++ b/MonetDB5/src/mal/Tests/parseErrors.stable.out Fri Dec 03 20:56:09
2010 +0100
@@ -14,8 +14,8 @@
#K := :=
!SyntaxException:parseError:K := :=
!SyntaxException:parseError: ^Type identifier expected
-
-
+!SyntaxException:parseError:K := :=
+!SyntaxException:parseError: ^';' expected
function user.main():void;
K;
io.print(1);
diff -r 3d33e0899e64 -r 12854af12df1 sql/src/backends/monet5/vaults/Makefile.ag
--- a/sql/src/backends/monet5/vaults/Makefile.ag Fri Dec 03 20:55:11
2010 +0100
+++ b/sql/src/backends/monet5/vaults/Makefile.ag Fri Dec 03 20:56:09
2010 +0100
@@ -15,7 +15,7 @@
# Copyright August 2008-2010 MonetDB B.V.
# All Rights Reserved.
-INCLUDES = ../../../include ../../../common ../../../storage ../../../server
../ \
+INCLUDES = ../../../include ../../../common ../../../storage ../../../server
../ ../../../storage/bpm \
$(MONETDB5_INCS) $(CLIENTS_INCS) $(MONETDB_INCS) $(READLINE_INCS)
$(MSEED_CFLAGS) $(CFITSIO_CFLAGS)
lib__vault = {
diff -r 3d33e0899e64 -r 12854af12df1 sql/src/backends/monet5/vaults/fits.mx
--- a/sql/src/backends/monet5/vaults/fits.mx Fri Dec 03 20:55:11 2010 +0100
+++ b/sql/src/backends/monet5/vaults/fits.mx Fri Dec 03 20:56:09 2010 +0100
@@ -32,6 +32,10 @@
address FITSattach
comment "Open a FITS file and return catalog of the table HDUs";
+pattern load(tablename :str):void
+address FITSloadTable
+comment "Load a FITS table from an attached file";
+
@h
#ifndef _FITS_
@@ -43,7 +47,9 @@
#include "longnam.h"
#include "sql_config.h"
#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"
@@ -61,12 +67,15 @@
fits_export str FITStest(int *res, str *fname);
fits_export str FITSattach(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
+fits_export str FITSloadTable(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
#endif
@-
@c
#include "fits.h"
+#define FITS_INS_COL "INSERT INTO fits_columns(id, name, type, units,table_id)
\
+ VALUES(%d, '%s','%s','%s',%d);"
str
FITStest(int *res, str *fname)
@@ -107,6 +116,7 @@
fits_tbl = mvc_create_table(m, sch, "fits_tables", tt_table, 0,
SQL_PERSIST, 0, 4);
mvc_create_column_(m, fits_tbl, "id","int",32);
mvc_create_column_(m, fits_tbl, "name","varchar",80);
+ mvc_create_column_(m, fits_tbl, "columns","int",32);
mvc_create_column_(m, fits_tbl, "file_id","int",32);
mvc_create_column_(m, fits_tbl, "hdu","int",32);
}
@@ -117,9 +127,8 @@
mvc_create_column_(m, fits_col, "id","int",32);
mvc_create_column_(m, fits_col, "name","varchar",80);
mvc_create_column_(m, fits_col, "type","varchar",80);
- mvc_create_column_(m, fits_col, "mtype","int",32);
+ mvc_create_column_(m, fits_col, "units","varchar",10);
mvc_create_column_(m, fits_col, "table_id","int",32);
- mvc_create_column_(m, fits_col, "units","varchar",10);
}
}
@@ -159,6 +168,50 @@
return -1;
}
+static int
+fits2subtype(sql_subtype *tpe, int t, long rep, long wid)
+{
+
+ printf("Tpcode %d, rep %ld, wid %ld\n", t,rep,wid);
+ switch(t) {
+ case TBIT:
+ case TLOGICAL:
+ sql_find_subtype(tpe, "boolean", 0, 0 );
+ break;
+ case TBYTE:
+ case TSBYTE:
+ sql_find_subtype(tpe, "char", 1, 0 );
+ break;
+ case TSTRING:
+ sql_find_subtype(tpe, "varchar", (unsigned int)rep, 0);
+ break;
+ case TUSHORT:
+ case TSHORT:
+ sql_find_subtype(tpe, "smallint", 16, 0);
+ break;
+ case TUINT:
+ case TINT:
+ case TULONG:
+ case TLONG:
+ sql_find_subtype(tpe, "int", 32, 0);
+ break;
+ case TLONGLONG:
+ sql_find_subtype(tpe, "bigint", 64, 0);
+ break;
+ case TFLOAT:
+ sql_find_subtype(tpe, "real", 32, 0 );
+ break;
+ case TDOUBLE:
+ sql_find_subtype(tpe, "double", 51, 0 );
+ break;
+ /* missing */
+ case TCOMPLEX:
+ case TDBLCOMPLEX:
+ return -1;
+ }
+ return 1;
+}
+
str FITSattach(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
mvc *m = NULL;
@@ -169,15 +222,12 @@
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 tpcode = 0, mtype;
oid fid, tid, rid = oid_nil;
- char tname[BUFSIZ];
- long tbcol, rep, wid;
- char cname[BUFSIZ], tform[BUFSIZ], tunit[BUFSIZ], tnull[BUFSIZ],
tdisp[BUFSIZ];
+ char tname[BUFSIZ], *s, bname[BUFSIZ]; /*, stmt[BUFSIZ];*/
+ long tbcol;
+ char cname[BUFSIZ], tform[BUFSIZ], tunit[BUFSIZ], tnull[BUFSIZ],
tdisp[BUFSIZ];
double tscal, tzero;
-
-
msg = getContext(cntxt, mb, &m, NULL);
if (msg)
return msg;
@@ -217,6 +267,14 @@
col = mvc_bind_column(m, fits_tbl, "id");
tid = store_funcs.count_col(col) + 1;
+ if ((s = strrchr(fname, DIR_SEP)) == NULL)
+ s = fname;
+ else
+ s++;
+ strcpy(bname, s);
+ s = strrchr(bname,'.');
+ if ( s ) *s = 0;
+
fits_get_num_hdus(fptr, &hdunum, &status);
for (i = 1; i <= hdunum; i++){
fits_movabs_hdu(fptr, i, &hdutype, &status);
@@ -226,32 +284,42 @@
/* SQL table name - the name of FITS extention */
fits_read_key(fptr, TSTRING, "EXTNAME", tname, NULL, &status);
if ( status ) {
- snprintf(tname,BUFSIZ,"%s_%d",fname,i);
+ snprintf(tname,BUFSIZ,"%s_%d",bname,i);
status = 0;
}
- else { /* check table name for existence */
+ else { /* check table name for existence in the fits catalog */
+ col = mvc_bind_column(m, fits_tbl, "name");
+ rid = table_funcs.column_find_row(m->session->tr, col,
tname, NULL);
+ /* or as regular SQL table */
tbl = mvc_bind_table(m, sch, tname);
- if ( tbl )
- snprintf(tname,BUFSIZ,"%s_%d",fname,i);
+ if ( rid != oid_nil || tbl )
+ snprintf(tname,BUFSIZ,"%s_%d",bname,i);
}
+ fits_get_num_cols(fptr, &cnum, &status);
+
store_funcs.append_col(m->session->tr,
- mvc_bind_column(m, fits_tbl, "id"), &tid,
TYPE_int);
+ 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);
store_funcs.append_col(m->session->tr,
+ mvc_bind_column(m, fits_tbl, "columns"), &cnum,
TYPE_str);
+ 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,
mvc_bind_column(m, fits_tbl, "hdu"), &i, TYPE_int);
/* read columns description */
+ /* s = stmt;*/
- fits_get_num_cols(fptr, &cnum, &status);
for ( j = 1; j <= cnum; j++){
fits_get_acolparms(fptr, j, cname, &tbcol, tunit, tform,
&tscal, &tzero, tnull, tdisp, &status);
- fits_get_coltype(fptr, j, &tpcode, &rep, &wid, &status);
- mtype = fits2mtype(tpcode);
+ /* fits_get_coltype(fptr, j,
&tpcode, &rep, &wid, &status);*/
+ /* snprintf(stmt, BUFSIZ,
FITS_INS_COL, j, cname, tform, tunit, (int)tid);
+ printf("%s\n",stmt);
+ msg = SQLstatementIntern(cntxt,
&s,"fits.attach",TRUE,FALSE);
+ */
store_funcs.append_col(m->session->tr,
mvc_bind_column(m, fits_col, "id"), &j,
TYPE_int);
store_funcs.append_col(m->session->tr,
@@ -259,11 +327,9 @@
store_funcs.append_col(m->session->tr,
mvc_bind_column(m, fits_col, "type"), tform,
TYPE_str);
store_funcs.append_col(m->session->tr,
- mvc_bind_column(m, fits_col, "mtype"), &mtype,
TYPE_int);
- store_funcs.append_col(m->session->tr,
mvc_bind_column(m, fits_col, "table_id"), &tid,
TYPE_int);
store_funcs.append_col(m->session->tr,
- mvc_bind_column(m, fits_col, "units"), tunit,
TYPE_str);
+ mvc_bind_column(m, fits_col, "units"), tunit,
TYPE_str);
}
tid++;
}
@@ -272,5 +338,118 @@
return MAL_SUCCEED;
}
+str FITSloadTable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
+{
+ mvc *m = NULL;
+ sql_schema *sch;
+ 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;
+ long rep, wid, rows;
+ char keywrd[80], **cname;
+ BAT *b;
+ ptr nilptr;
+
+ msg = getContext(cntxt, mb, &m, NULL);
+ if (msg)
+ return msg;
+ sch = mvc_bind_schema(m,"sys");
+
+ fits_tbl = mvc_bind_table(m, sch, "fits_tables");
+ if ( fits_tbl == NULL ){
+ msg = createException(MAL, "fits.loadtable", "FITS catalog is
missing.\n");
+ return msg;
+ }
+
+ tbl = mvc_bind_table(m, sch, tname);
+ if ( tbl ) {
+ msg = createException(MAL, "fits.loadtable", "Table %d is
already created.\n", tname);
+ return msg;
+ };
+
+ col = mvc_bind_column(m, fits_tbl, "name");
+ rid = table_funcs.column_find_row(m->session->tr, col, tname, NULL);
+ if ( rid == oid_nil ){
+ msg = createException(MAL, "fits.loadtable", "Table %s is
unknown in FITS catalog. Attach first the containing file\n", tname);
+ return msg;
+ }
+
+ /* Open FITS file and move to the table HDU */
+ col = mvc_bind_column(m, fits_tbl, "file_id");
+ fid = *(int*) table_funcs.column_find_value(m->session->tr, col, rid);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list