Skip to content

Commit 3b70046

Browse files
committed
include gri_meta_json in convenience tables
1 parent 1cf1ac6 commit 3b70046

3 files changed

Lines changed: 18 additions & 9 deletions

File tree

bindings/python/genomicsqlite.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ class ReferenceSequence(NamedTuple):
123123
length: int
124124
assembly: Optional[str]
125125
refget_id: Optional[str]
126+
meta: Dict[str, Any]
126127

127128

128129
def get_reference_sequences_by_rid(
@@ -132,7 +133,7 @@ def get_reference_sequences_by_rid(
132133
if schema:
133134
table = f"{schema}.{table}"
134135
sql = (
135-
"SELECT _gri_rid, gri_refseq_name, gri_refseq_length, gri_assembly, gri_refget_id FROM "
136+
"SELECT _gri_rid, gri_refseq_name, gri_refseq_length, gri_assembly, gri_refget_id, gri_refseq_meta_json FROM "
136137
+ table
137138
)
138139
params = []
@@ -145,7 +146,12 @@ def get_reference_sequences_by_rid(
145146
isinstance(row[0], int) and row[0] not in ans
146147
), "genomicsqlite: invalid or duplicate reference sequence rid"
147148
ans[row[0]] = ReferenceSequence(
148-
rid=row[0], name=row[1], length=row[2], assembly=row[3], refget_id=row[4]
149+
rid=row[0],
150+
name=row[1],
151+
length=row[2],
152+
assembly=row[3],
153+
refget_id=row[4],
154+
meta=(json.loads(row[5]) if row[5] else {}),
149155
)
150156
return ans
151157

include/genomicsqlite.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,10 @@ std::string PutGenomicReferenceSequenceSQL(const std::string &name, sqlite3_int6
124124

125125
/* Lookup helpers for stored reference sequence metadata (assumes it's finalized) */
126126
struct gri_refseq_t {
127-
unsigned long long rid, length;
128-
std::string name, assembly, refget_id;
127+
long long rid, length;
128+
std::string name, assembly, refget_id, meta_json = "{}";
129129
};
130-
std::map<unsigned long long, gri_refseq_t>
130+
std::map<long long, gri_refseq_t>
131131
GetGenomicReferenceSequencesByRid(sqlite3 *dbconn, const std::string &assembly = "",
132132
const std::string &attached_schema = "");
133133
std::map<std::string, gri_refseq_t>

src/genomicsqlite.cc

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ string GenomicSQLiteVacuumIntoSQL(const string &destfile, const string &config_j
384384
throw std::runtime_error("error processing config JSON $.inner_page_size");
385385
int inner_page_size = extract->getColumn(0).getInt();
386386

387-
string desturi = GenomicSQLiteURI(destfile, config_json);
387+
string desturi = GenomicSQLiteURI(destfile, config_json) + "&outer_unsafe=true";
388388

389389
ostringstream ans;
390390
ans << "PRAGMA page_size = " << inner_page_size << ";\nPRAGMA auto_vacuum = FULL"
@@ -990,13 +990,13 @@ static void sqlfn_put_genomic_reference_assembly_sql(sqlite3_context *ctx, int a
990990
SQL_WRAPPER(PutGenomicReferenceAssemblySQL(assembly, schema))
991991
}
992992

993-
map<unsigned long long, gri_refseq_t>
993+
map<long long, gri_refseq_t>
994994
GetGenomicReferenceSequencesByRid(sqlite3 *dbconn, const string &assembly, const string &schema) {
995-
map<unsigned long long, gri_refseq_t> ans;
995+
map<long long, gri_refseq_t> ans;
996996
string schema_prefix = schema.empty() ? "" : (schema + ".");
997997

998998
string query =
999-
"SELECT _gri_rid, gri_refseq_name, gri_refseq_length, gri_assembly, gri_refget_id FROM " +
999+
"SELECT _gri_rid, gri_refseq_name, gri_refseq_length, gri_assembly, gri_refget_id, gri_refseq_meta_json FROM " +
10001000
schema_prefix + "__gri_refseq";
10011001
if (!assembly.empty()) {
10021002
query += " WHERE gri_assembly = ?";
@@ -1026,6 +1026,9 @@ GetGenomicReferenceSequencesByRid(sqlite3 *dbconn, const string &assembly, const
10261026
if (sqlite3_column_type(stmt.get(), 4) == SQLITE_TEXT) {
10271027
item.refget_id = (const char *)sqlite3_column_text(stmt.get(), 4);
10281028
}
1029+
if (sqlite3_column_type(stmt.get(), 4) == SQLITE_TEXT) {
1030+
item.meta_json = (const char *)sqlite3_column_text(stmt.get(), 5);
1031+
}
10291032
ans[item.rid] = item;
10301033
}
10311034
if (rc != SQLITE_DONE) {

0 commit comments

Comments
 (0)