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