Update of /cvsroot/monetdb/sql/src/storage/bat
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv32459/src/storage/bat
Modified Files:
Tag: GDK-2
bat_bm.mx bat_store.mx bat_table.mx
Log Message:
prepared sql for the split bats
m4/sql runs as well as before the split
m5/sql needs a bit more work (about 35 failing tests)
Index: bat_store.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/storage/bat/bat_store.mx,v
retrieving revision 1.144
retrieving revision 1.144.2.1
diff -u -d -r1.144 -r1.144.2.1
--- bat_store.mx 9 Jul 2007 09:58:13 -0000 1.144
+++ bat_store.mx 12 Aug 2007 17:42:30 -0000 1.144.2.1
@@ -232,7 +232,7 @@
assert(c->bat.ibid);
b = temp_descriptor(c->bat.ibid);
assert(b);
- if (BATcount(b) == 0 && !VIEWparent(i) && i->htype ==
TYPE_void){
+ if (BATcount(b) == 0 && !isVIEW(i) && i->htype == TYPE_void){
bat_destroy(b);
temp_destroy(c->bat.ibid);
c->bat.ibid = temp_create(i);
@@ -275,7 +275,7 @@
b = temp_descriptor(c->bat.ubid);
assert(b);
- if (BATcount(b) == 0 && !VIEWparent(i)){
+ if (BATcount(b) == 0 && !isVIEW(i)){
bat_destroy(b);
temp_destroy(c->bat.ubid);
c->bat.ubid = temp_create(i);
@@ -339,7 +339,7 @@
assert(i->bat.ibid);
b = temp_descriptor(i->bat.ibid);
assert(b);
- if (BATcount(b) == 0 && !VIEWparent(ib) && ib->htype ==
TYPE_void){
+ if (BATcount(b) == 0 && !isVIEW(ib) && ib->htype == TYPE_void){
bat_destroy(b);
temp_destroy(i->bat.ibid);
i->bat.ibid = temp_create(ib);
@@ -380,7 +380,7 @@
b = temp_descriptor(i->bat.ubid);
assert(b);
- if (BATcount(b) == 0 && !VIEWparent(ib)){
+ if (BATcount(b) == 0 && !isVIEW(ib)){
bat_destroy(b);
temp_destroy(i->bat.ubid);
i->bat.ubid = temp_create(ib);
@@ -400,9 +400,10 @@
{
size_t nr = 0;
BUN r;
+ BATiter ii = bat_iterator(i);
- for (r = i->batInserted; r < BUNlast(i); r = BUNnext(i, r)) {
- BUNappend(b, BUNtail(i,r), TRUE);
+ for (r = i->batInserted; r < BUNlast(i); r++) {
+ BUNappend(b, BUNtail(ii,r), TRUE);
nr++;
}
return nr;
@@ -413,9 +414,10 @@
{
size_t nr = 0;
BUN r;
+ BATiter ii = bat_iterator(i);
- for (r = i->batInserted; r < BUNlast(i); r = BUNnext(i, r)) {
- BUNins(b, BUNhead(i,r), BUNtail(i,r), TRUE);
+ for (r = i->batInserted; r < BUNlast(i); r++) {
+ BUNins(b, BUNhead(ii,r), BUNtail(ii,r), TRUE);
nr++;
}
return nr;
@@ -636,10 +638,11 @@
static void
load_keycolumn(sql_trans *tr, BAT *columns, BUN j, sql_key *k)
{
+ BATiter columnsi = bat_iterator(columns);
sql_kc *kc = NEW(sql_kc);
BAT *kc_col = get_bat("sys_keycolumns_column");
BAT *kc_trunc = get_bat("sys_keycolumns_trunc");
- ptr lid = BUNhead(columns, j);
+ ptr lid = BUNhead(columnsi, j);
char *name = bun_find(kc_col, lid);
int trunc = *(int *) bun_find(kc_trunc, lid);
sql_column *c = find_sql_column(k->t, name);
@@ -658,6 +661,7 @@
static sql_key *
load_key(sql_trans *tr, BAT *keys, BUN j, sql_table *t)
{
+ BATiter keysi = bat_iterator(keys);
size_t ccnt;
BAT *cols, *rcols;
BAT *key_id = get_bat("sys_keys_id");
@@ -668,7 +672,7 @@
BAT *kc_id = get_bat("sys_keycolumns_id");
BAT *kc_nr = get_bat("sys_keycolumns_nr");
BAT *D_keycolumns = get_bat("D_sys_keycolumns");
- ptr lid = BUNhead(keys, j);
+ ptr lid = BUNhead(keysi, j);
key_type ktype = (key_type) *(int *) bun_find(key_tpe, lid);
char *name = (char *) bun_find(key_name, lid);
sql_key *nk = (ktype != fkey) ? (sql_key *) NEW(sql_ukey)
@@ -741,7 +745,7 @@
BAT *keys = BATselect(key_rkey, (ptr) &nk->base.id, (ptr)
&nk->base.id);
BATloop(keys, p, q) {
- ptr fkey_lid = (sqlid *) BUNhead(keys, p);
+ ptr fkey_lid = (sqlid *) BUNhead(keysi, p);
sqlid fkey = *(sqlid *) bun_find(key_id, fkey_lid);
node *n = list_find(t->s->keys, &fkey, (fcmp) &key_cmp);
@@ -771,10 +775,11 @@
static void
load_idxcolumn(sql_trans *tr, BAT *columns, BUN j, sql_idx * i)
{
+ BATiter columnsi = bat_iterator(columns);
sql_kc *kc = NEW(sql_kc);
BAT *kc_col = get_bat("sys_keycolumns_column");
BAT *kc_trunc = get_bat("sys_keycolumns_trunc");
- ptr lid = BUNhead(columns, j);
+ ptr lid = BUNhead(columnsi, j);
char *name = bun_find(kc_col, lid);
int trunc = *(int *) bun_find(kc_trunc, lid);
sql_column *c = find_sql_column(i->t, name);
@@ -795,6 +800,7 @@
static sql_idx *
load_idx(sql_trans *tr, BAT *idxs, BUN j, sql_table *t)
{
+ BATiter idxsi = bat_iterator(idxs);
char bname[BUFSIZ];
size_t ccnt;
BAT *b;
@@ -805,7 +811,7 @@
BAT *kc_id = get_bat("sys_keycolumns_id");
BAT *kc_nr = get_bat("sys_keycolumns_nr");
BAT *D_keycolumns = get_bat("D_sys_keycolumns");
- ptr lid = BUNhead(idxs, j);
+ ptr lid = BUNhead(idxsi, j);
idx_type itype = (idx_type) * (int *) bun_find(idx_tpe, lid);
char *name = (char *) bun_find(idx_name, lid);
sql_idx *ni = NEW(sql_idx);
@@ -895,10 +901,11 @@
static void
load_triggercolumn(sql_trans *tr, BAT *columns, BUN j, sql_trigger * i)
{
+ BATiter columnsi = bat_iterator(columns);
sql_kc *kc = NEW(sql_kc);
BAT *kc_col = get_bat("sys_keycolumns_column");
BAT *kc_trunc = get_bat("sys_keycolumns_trunc");
- ptr lid = BUNhead(columns, j);
+ ptr lid = BUNhead(columnsi, j);
char *name = bun_find(kc_col, lid);
int trunc = *(int *) bun_find(kc_trunc, lid);
sql_column *c = find_sql_column(i->t, name);
@@ -917,6 +924,7 @@
static sql_trigger *
load_trigger(sql_trans *tr, BAT *triggers, BUN j, sql_table *t)
{
+ BATiter triggersi = bat_iterator(triggers);
size_t ccnt;
BAT *cols, *rcols;
BAT *trigger_id = get_bat("sys_triggers_id");
@@ -931,7 +939,7 @@
BAT *kc_id = get_bat("sys_keycolumns_id");
BAT *kc_nr = get_bat("sys_keycolumns_nr");
BAT *D_keycolumns = get_bat("D_sys_keycolumns");
- ptr lid = BUNhead(triggers, j);
+ ptr lid = BUNhead(triggersi, j);
char *name = (char *) bun_find(trigger_name, lid);
char *old_name = (char *) bun_find(trigger_old_name, lid);
char *new_name = (char *) bun_find(trigger_new_name, lid);
@@ -989,10 +997,11 @@
static sql_column *
load_column(sql_trans *tr, sql_table *t, BAT *columns, BUN j)
{
+ BATiter columnsi = bat_iterator(columns);
char *def;
char name[BUFSIZ], *tpe;
sql_column *c = NEW(sql_column);
- ptr lid = BUNhead(columns, j);
+ ptr lid = BUNhead(columnsi, j);
int sz, d;
BAT *b;
BAT *column_id = get_bat("sys__columns_id");
@@ -1084,9 +1093,10 @@
static sql_table *
load_table(sql_trans *tr, sql_schema *s, BAT *tables, BUN j)
{
+ BATiter tablesi = bat_iterator(tables);
char name[BUFSIZ], *query;
sql_table *t = NEW(sql_table);
- ptr lid = BUNhead(tables, j);
+ ptr lid = BUNhead(tablesi, j);
BAT *cols, *rcols, *keys, *rkeys, *idxs, *ridxs, *triggers, *rtriggers;
BUN p, q;
size_t ccnt;
@@ -1228,8 +1238,9 @@
static sql_type *
load_type(sql_trans *tr, sql_schema * s, BAT *types, BUN j)
{
+ BATiter typesi = bat_iterator(types);
sql_type *t = NEW(sql_type);
- ptr lid = BUNhead(types, j);
+ ptr lid = BUNhead(typesi, j);
BAT *type_id = get_bat("sys_types_id");
BAT *type_systemname = get_bat("sys_types_systemname");
BAT *type_sqlname = get_bat("sys_types_sqlname");
@@ -1277,9 +1288,10 @@
static sql_arg *
load_arg(sql_trans *tr, sql_func * f, BAT *args, BUN j)
{
+ BATiter argsi = bat_iterator(args);
char *tpe;
sql_arg *a = NEW(sql_arg);
- ptr lid = BUNhead(args, j);
+ ptr lid = BUNhead(argsi, j);
int digits, scale;
BAT *arg_name = get_bat("sys_args_name");
BAT *arg_type = get_bat("sys_args_type");
@@ -1308,8 +1320,9 @@
static sql_func *
load_func(sql_trans *tr, sql_schema * s, BAT *funcs, BUN j)
{
+ BATiter funcsi = bat_iterator(funcs);
sql_func *t = NEW(sql_func);
- ptr lid = BUNhead(funcs, j);
+ ptr lid = BUNhead(funcsi, j);
BAT *args, *rargs;
BUN p, q;
BAT *func_id = get_bat("sys_functions_id");
@@ -1396,8 +1409,9 @@
static sql_sequence *
load_seq(sql_trans *tr, sql_schema * s, BAT *seqs, BUN j)
{
+ BATiter seqsi = bat_iterator(seqs);
sql_sequence *seq = NEW(sql_sequence);
- ptr lid = BUNhead(seqs, j);
+ ptr lid = BUNhead(seqsi, j);
BAT *seq_id = get_bat("sys_sequences_id");
BAT *seq_name = get_bat("sys_sequences_name");
BAT *seq_start = get_bat("sys_sequences_start");
@@ -1431,8 +1445,9 @@
static sql_schema *
load_schema(sql_trans *tr, BAT *schemas, BUN j)
{
+ BATiter schemasi = bat_iterator(schemas);
sql_schema *s = NEW(sql_schema);
- ptr lid = BUNhead(schemas, j);
+ ptr lid = BUNhead(schemasi, j);
BAT *tables, *ptables, *types, *funcs, *seqs;
BUN p, q;
BAT *schema_names = get_bat("sys_schemas_name");
@@ -3805,12 +3820,13 @@
bat_destroy(ci);
}
if (ok == LOG_OK && ttr == gtrans &&
- (nr_active != 1 || BATcount(cur)))
+ (nr_active != 1 ||
+ (BATcount(cur) && ins->ttype)))
ok = log_bat(sql_logger, ins,
oc->bat.name);
}
if (nr_active == 1) { /* flush all */
BAT *pi = temp_descriptor(oc->bat.ibid);
- if (!BATcount(cur)) {
+ if (!BATcount(cur) && ins->ttype) {
/* swap cur and ins */
BAT *swpbat = ins;
bat swp = cc->bat.ibid;
@@ -3920,12 +3936,13 @@
bat_destroy(ci);
}
if (ok == LOG_OK && ttr == gtrans &&
- (nr_active != 1 || BATcount(cur)))
+ (nr_active != 1 ||
+ (BATcount(cur) && ins->ttype)))
ok = log_bat(sql_logger, ins,
oi->bat.name);
}
if (nr_active == 1) { /* flush all */
BAT *pi = temp_descriptor(oi->bat.ibid);
- if (!BATcount(cur)) {
+ if (!BATcount(cur) && ins->ttype) {
/* swap cur and ins */
BAT *swpbat = ins;
bat swp = ci->bat.ibid;
Index: bat_table.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/storage/bat/bat_table.mx,v
retrieving revision 1.27
retrieving revision 1.27.6.1
diff -u -d -r1.27 -r1.27.6.1
--- bat_table.mx 3 Jan 2007 12:39:50 -0000 1.27
+++ bat_table.mx 12 Aug 2007 17:42:31 -0000 1.27.6.1
@@ -84,7 +84,7 @@
if (d) {
r = BATkdiff(b,BATmirror(d)); bat_destroy(b); b = r;
}
- assert(r->thash == NULL);
+ assert(r->T->hash == NULL);
return r;
}
@@ -127,11 +127,12 @@
bat_destroy(d);
ccnt = BATcount(valB);
if (ccnt) {
+ BATiter valBi = bat_iterator(valB);
BATloop(valB,p,q){
- lid = BUNhead(valB,p);
+ lid = BUNhead(valBi,p);
aux = bun_find(valB,lid);
sz = ATOMlen(valB->ttype,aux);
- value = GDKmalloc(sz);
+ value = GDKmalloc(sz);
memcpy(value,aux,sz);
res = list_append(res,value);
}
@@ -183,8 +184,9 @@
ccnt = BATcount(valB);
if (ccnt) {
+ BATiter valBi = bat_iterator(valB);
BATloop(valB,p,q){
- lid = BUNhead(valB,p);
+ lid = BUNhead(valBi,p);
aux = bun_find(valB,lid);
sz = ATOMlen(valB->ttype,aux);
value = GDKmalloc(sz);
@@ -228,8 +230,10 @@
r = BATmirror(b);
p = BUNfnd(r, value);
- if (p)
- rid = *(oid *) BUNtail(r, p);
+ if (p != BUN_NONE) {
+ BATiter ri = bat_iterator(r);
+ rid = *(oid *) BUNtail(ri, p);
+ }
bat_destroy(b);
return rid;
}
@@ -248,11 +252,12 @@
bat_destroy(d);
p = BUNfnd(b, (ptr) &rid);
- if (p) {
+ if (p != BUN_NONE) {
+ BATiter bi = bat_iterator(b);
void *r;
int sz;
- res = BUNtail(b, p);
+ res = BUNtail(bi, p);
sz = ATOMlen(b->ttype, res);
r = GDKmalloc(sz);
memcpy(r,res,sz);
@@ -272,7 +277,7 @@
if (c->bat.ubid) {
b = temp_descriptor(c->bat.ubid);
- if (BUNfnd(b, &rid)) {
+ if (BUNfnd(b, &rid) != BUN_NONE) {
BUNreplace(b, (ptr) &rid, value, TRUE);
} else {
bat_set_access(b, BAT_WRITE);
Index: bat_bm.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/storage/bat/bat_bm.mx,v
retrieving revision 1.30
retrieving revision 1.30.6.1
diff -u -d -r1.30 -r1.30.6.1
--- bat_bm.mx 3 Jan 2007 12:39:49 -0000 1.30
+++ bat_bm.mx 12 Aug 2007 17:42:30 -0000 1.30.6.1
@@ -114,8 +114,10 @@
{
BUN p = BUNfnd(b, v);
- if (p)
- return BUNtail(b, p);
+ if (p != BUN_NONE) {
+ BATiter bi = bat_iterator(b);
+ return BUNtail(bi, p);
+ }
return NULL;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins