Changeset: 99e071e2ea6d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=99e071e2ea6d
Modified Files:
        sql/backends/monet5/bam/85_bam.sql
        sql/backends/monet5/bam/bam_db_interface.c
        sql/backends/monet5/bam/bam_db_interface.h
        sql/backends/monet5/bam/bam_loader.c
Branch: bamloader
Log Message:

Moved creation of static SQL tables from c code to 85_bam.sql


diffs (truncated from 304 to 300 lines):

diff --git a/sql/backends/monet5/bam/85_bam.sql 
b/sql/backends/monet5/bam/85_bam.sql
--- a/sql/backends/monet5/bam/85_bam.sql
+++ b/sql/backends/monet5/bam/85_bam.sql
@@ -31,3 +31,70 @@ EXTERNAL NAME bam.sam_export;
 
 CREATE PROCEDURE bam.bam_export(output_path STRING)
 EXTERNAL NAME bam.bam_export;
+
+
+
+CREATE TABLE bam.files ( 
+       file_id                                         BIGINT                  
NOT NULL, 
+       file_location                           STRING                  NOT 
NULL, 
+       dbschema                                        SMALLINT                
NOT NULL, 
+       format_version                          VARCHAR(7), 
+       sorting_order                           VARCHAR(10), 
+       comments                                        STRING, 
+       CONSTRAINT files_pkey_file_id PRIMARY KEY (file_id) 
+);
+
+CREATE TABLE bam.sq ( 
+       sn                                                      STRING          
        NOT NULL, 
+       file_id                                         BIGINT                  
NOT NULL, 
+       ln                                                      INT, 
+       "as"                                            INT, 
+       m5                                                      STRING, 
+       sp                                                      STRING, 
+       ur                                                      STRING, 
+       CONSTRAINT sq_pkey_sn_file_id PRIMARY KEY (sn, file_id), 
+       CONSTRAINT sq_fkey_file_id FOREIGN KEY (file_id) REFERENCES bam.files 
(file_id) 
+);
+
+CREATE TABLE bam.rg ( 
+       id                                                      STRING          
        NOT NULL, 
+       file_id                                         BIGINT                  
NOT NULL, 
+       cn                                                      STRING, 
+       ds                                                      STRING, 
+       dt                                                      TIMESTAMP, 
+       fo                                                      STRING, 
+       ks                                                      STRING, 
+       lb                                                      STRING, 
+       pg                                                      STRING, 
+       pi                                                      INT, 
+       pl                                                      STRING, 
+       pu                                                      STRING, 
+       sm                                                      STRING, 
+       CONSTRAINT rg_pkey_id_file_id PRIMARY KEY (id, file_id), 
+       CONSTRAINT rg_fkey_file_id FOREIGN KEY (file_id) REFERENCES bam.files 
(file_id) 
+);
+
+CREATE TABLE bam.pg ( 
+       id                                                      STRING          
        NOT NULL, 
+       file_id                                         BIGINT                  
NOT NULL, 
+       pn                                                      STRING, 
+       cl                                                      STRING, 
+       pp                                                      STRING, 
+       vn                                                      STRING, 
+       CONSTRAINT pg_pkey_id_file_id PRIMARY KEY (id, file_id), 
+       CONSTRAINT pg_fkey_file_id FOREIGN KEY (file_id) REFERENCES bam.files 
(file_id) 
+);
+
+CREATE TABLE bam.export ( 
+       qname                                           STRING                  
NOT NULL, 
+       flag                                            SMALLINT                
NOT NULL, 
+       rname                                           STRING                  
NOT NULL, 
+       pos                                                 INT                 
        NOT NULL, 
+       mapq                                            SMALLINT                
NOT NULL, 
+       cigar                                           STRING                  
NOT NULL, 
+       rnext                                           STRING                  
NOT NULL, 
+       pnext                                           INT                     
        NOT NULL, 
+       tlen                                            INT                     
        NOT NULL, 
+       seq                                                     STRING          
        NOT NULL, 
+       qual                                            STRING                  
NOT NULL  
+);
diff --git a/sql/backends/monet5/bam/bam_db_interface.c 
b/sql/backends/monet5/bam/bam_db_interface.c
--- a/sql/backends/monet5/bam/bam_db_interface.c
+++ b/sql/backends/monet5/bam/bam_db_interface.c
@@ -214,76 +214,38 @@ static char buf_sql_copy_into[BUF_SIZE_C
 
 
 str
-create_schema_if_not_exists(Client cntxt, mvc * m, str schemaname, str descr,
-                               sql_schema ** ret)
+bind_bam_schema(mvc * m, sql_schema ** ret)
 {
        sql_schema *result;
 
-       if ((result = mvc_bind_schema(m, schemaname)) == NULL) {
-               char buf_sql_create_schema[64];
-               str sql_create_schema = buf_sql_create_schema;
-               str msg;
-
-               snprintf(sql_create_schema, 64, "CREATE SCHEMA %s;",
-                        schemaname);
-
-               TO_LOG("<bam_loader> Creating schema '%s'...\n", schemaname);
-               RUN_SQL(cntxt, &sql_create_schema, descr, msg);
-               if (msg != MAL_SUCCEED) {
-                       REUSE_EXCEPTION(msg, MAL,
-                                       "create_schema_if_not_exists",
-                                       "Could not create bam schema: %s",
-                                       msg);
-                       return msg;
-               }
-               if ((result = mvc_bind_schema(m, schemaname)) == NULL) {
-                       throw(MAL, "create_schema_if_not_exists",
-                                 "Could not create bam schema");
-               }
+       if ((result = mvc_bind_schema(m, "bam")) == NULL) {
+               throw(MAL, "bind_bam_schema",
+                                  "Could not find bam schema");
        }
        if (ret)
                *ret = result;
+
        return MAL_SUCCEED;
 }
 
-
-/**
- * Function tries to bind to a table with the given name. If it fails
- * (== NULL), it attempts to create the table.
- * The function fails if a binding to the table is impossible, even
- * after creation.  If the function succeeds, it adjusts the
- * optionally given pointer to point to the binded sql_table.
- */
 str
-create_table_if_not_exists(Client cntxt, mvc * m, sql_schema * s,
-                          str tablename, str sql_creation, str descr,
-                          sql_table ** ret)
+bind_table(mvc * m, sql_schema * s,
+                          str tablename, sql_table ** ret)
 {
        sql_table *result;
-       str msg;
 
        if ((result = mvc_bind_table(m, s, tablename)) == NULL) {
-               TO_LOG("<bam_loader> Creating table '%s'...\n", tablename);
-
-               RUN_SQL(cntxt, &sql_creation, descr, msg);
-               if (msg != MAL_SUCCEED) {
-                       REUSE_EXCEPTION(msg, MAL,
-                                       "create_table_if_not_exists",
-                                       "Could not create table '%s': %s",
-                                       tablename, msg);
-                       return msg;
-               }
-               if ((result = mvc_bind_table(m, s, tablename)) == NULL) {
-                       throw(MAL, "create_table_if_not_exists",
-                                 "Could not create table '%s'", tablename);
-               }
+               throw(MAL, "bind_table",
+                                  "Could not find table %s", tablename);
        }
        if (ret)
                *ret = result;
+
        return MAL_SUCCEED;
 }
 
 
+
 /**
  * Function returns the highest file id that currently exists in the
  * bam.files table and stores this number + 1 in the next_file_id
diff --git a/sql/backends/monet5/bam/bam_db_interface.h 
b/sql/backends/monet5/bam/bam_db_interface.h
--- a/sql/backends/monet5/bam/bam_db_interface.h
+++ b/sql/backends/monet5/bam/bam_db_interface.h
@@ -53,81 +53,9 @@
 /* SQL code for creating header tables; Put in the header to enable
  * other files to use these SQL queries as arguments for making calls
  * to create_table_if_not_exists function */
-#define SQL_CREATE_FILES \
-       "CREATE TABLE bam.files ( \n\
-               file_id                                         BIGINT    NOT 
NULL, \n\
-               file_location                             STRING          NOT 
NULL, \n\
-               dbschema                                           SMALLINT     
NOT NULL, \n\
-               format_version                           VARCHAR(7), \n\
-               sorting_order                             VARCHAR(10), \n\
-               comments                                           STRING, \n\
-               CONSTRAINT files_pkey_file_id PRIMARY KEY (file_id) \n\
-       );"
-
-#define SQL_CREATE_SQ \
-       "CREATE TABLE bam.sq ( \n\
-               sn                                                       STRING 
  NOT NULL, \n\
-               file_id                                         BIGINT    NOT 
NULL, \n\
-               ln                                                       INT, 
\n\
-               \"as\"                                           INT, \n\
-               m5                                                       
STRING, \n\
-               sp                                                       
STRING, \n\
-               ur                                                       
STRING, \n\
-               CONSTRAINT sq_pkey_sn_file_id PRIMARY KEY (sn, file_id), \n\
-               CONSTRAINT sq_fkey_file_id FOREIGN KEY (file_id) REFERENCES 
bam.files (file_id) \n\
-       );"
-
-#define SQL_CREATE_RG \
-       "CREATE TABLE bam.rg ( \n\
-               id                                                       STRING 
  NOT NULL, \n\
