Changeset: 20593d12ed56 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=20593d12ed56 Modified Files: sql/backends/monet5/sql.c sql/backends/monet5/sql.h sql/backends/monet5/sql.mal sql/storage/sql_storage.h sql/storage/store.c Branch: hot-snapshot Log Message:
Plumbing for sql.hot_snapshot(dir) diffs (77 lines): diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c --- a/sql/backends/monet5/sql.c +++ b/sql/backends/monet5/sql.c @@ -4803,6 +4803,19 @@ SQLsuspend_log_flushing(void *ret) } str +SQLhot_snapshot(void *ret, const str *dir) +{ + (void)ret; + + char *dest = *dir; + const char *errmsg = store_hot_snapshot(dest); + if (errmsg) + throw(SQL, "sql.hot_snapshot", SQLSTATE(42000) "Snapshot to %s failed: %s", dest, errmsg); + + return MAL_SUCCEED; +} + +str SQLexist_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { bit *res = getArgReference_bit(stk, pci, 0); diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h --- a/sql/backends/monet5/sql.h +++ b/sql/backends/monet5/sql.h @@ -314,6 +314,8 @@ sql5_export str SQLflush_log(void *ret); sql5_export str SQLresume_log_flushing(void *ret); sql5_export str SQLsuspend_log_flushing(void *ret); +sql5_export str SQLhot_snapshot(void *ret, const str *dir); + sql5_export str SQLexist(bit *res, bat *id); sql5_export str SQLexist_val(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); diff --git a/sql/backends/monet5/sql.mal b/sql/backends/monet5/sql.mal --- a/sql/backends/monet5/sql.mal +++ b/sql/backends/monet5/sql.mal @@ -83,6 +83,10 @@ command suspend_log_flushing( ) :void address SQLsuspend_log_flushing comment "Suspend WAL log flushing"; +command hot_snapshot(dir:str) :void +address SQLhot_snapshot +comment "Create a hot snapshot in the given directory"; + pattern assert(b:bit,msg:str):void address SQLassert comment "Generate an exception when b==true"; diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h --- a/sql/storage/sql_storage.h +++ b/sql/storage/sql_storage.h @@ -331,6 +331,7 @@ extern void store_apply_deltas(void); extern void store_flush_log(void); extern void store_resume_log(void); extern void store_suspend_log(void); +extern char *store_hot_snapshot(const char *dir); extern void store_manager(void); extern void idle_manager(void); diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -1788,6 +1788,13 @@ store_suspend_log(void) MT_lock_unset(&bs_lock); } +char * +store_hot_snapshot(const char *dir) +{ + fprintf(stderr, "#hot_snapshot %s\n", dir); + return NULL; +} + static int store_needs_vacuum( sql_trans *tr ) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list