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

Consistency check on mseed


diffs (81 lines):

diff -r 31170a1db336 -r 2452225b96cd sql/src/backends/monet5/vaults/mseed.mx
--- a/sql/src/backends/monet5/vaults/mseed.mx   Fri Jan 14 08:47:25 2011 +0100
+++ b/sql/src/backends/monet5/vaults/mseed.mx   Fri Jan 14 08:48:09 2011 +0100
@@ -51,6 +51,21 @@
 maxval                 float
 ); 
 
+-- The reference table for querying is simply
+CREATE TABLE mseed(
+mseed                  int,                    -- Vault file id
+seqno                  int,                    -- SEED record sequence number, 
should be between 0 and 999999
+time                   timestamp,              -- click
+data                   int,                    -- The actual measurement value.
+FOREIGN KEY (mseed,seqno) REFERENCES mseedCatalog(mseed,seqno)
+); 
+
+SELECT * FROM mseed WHERE data >3000;
+-- can be answered by preselecting the catalog first.
+SELECT mseed FROM mseedcatalog WHERE maxval >3000;
+-- followed by loading the corresponding files if they are not cached yet
+SELECT * from mseed((SELECT * FROM tmp));
+
 -- this function inserts the mseed record information into the catalog
 -- errors are returned for off-line analysis.
 
@@ -84,6 +99,7 @@
 select vaultImport( source, target) from batch;
 update vault set created = now() where target in (select target from batch 
where created is not null);
 select mseedImport(vid,target) from batch;
+select mseedLoad(target) from batch limit 10;
 drop table batch;
 @end verbatim
 
@@ -207,6 +223,10 @@
        char starttime[BUFSIZ];
        int imin = INT_MAX, imax = INT_MIN;
 
+       /* keep state of a file to detect major deviances */
+       str network =0, station = 0 , location = 0 , channel = 0;
+       char sampletype = 0;
+
        (void) mb;
        *ret = int_nil;
 
@@ -215,6 +235,25 @@
                throw(MAL, "mseed.load", "Cannot access %s\n", file);
        while ( (retcode = ms_readmsr (&msr, file, reclen, NULL, NULL, 1, 
dataflag, verbose)) == MS_NOERROR  )
        {
+               if ( network == 0){
+                       network= GDKstrdup(msr->network);
+                       station= GDKstrdup(msr->station);
+                       location= GDKstrdup(msr->location);
+                       channel= GDKstrdup(msr->channel);
+                       sampletype = msr->sampletype;
+               } else {
+                       if( strcmp(network,msr->network))
+                               msg = 
createException(MAL,"mseed.import","network name is not stable");
+                       if( strcmp(station,msr->station))
+                               msg = 
createException(MAL,"mseed.import","station name is not stable");
+                       if( strcmp(location,msr->location))
+                               msg = 
createException(MAL,"mseed.import","location name is not stable");
+                       if( strcmp(channel,msr->channel))
+                               msg = 
createException(MAL,"mseed.import","channel name is not stable");
+                       if ( sampletype != msr->sampletype)
+                               msg = 
createException(MAL,"mseed.import","sample type is not stable");
+                       if (msg) goto wrapup;
+               }
                t= MS_HPTIME2EPOCH(msr->starttime);
                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);
@@ -243,6 +282,10 @@
 wrapup:
        /* Make sure everything is cleaned up */
        ms_readmsr (&msr, NULL, 0, NULL, NULL, 0, 0, 0);
+       if ( network) GDKfree(network);
+       if ( station) GDKfree(station);
+       if ( location) GDKfree(location);
+       if ( channel) GDKfree(channel);
        if ( msg)
                return msg;
        if ( retcode != MS_ENDOFFILE )
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to