-               file_id                                         BIGINT    NOT 
NULL, \n\
-               cn                                                       
STRING, \n\
-               ds                                                       
STRING, \n\
-               dt                                                       
TIMESTAMP, \n\
-               fo                                                       
STRING, \n\
-               ks                                                       
STRING, \n\
-               lb                                                       
STRING, \n\
-               pg                                                       
STRING, \n\
-               pi                                                       INT, 
\n\
-               pl                                                       
STRING, \n\
-               pu                                                       
STRING, \n\
-               sm                                                       
STRING, \n\
-               CONSTRAINT rg_pkey_id_file_id PRIMARY KEY (id, file_id), \n\
-               CONSTRAINT rg_fkey_file_id FOREIGN KEY (file_id) REFERENCES 
bam.files (file_id) \n\
-       );"
-
-#define SQL_CREATE_PG \
-       "CREATE TABLE bam.pg ( \n\
-               id                                                       STRING 
  NOT NULL, \n\
-               file_id                                         BIGINT    NOT 
NULL, \n\
-               pn                                                       
STRING, \n\
-               cl                                                       
STRING, \n\
-               pp                                                       
STRING, \n\
-               vn                                                       
STRING, \n\
-               CONSTRAINT pg_pkey_id_file_id PRIMARY KEY (id, file_id), \n\
-               CONSTRAINT pg_fkey_file_id FOREIGN KEY (file_id) REFERENCES 
bam.files (file_id) \n\
-       );"
-
-#define SQL_CREATE_EXPORT \
-       "CREATE TABLE bam.export ( \n\
-               qname                                            STRING   NOT 
NULL, \n\
-               flag                                              SMALLINT      
NOT NULL, \n\
-               rname                                            STRING   NOT 
NULL, \n\
-               pos                                                INT          
 NOT NULL, \n\
