Changeset: 223e6c3fb975 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=223e6c3fb975 Added Files: gdk/gdk_crack.c gdk/gdk_crack.h Modified Files: gdk/Makefile.ag gdk/gdk.h sql/backends/monet5/sql.c sql/include/sql_catalog.h sql/server/sql_parser.y sql/server/sql_scan.c Branch: leftmart Log Message:
dummy crack index implementation. Support SQL command of CREATE CRACK INDEX. diffs (238 lines): diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag --- a/gdk/Makefile.ag +++ b/gdk/Makefile.ag @@ -28,6 +28,7 @@ lib_gdk = { gdk_calc.c gdk_calc.h gdk_calc_compare.h gdk_calc_private.h \ gdk_aggr.c gdk_group.c \ gdk_imprints.c gdk_imprints.h \ + gdk_crack.c gdk_crack.h \ gdk_bloom.c gdk_bloom.h \ gdk_join.c gdk_project.c \ gdk_unique.c \ diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -918,8 +918,7 @@ typedef struct BATiter { #define thash T.hash #define timprints T.imprints #define tprops T.props -#define hbloom H->bloom -#define tbloom T->bloom +#define tbloom T.bloom @@ -1989,6 +1988,11 @@ gdk_export gdk_return GDKmergeidx(BAT *b /* The bloom filters */ gdk_export gdk_return BATbloom(BAT *b); +/* the crack index */ +gdk_export gdk_return BATcrack(BAT *b); +gdk_export void CRCKdestroy(BAT *b); +gdk_export lng CRCKsize(BAT *b); + /* * @- Multilevel Storage Modes * diff --git a/gdk/gdk_crack.c b/gdk/gdk_crack.c new file mode 100644 --- /dev/null +++ b/gdk/gdk_crack.c @@ -0,0 +1,40 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +/* + * fake(?) crack implementation + * L.Sidirourgos + */ + +#include "monetdb_config.h" +#include "gdk.h" +#include "gdk_private.h" +#include "gdk_crack.h" + +#define CRACK_VERSION 0 + +gdk_return +BATcrack(BAT *b) +{ + (void) b; + return GDK_SUCCEED; +} + +lng +CRCKsize(BAT *b) +{ + lng sz = 0; + (void) b; + return sz; +} + +void +CRCKdestroy(BAT *b) +{ + (void) b; +} diff --git a/gdk/gdk_crack.h b/gdk/gdk_crack.h new file mode 100644 --- /dev/null +++ b/gdk/gdk_crack.h @@ -0,0 +1,12 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V. + */ + +#ifndef GDK_CRCK_H +#define GDK_CRCK_H + +#endif /* GDK_CRCK_H */ 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 @@ -686,6 +686,12 @@ alter_table(Client cntxt, mvc *sql, char BATimprints(b); BBPunfix(b->batCacheid); } + if (i->type == crack_idx) { + sql_kc *ic = i->columns->h->data; + BAT *b = mvc_bind(sql, nt->s->base.name, nt->base.name, ic->c->base.name, 0); + BATcrack(b); + BBPunfix(b->batCacheid); + } mvc_copy_idx(sql, nt, i); } } @@ -836,6 +842,12 @@ drop_index(Client cntxt, mvc *sql, char IMPSdestroy(b); BBPunfix(b->batCacheid); } + if (i->type == crack_idx) { + sql_kc *ic = i->columns->h->data; + BAT *b = mvc_bind(sql, s->base.name, ic->c->t->base.name, ic->c->base.name, 0); + CRCKdestroy(b); + BBPunfix(b->batCacheid); + } mvc_drop_idx(sql, s, i); } return NULL; @@ -4905,7 +4917,7 @@ SQLoptimizersUpdate(Client cntxt, MalBlk str sql_storage(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) { - BAT *sch, *tab, *col, *type, *loc, *cnt, *atom, *size, *heap, *indices, *phash, *sort, *imprints, *mode, *revsort, *key, *oidx; + BAT *sch, *tab, *col, *type, *loc, *cnt, *atom, *size, *heap, *indices, *phash, *sort, *imprints, *mode, *revsort, *key, *oidx, *crck; mvc *m = NULL; str msg; sql_trans *tr; @@ -4929,6 +4941,7 @@ sql_storage(Client cntxt, MalBlkPtr mb, bat *rrevsort = getArgReference_bat(stk, pci, 14); bat *rkey = getArgReference_bat(stk, pci, 15); bat *roidx = getArgReference_bat(stk, pci, 16); + bat *rcrck = getArgReference_bat(stk, pci, 16); str sname = 0; str tname = 0; str cname = 0; @@ -4956,10 +4969,11 @@ sql_storage(Client cntxt, MalBlkPtr mb, revsort = COLnew(0, TYPE_bit, 0, TRANSIENT); key = COLnew(0, TYPE_bit, 0, TRANSIENT); oidx = COLnew(0, TYPE_lng, 0, TRANSIENT); + crck = COLnew(0, TYPE_lng, 0, TRANSIENT); if (sch == NULL || tab == NULL || col == NULL || type == NULL || mode == NULL || loc == NULL || imprints == NULL || sort == NULL || cnt == NULL || atom == NULL || size == NULL || heap == NULL || indices == NULL || phash == NULL || - revsort == NULL || key == NULL || oidx == NULL) { + revsort == NULL || key == NULL || oidx == NULL || crck == NULL) { if (sch) BBPunfix(sch->batCacheid); if (tab) @@ -4994,6 +5008,8 @@ sql_storage(Client cntxt, MalBlkPtr mb, BBPunfix(key->batCacheid); if (oidx) BBPunfix(oidx->batCacheid); + if (crck) + BBPunfix(crck->batCacheid); throw(SQL, "sql.storage", MAL_MALLOC_FAIL); } if( pci->argc - pci->retc >= 1) @@ -5107,6 +5123,10 @@ sql_storage(Client cntxt, MalBlkPtr mb, sz = bn->torderidx ? bn->torderidx->free : 0; BUNappend(oidx, &sz, FALSE); + + sz = CRCKsize(bn); + BUNappend(crck, &sz, FALSE); + BBPunfix(bn->batCacheid); } @@ -5195,6 +5215,10 @@ sql_storage(Client cntxt, MalBlkPtr mb, BUNappend(key, &bitval, FALSE); sz = bn->torderidx ? bn->torderidx->free : 0; BUNappend(oidx, &sz, FALSE); + + sz = CRCKsize(bn); + BUNappend(crck, &sz, FALSE); + BBPunfix(bn->batCacheid); } } @@ -5219,6 +5243,7 @@ sql_storage(Client cntxt, MalBlkPtr mb, BBPkeepref(*rrevsort = revsort->batCacheid); BBPkeepref(*rkey = key->batCacheid); BBPkeepref(*roidx = oidx->batCacheid); + BBPkeepref(*rcrck = crck->batCacheid); return MAL_SUCCEED; } diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h --- a/sql/include/sql_catalog.h +++ b/sql/include/sql_catalog.h @@ -367,6 +367,7 @@ typedef enum idx_type { no_idx, /* no idx, ie no storage */ imprints_idx, ordered_idx, + crack_idx, new_idx_types } idx_type; diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -529,7 +529,7 @@ int yydebug=1; %token START TRANSACTION READ WRITE ONLY ISOLATION LEVEL %token UNCOMMITTED COMMITTED sqlREPEATABLE SERIALIZABLE DIAGNOSTICS sqlSIZE STORAGE -%token <sval> ASYMMETRIC SYMMETRIC ORDER ORDERED BY IMPRINTS +%token <sval> ASYMMETRIC SYMMETRIC ORDER ORDERED BY IMPRINTS CRACK %token <operation> EXISTS ESCAPE HAVING sqlGROUP sqlNULL %token <operation> FROM FOR MATCH @@ -1247,6 +1247,7 @@ opt_index_type: UNIQUE { $$ = hash_idx; } | ORDERED { $$ = ordered_idx; } | IMPRINTS { $$ = imprints_idx; } + | CRACK { $$ = crack_idx; } | /* empty */ { $$ = hash_idx; } ; diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c --- a/sql/server/sql_scan.c +++ b/sql/server/sql_scan.c @@ -191,6 +191,7 @@ scanner_init_keywords(void) keywords_insert("ACTION", ACTION); keywords_insert("CASCADE", CASCADE); + keywords_insert("CRACK", CRACK); keywords_insert("RESTRICT", RESTRICT); keywords_insert("GLOBAL", GLOBAL); keywords_insert("GROUP", sqlGROUP); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list