Changeset: a606ca13384b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a606ca13384b
Modified Files:
sql/storage/bat/bat_logger.c
Branch: Apr2011
Log Message:
added sql schema upgrade form Oct2010 to Apr2010
diffs (85 lines):
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -27,15 +27,30 @@
bl_preversion( int oldversion, int newversion)
{
#define CATALOG_FEB2010 50000
+#define CATALOG_OCT2010 51000
(void)newversion;
if (oldversion == CATALOG_FEB2010) {
catalog_version = oldversion;
return 0;
}
+ if (oldversion == CATALOG_OCT2010) {
+ catalog_version = oldversion;
+ return 0;
+ }
return -1;
}
+static char *
+N( char *buf, char *pre, char *schema, char *post)
+{
+ if (pre)
+ snprintf(buf, 64, "%s_%s_%s", pre, schema, post);
+ else
+ snprintf(buf, 64, "%s_%s", schema, post);
+ return buf;
+}
+
static void
bl_postversion( void *lg)
{
@@ -94,6 +109,50 @@
/* mark that the rest is fixed on sql level */
}
+ if (catalog_version == CATALOG_OCT2010) {
+ BAT *b;
+ char *s = "sys", n[64];
+
+ fprintf(stdout, "# upgrading catalog from Oct2010\n");
+ fflush(stdout);
+
+ /* rename table 'keycolumns' into 'objects'
+ * and remove trunc column */
+ while(s) {
+ b = temp_descriptor(logger_find_bat(lg, N(n, "D", s,
"keycolumns")));
+ if (!b) return ;
+ logger_del_bat(lg, b->batCacheid);
+ logger_add_bat(lg, b, N(n, "D", s, "objects"));
+ bat_destroy(b);
+
+ b = temp_descriptor(logger_find_bat(lg, N(n, NULL, s,
"keycolumns_id")));
+ if (!b) return ;
+ logger_del_bat(lg, b->batCacheid);
+ logger_add_bat(lg, b, N(n, NULL, s, "objects_id"));
+ bat_destroy(b);
+
+ b = temp_descriptor(logger_find_bat(lg, N(n, NULL, s,
"keycolumns_column")));
+ if (!b) return ;
+ logger_del_bat(lg, b->batCacheid);
+ logger_add_bat(lg, b, N(n, NULL, s, "objects_name"));
+ bat_destroy(b);
+
+ b = temp_descriptor(logger_find_bat(lg, N(n, NULL, s,
"keycolumns_nr")));
+ if (!b) return ;
+ logger_del_bat(lg, b->batCacheid);
+ logger_add_bat(lg, b, N(n, NULL, s, "objects_nr"));
+ bat_destroy(b);
+
+ b = temp_descriptor(logger_find_bat(lg, N(n, NULL, s,
"keycolumns_trunc")));
+ if (!b) return ;
+ logger_del_bat(lg, b->batCacheid);
+ bat_destroy(b);
+ if (strcmp(s,"sys") == 0)
+ s = "tmp";
+ else
+ s = NULL;
+ }
+ }
}
static int
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list