-               mapq                                              SMALLINT      
NOT NULL, \n\
-               cigar                                            STRING   NOT 
NULL, \n\
-               rnext                                            STRING   NOT 
NULL, \n\
-               pnext                                            INT            
 NOT NULL, \n\
-               tlen                                              INT           
 NOT NULL, \n\
-               seq                                                STRING       
  NOT NULL, \n\
-               qual                                              STRING        
  NOT NULL  \n\
-       );"
-
-str create_schema_if_not_exists(Client cntxt, mvc * m, str schemaname,
-                               str descr, sql_schema ** ret);
-str create_table_if_not_exists(Client cntxt, mvc * m, sql_schema * s,
-                                  str tablename, str sql_creation, str descr,
-                                  sql_table ** ret);
+str bind_bam_schema(mvc * m, sql_schema ** ret);
+str bind_table(mvc * m, sql_schema * s,
+                          str tablename, sql_table ** ret);
 str next_file_id(mvc * m, sql_table * files, lng * next_file_id);
 str create_alignment_storage_0(Client cntxt, str descr, bam_wrapper * bw);
 str create_alignment_storage_1(Client cntxt, str descr, bam_wrapper * bw);
diff --git a/sql/backends/monet5/bam/bam_loader.c 
b/sql/backends/monet5/bam/bam_loader.c
--- a/sql/backends/monet5/bam/bam_loader.c
+++ b/sql/backends/monet5/bam/bam_loader.c
@@ -220,41 +220,15 @@ bam_loader(Client cntxt, MalBlkPtr mb, s
                goto cleanup;
        }
 
-       /* Start with creating bam schema if it does not exist yet */
+       /* Start with binding bam schema and the files table */
        if ((msg =
-                create_schema_if_not_exists(cntxt, m, "bam", 
"bam.create_schema",
-                                        &s)) != MAL_SUCCEED)
+                bind_bam_schema(m, &s)) != MAL_SUCCEED)
+               goto cleanup;
+       if((msg = 
+                bind_table(m, s, "files", &files_table)) != MAL_SUCCEED)
                goto cleanup;
 
-       /* Now create the header tables that do not exist yet */
-       if ((msg =
-                create_table_if_not_exists(cntxt, m, s, "files",
-                                       SQL_CREATE_FILES, "bam.create_files",
-                                       &files_table)) != MAL_SUCCEED)
-               goto cleanup;
-       if ((msg =
-                create_table_if_not_exists(cntxt, m, s, "sq", SQL_CREATE_SQ,
-                                       "bam.create_sq",
-                                       NULL)) != MAL_SUCCEED)
-               goto cleanup;
-       if ((msg =
-                create_table_if_not_exists(cntxt, m, s, "rg", SQL_CREATE_RG,
-                                       "bam.create_rg",
-                                       NULL)) != MAL_SUCCEED)
-               goto cleanup;
-       if ((msg =
-                create_table_if_not_exists(cntxt, m, s, "pg", SQL_CREATE_PG,
-                                       "bam.create_pg",
-                                       NULL)) != MAL_SUCCEED)
-               goto cleanup;
-
-       if ((msg =
-                create_table_if_not_exists(cntxt, m, s, "export", 
SQL_CREATE_EXPORT,
-                                       "bam.create_export",
-                                       NULL)) != MAL_SUCCEED)
-               goto cleanup;
-
-       /* Get next file id */
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to