Changeset: 76cfe30b4d45 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/76cfe30b4d45
Modified Files:
clients/Tests/exports.stable.out
sql/include/sql_relation.h
sql/server/rel_dump.c
sql/server/rel_exp.c
sql/server/rel_exp.h
sql/server/rel_prop.c
sql/server/rel_prop.h
sql/server/rel_statistics.h
Branch: default
Log Message:
moved prop(erty) types into sql_relation.h
diffs (201 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1593,7 +1593,7 @@ str number2name(str s, int len, int i);
sql_part *partition_find_part(sql_trans *tr, sql_table *pt, sql_part *pp);
int pl_register(const char *name, pl_add_types_fptr add_types, pl_load_fptr
pl_load);
void pl_unregister(const char *name);
-prop *prop_create(allocator *sa, rel_prop kind, prop *pre);
+prop *prop_create(allocator *sa, prop_kind kind, prop *pre);
InstrPtr pushPtr(MalBlkPtr mb, InstrPtr q, ptr val);
void qc_delete(qc *cache, cq *q);
cq *qc_find(qc *cache, int id);
diff --git a/sql/include/sql_relation.h b/sql/include/sql_relation.h
--- a/sql/include/sql_relation.h
+++ b/sql/include/sql_relation.h
@@ -13,6 +13,39 @@
#include "sql_catalog.h"
+typedef enum prop_kind {
+ PROP_COUNT, /* Number of expect rows for the relation */
+ PROP_NUNIQUES, /* Estimated number of distinct rows for the expression
*/
+ PROP_MIN, /* min value if available */
+ PROP_MAX, /* max value if available */
+ PROP_JOINIDX, /* could use join idx */
+ PROP_HASHIDX, /* is hash idx */
+ PROP_HASHCOL, /* could use hash idx */
+ PROP_UKEY, /* p = list of exps */
+ PROP_REMOTE, /* uri for remote execution */
+ PROP_USED, /* number of times exp is used */
+ PROP_GROUPINGS, /* used by ROLLUP/CUBE/GROUPING SETS, value contains
the list of sets */
+ PROP_UNNESTING /* used by unnesting rewriter */
+} prop_kind;
+
+typedef struct prop {
+ prop_kind kind; /* kind of property */
+ sqlid id; /* optional id of object involved */
+ union {
+ BUN lval; /* property with simple counts */
+ dbl dval; /* property with estimate */
+ void *pval; /* property value */
+ } value;
+ struct prop *p; /* some relations may have many properties, which are
kept in a chain list */
+} prop;
+
+/* for REMOTE prop we need to keep a list with tids and uris for the remote
tables */
+typedef struct tid_uri {
+ sqlid id;
+ const char* uri;
+} tid_uri;
+
+
typedef enum expression_type {
e_atom,
e_column,
@@ -70,7 +103,7 @@ typedef struct expression {
used:1, /* used for quick dead code removal */
symmetric:1; /* compare between symmetric */
sql_subtype tpe;
- void *p; /* properties for the optimizer */
+ prop *p; /* properties for the optimizer */
str comment;
} sql_exp;
@@ -324,7 +357,7 @@ typedef struct relation {
uint16_t used;
uint16_t nr_outers;
int opt;
- void *p; /* properties for the optimizer, distribution */
+ prop *p; /* properties for the optimizer, distribution */
} sql_rel;
#endif /* SQL_RELATION_H */
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1079,7 +1079,7 @@ read_exps(mvc *sql, sql_rel *lrel, sql_r
}
static sql_exp*
-exp_read_min_or_max(mvc *sql, sql_exp *exp, char *r, int *pos, const char
*prop_str, rel_prop kind)
+exp_read_min_or_max(mvc *sql, sql_exp *exp, char *r, int *pos, const char
*prop_str, prop_kind kind)
{
atom *a;
sql_subtype *tpe = exp_subtype(exp);
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -1787,7 +1787,7 @@ exp_is_eqjoin(sql_exp *e, void *dummy)
}
sql_exp *
-exps_find_prop(list *exps, rel_prop kind)
+exps_find_prop(list *exps, prop_kind kind)
{
if (list_empty(exps))
return NULL;
diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h
--- a/sql/server/rel_exp.h
+++ b/sql/server/rel_exp.h
@@ -191,7 +191,7 @@ extern bool exp_is_fallible(sql_exp *e);
extern bool exps_have_fallible(list *l);
extern bool exps_have_selfref(list *l);
-extern sql_exp *exps_find_prop(list *exps, rel_prop kind);
+extern sql_exp *exps_find_prop(list *exps, prop_kind kind);
/* returns 0 when the relation contain the passed expression (or sub
expressions if subexp is set) else < 0 */
extern int rel_has_exp(sql_rel *rel, sql_exp *e, bool subexp);
diff --git a/sql/server/rel_prop.c b/sql/server/rel_prop.c
--- a/sql/server/rel_prop.c
+++ b/sql/server/rel_prop.c
@@ -15,7 +15,7 @@
#include "sql_string.h"
prop *
-prop_create( allocator *sa, rel_prop kind, prop *pre )
+prop_create( allocator *sa, prop_kind kind, prop *pre )
{
prop *p = SA_NEW(sa, prop);
@@ -70,7 +70,7 @@ prop_remove(allocator *sa, prop *plist,
}
prop *
-find_prop(prop *p, rel_prop kind)
+find_prop(prop *p, prop_kind kind)
{
while(p) {
if (p->kind == kind)
@@ -81,7 +81,7 @@ find_prop(prop *p, rel_prop kind)
}
void *
-find_prop_and_get(prop *p, rel_prop kind)
+find_prop_and_get(prop *p, prop_kind kind)
{
prop *found = find_prop(p, kind);
diff --git a/sql/server/rel_prop.h b/sql/server/rel_prop.h
--- a/sql/server/rel_prop.h
+++ b/sql/server/rel_prop.h
@@ -11,43 +11,11 @@
#ifndef _REL_PROP_H_
#define _REL_PROP_H_
-typedef enum rel_prop {
- PROP_COUNT, /* Number of expect rows for the relation */
- PROP_NUNIQUES, /* Estimated number of distinct rows for the expression
*/
- PROP_MIN, /* min value if available */
- PROP_MAX, /* max value if available */
- PROP_JOINIDX, /* could use join idx */
- PROP_HASHIDX, /* is hash idx */
- PROP_HASHCOL, /* could use hash idx */
- PROP_UKEY, /* p = list of exps */
- PROP_REMOTE, /* uri for remote execution */
- PROP_USED, /* number of times exp is used */
- PROP_GROUPINGS, /* used by ROLLUP/CUBE/GROUPING SETS, value contains
the list of sets */
- PROP_UNNESTING /* used by unnesting rewriter */
-} rel_prop;
-
-typedef struct prop {
- rel_prop kind; /* kind of property */
- sqlid id; /* optional id of object involved */
- union {
- BUN lval; /* property with simple counts */
- dbl dval; /* property with estimate */
- void *pval; /* property value */
- } value;
- struct prop *p; /* some relations may have many properties, which are
kept in a chain list */
-} prop;
-
-/* for REMOTE prop we need to keep a list with tids and uris for the remote
tables */
-typedef struct tid_uri {
- sqlid id;
- const char* uri;
-} tid_uri;
-
-sql_export prop * prop_create( allocator *sa, rel_prop kind, prop *pre );
+sql_export prop * prop_create( allocator *sa, prop_kind kind, prop *pre );
extern prop * prop_copy( allocator *sa, prop *p);
extern prop * prop_remove(allocator *sa, prop *plist, prop *p);
-extern prop * find_prop( prop *p, rel_prop kind);
-extern void * find_prop_and_get(prop *p, rel_prop kind);
+extern prop * find_prop( prop *p, prop_kind kind);
+extern void * find_prop_and_get(prop *p, prop_kind kind);
extern const char * propkind2string( prop *p);
extern char * propvalue2string(allocator *sa, prop *p);
extern void free_props(allocator *sa, prop *p);
diff --git a/sql/server/rel_statistics.h b/sql/server/rel_statistics.h
--- a/sql/server/rel_statistics.h
+++ b/sql/server/rel_statistics.h
@@ -68,7 +68,7 @@ statistics_atom_min(mvc *sql, atom *v1,
}
static inline void
-set_minmax_property(mvc *sql, sql_exp *e, rel_prop kind, atom *val)
+set_minmax_property(mvc *sql, sql_exp *e, prop_kind kind, atom *val)
{
if (val == NULL)
return;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]