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

Reply via email to