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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list