Changeset: 34331aabb420 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=34331aabb420
Modified Files:
MonetDB5/src/mal/mal_interpreter.mx
sql/src/backends/monet5/sql_scenario.mx
sql/src/backends/monet5/vaults/Makefile.ag
sql/src/backends/monet5/vaults/mseed.mx
sql/src/backends/monet5/vaults/vault.mx
Branch: default
Log Message:
Fix the vault steps
The vault contains trial code for dealing with mseed files.
diffs (248 lines):
diff -r 67dfe6ab482e -r 34331aabb420 MonetDB5/src/mal/mal_interpreter.mx
--- a/MonetDB5/src/mal/mal_interpreter.mx Tue Jul 13 13:11:39 2010 +0200
+++ b/MonetDB5/src/mal/mal_interpreter.mx Tue Jul 13 14:26:40 2010 +0200
@@ -1296,7 +1296,7 @@
while(queued){
PARDEBUG stream_printf(GDKstdout,"#waiting for results, queued
%d\n", queued);
f = q_dequeue(flow->done);
- if ( f->flow->stk->wrapup ) /* clean up whatever is called for
*/
+ if ( f->flow->stk->wrapup && f->pc >= 0 ) /* clean up whatever
is called for */
(*f->flow->stk->wrapup)(f->flow->cntxt, f->flow->mb,
f->flow->stk, getInstrPtr(flow->mb, f->pc));
f->status = DFLOWwrapup;
queued--;
diff -r 67dfe6ab482e -r 34331aabb420 sql/src/backends/monet5/sql_scenario.mx
--- a/sql/src/backends/monet5/sql_scenario.mx Tue Jul 13 13:11:39 2010 +0200
+++ b/sql/src/backends/monet5/sql_scenario.mx Tue Jul 13 14:26:40 2010 +0200
@@ -54,6 +54,7 @@
sql5_export str SQLinitEnvironment(Client cntxt);
sql5_export str SQLstatement(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
+sql5_export str SQLstatementIntern(Client c, str *expr, str nme, int execute,
bit output);
sql5_export str SQLcompile(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
sql5_export str SQLtrace(int *ret);
sql5_export str SQLCacheRemove(Client c, str nme);
@@ -409,7 +410,6 @@
return go;
}
-static str SQLstatementIntern(Client c, str *expr, str nme, int execute, bit
output);
str
SQLinitClient(Client c)
@@ -588,7 +588,7 @@
}
/* #define _SQL_COMPILE */
-static str
+str
SQLstatementIntern(Client c, str *expr, str nme, int execute, bit output)
{
int status = 0;
diff -r 67dfe6ab482e -r 34331aabb420 sql/src/backends/monet5/vaults/Makefile.ag
--- a/sql/src/backends/monet5/vaults/Makefile.ag Tue Jul 13 13:11:39
2010 +0200
+++ b/sql/src/backends/monet5/vaults/Makefile.ag Tue Jul 13 14:26:40
2010 +0200
@@ -15,7 +15,7 @@
# Copyright August 2008-2010 MonetDB B.V.
# All Rights Reserved.
-INCLUDES = ../../include ../../common ../../storage ../../server \
+INCLUDES = ../../include ../../common ../../storage ../../server ../ \
$(MONETDB5_INCS) $(CLIENTS_INCS) $(MONETDB_INCS) $(READLINE_INCS)
$(MSEED_CFLAGS)
lib__vault = {
diff -r 67dfe6ab482e -r 34331aabb420 sql/src/backends/monet5/vaults/mseed.mx
--- a/sql/src/backends/monet5/vaults/mseed.mx Tue Jul 13 13:11:39 2010 +0200
+++ b/sql/src/backends/monet5/vaults/mseed.mx Tue Jul 13 14:26:40 2010 +0200
@@ -26,8 +26,8 @@
The code base assumes that libmseed has been installed on your system.
@mal
module mseed;
-command dump(fnme:str)
-address MSEdump
+pattern import(vid:int, fnme:str):str
+address MSEmseedImport
comment "Dump the record content of an mseed file from the vault";
@h
#ifndef _MSEED_H
@@ -53,7 +53,7 @@
#define vault_export extern
#endif
-vault_export str MSEdump(int *ret, str *nme);
+vault_export str MSEmseedImport(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
#define _MSEED_DEBUG_
@@ -61,91 +61,125 @@
@c
#include "mseed.h"
#include "vault.h"
+str SQLstatementIntern(Client c, str *expr, str nme, int execute, bit output);
+
+#define QRYinsert "INSERT INTO mseedCatalog(mseed, seqno, dataquality,
network, \
+ station, location, channel, starttime , samplerate, samplecnt,
sampletype) \
+ VALUES(%d, %d,'%c','%s', '%s','%s','%s','%s',%f,%d,%s);"
str
-MSEdump(int *ret, str *inputfile)
+MSEmseedImport(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
+ str *ret = (str*) getArgReference(stk,pci,0);
+ int *vid = (int*) getArgReference(stk,pci,1);
+ str *sourcefile = (str*) getArgReference(stk,pci,2);
str msg = MAL_SUCCEED;
#ifdef HAVE_MSEED
MSRecord *msr = 0;
int verbose = 1;
- int ppackets = 2;
+ //int ppackets = 2;
int reclen = -1;
- int dataflag = 0;
+ int dataflag = 1;
int totalrecs = 0;
int totalsamps = 0;
int retcode;
int j;
time_t t;
- char *s;
+ struct tm *tm;
+ char *s,*kind;
+ char file[BUFSIZ];
char buf[BUFSIZ];
+ char starttime[BUFSIZ];
+ char stoptime[BUFSIZ];
+ int stepsize;
- *ret = 0;
- if ( vaultpath[0] == 0)
- throw(MAL,"mseed.dump","Vault not initialized");
- snprintf(buf,BUFSIZ,"%s%c%s",vaultpath,DIR_SEP,*inputfile);
+ (void) cntxt;
+ (void) mb;
+ if ( vaultpath[0] == 0){
+ msg= createException(MAL,"mseed.dump","Vault not initialized");
+ *ret = GDKstrdup(msg);
+ return msg;
+ }
+ snprintf(file,BUFSIZ,"%s%c%s",vaultpath, DIR_SEP,*sourcefile);
+ s= buf;
- printf("Processing %s\n",buf);
+ printf("FTP Processing %s -> %s\n",*sourcefile,file);
/* Loop over the input file */
- while ( (retcode = ms_readmsr (&msr, buf, reclen, NULL, NULL, 1,
dataflag, verbose)) == MS_NOERROR )
+ while ( (retcode = ms_readmsr (&msr, file, reclen, NULL, NULL, 1,
dataflag, verbose)) == MS_NOERROR )
{
totalrecs++;
totalsamps += msr->samplecnt;
- msr_print(msr, ppackets);
+ //msr_print(msr, ppackets);
- printf("%s,%s,%s,%s,", msr->network, msr->station,
msr->location, msr->channel);
- //printf("%ld,", msr->starttime);
t= MS_HPTIME2EPOCH(msr->starttime);
- s= ctime(&t);
- s[24]=0;
- printf("%s,",s);
- printf("%ld,",msr->starttime % HPTMODULUS);
- printf("%d,", msr->sequence_number);
- printf("%d,", msr->samplecnt);
- printf("%f,", msr->samprate);
+ tm = gmtime(&t);
+ snprintf(starttime,BUFSIZ,"%d-%02d-%02d %02d:%02d:%02d.%06ld",
tm->tm_year +(tm->tm_year > 80?1900:2000), tm->tm_mon+1,tm->tm_mday,
tm->tm_hour, tm->tm_min,tm->tm_sec, msr->starttime % HPTMODULUS);
+
switch(msr->sampletype){
- case 'a': printf("string,"); break;
- case 'i': printf("int,"); break;
- case 'f': printf("flt,"); break;
- case 'd': printf("dbl,"); break;
- default: printf("%d,",msr->sampletype);
+ case 'a': kind="'string'"; break;
+ case 'i': kind="'int'"; break;
+ case 'f': kind="'flt'"; break;
+ case 'd': kind="'dbl'"; break;
+ default : kind="null";
}
- printf("\n");
+ snprintf(buf,BUFSIZ,QRYinsert, *vid,
msr->sequence_number,msr->dataquality,msr->network, msr->station,
msr->location, msr->channel,
+ starttime,msr->samprate, msr->samplecnt,kind);
+ printf("%s\n",buf);
+ msg =SQLstatementIntern(cntxt,&s,"mseed.import",TRUE,FALSE);
+ if ( msg != MAL_SUCCEED){
+ break;
+ }
+ stepsize = 1000000/ msr->samprate;
+ if (msr->samplecnt) {
+ /* calculate end of series */
+ msr->starttime += msr->samplecnt * stepsize;
+ t= MS_HPTIME2EPOCH(msr->starttime);
+ tm = gmtime(&t);
+ snprintf(stoptime,BUFSIZ,"%d-%02d-%02d
%02d:%02d:%02d.%06ld", tm->tm_year +(tm->tm_year > 80?1900:2000),
tm->tm_mon+1,tm->tm_mday, tm->tm_hour, tm->tm_min,tm->tm_sec, msr->starttime %
HPTMODULUS);
+ printf("%s\n",stoptime);
+ }
if (msr->datasamples)
for ( j=0;j< msr->samplecnt; j++){
+ t= MS_HPTIME2EPOCH(msr->starttime);
+ tm = gmtime(&t);
+ snprintf(stoptime,BUFSIZ,"%d-%02d-%02d
%02d:%02d:%02d.%06ld", tm->tm_year +(tm->tm_year > 80?1900:2000),
tm->tm_mon+1,tm->tm_mday, tm->tm_hour, tm->tm_min,tm->tm_sec, msr->starttime %
HPTMODULUS);
+ msr->starttime += stepsize;
switch(msr->sampletype){
case 'a':
- printf("%s ", ((char**) msr->datasamples)[j]);
+ snprintf(buf,BUFSIZ, "INSERT INTO
mseedVolumn(time,adata) VALUES (%s, %d,%s);", stoptime, *vid, ((char**)
msr->datasamples)[j]);
break;
case 'i':
- printf("%8d ",((int*)msr->datasamples)[j]);
+ snprintf(buf,BUFSIZ, "INSERT INTO
mseedVolumn(time,idata) VALUES (%s, %d,%d);", stoptime, *vid, ((int*)
msr->datasamples)[j]);
break;
case 'f':
- printf("%f ",((float*)msr->datasamples)[j]);
+ snprintf(buf,BUFSIZ, "INSERT INTO
mseedVolumn(time,fdata) VALUES (%s, %d,%f);", stoptime, *vid, ((flt*)
msr->datasamples)[j]);
break;
case 'd':
- printf("%f ",((double*)msr->datasamples)[j]);
+ snprintf(buf,BUFSIZ, "INSERT INTO
mseedVolumn(time,ddata) VALUES (%s, %d,%f);", stoptime, *vid, ((dbl*)
msr->datasamples)[j]);
break;
default:
- printf("undef %d",msr->encoding);
+ snprintf(buf,BUFSIZ,"undef %d",msr->encoding);
}
- if ( j % 8 == 7)
- printf("\n");
+ printf("%s\n",buf);
}
}
- if ( retcode != MS_ENDOFFILE )
- msg = createException(MAL, "mseed.dump", "Cannot read %s:
%s\n", *inputfile, ms_errorstr(retcode));
+ if ( msg== MAL_SUCCEED && retcode != MS_ENDOFFILE )
+ msg = createException(MAL, "mseed.dump", "Cannot read %s:
%s\n", file, ms_errorstr(retcode));
/* Make sure everything is cleaned up */
ms_readmsr (&msr, NULL, 0, NULL, NULL, 0, 0, 0);
#else
(void) ret;
- (void) inputfile;
+ (void) sourcefile;
+ (void) vid;
throw(MAL,"mseed.dump","libmseed not available");
#endif
+ if (msg )
+ *ret= GDKstrdup(msg);
+ else *ret= 0;
return msg;
}
diff -r 67dfe6ab482e -r 34331aabb420 sql/src/backends/monet5/vaults/vault.mx
--- a/sql/src/backends/monet5/vaults/vault.mx Tue Jul 13 13:11:39 2010 +0200
+++ b/sql/src/backends/monet5/vaults/vault.mx Tue Jul 13 14:26:40 2010 +0200
@@ -116,6 +116,7 @@
#define _VAULT_DEBUG_
vault_export str VLTprelude(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
+vault_export str VLTftpget(int *ret, str *source, str *target);
vault_export str VLTgetDirectory(str *ret);
vault_export str VLTrefresh(int *ret, str *nme);
vault_export str VLTrefreshObject(int *ret, int *id);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list