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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list