Changeset: a426dd289343 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a426dd289343
Modified Files:
        gdk/gdk_select.c
Branch: default
Log Message:

Save correct oid in candidate list
For candidate based selection the wrong result oid was saved.


diffs (96 lines):

diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -179,13 +179,13 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                }                                                       \
        } while (0)
 
-#define addresult {\
+#define addresult(I) {\
        if( cnt == lim ){ \
                BATextend(bn, BATcount( b));\
                lim = BATcapacity(bn); \
                dst = (oid*) Tloc(bn, bn->U->first);\
         } \
-       (dst)[cnt++] = i;\
+       (dst)[cnt++] = I;\
 }
 
 #define SCANLOOPCAND5(TYPE,OP1,OP2,OP3,OP4)\
@@ -199,7 +199,7 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                        for ((i) = (p); (i) < (q); (i)++){  \
                                r = (BUN) (*candlist++ - off) ;\
                                if ( (src)[r] == *(TYPE*) tl ) \
-                                       addresult;\
+                                       addresult(r);\
                        }\
                } else if (anti){\
                        if ( nil == NULL) \
@@ -207,13 +207,13 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                                r = (BUN) (*candlist++ - off) ;\
                                if ( ((lval && ( *(TYPE*) tl OP1 (src)[r])) ) 
||\
                                      (hval && ( *(TYPE*) th OP2 (src)[r])) )\
-                                       addresult;\
+                                       addresult(r);\
                        } else \
                        for ((i) = (p); (i) < (q); (i)++) {\
                                r = (BUN) (*candlist++ - off) ;\
                                if ( ((lval && ( *(TYPE*) tl OP1 (src)[r]) ) ||\
                                      (hval && ( *(TYPE*) th OP2 (src)[r]) )))\
-                                       if ( (src)[r] != TYPE##_nil) addresult; 
\
+                                       if ( (src)[r] != TYPE##_nil) 
addresult(r); \
                        }\
                } else {\
                        if ( nil == NULL) \
@@ -221,13 +221,13 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                                r = (BUN) (*candlist++ - off) ;\
                                if ( (!lval || ( *(TYPE*) tl OP3 (src)[r] )) && 
\
                                     (!hval || ( *(TYPE*) th OP4 (src)[r] )) ) \
-                                       addresult;\
+                                       addresult(r);\
                        } else \
                        for ((i) = (p); (i) < (q); (i)++) {\
                                r = (BUN) (*candlist++ - off) ;\
                                if ( (!lval || ( *(TYPE*) tl OP3 (src)[r] )) && 
\
                                     (!hval || ( *(TYPE*) th OP4 (src)[r] )) ) \
-                                       if ( (src)[r] != TYPE##_nil) addresult; 
\
+                                       if ( (src)[r] != TYPE##_nil) 
addresult(r); \
                        }\
                }\
                BATsetcount(bn,cnt);\
@@ -249,30 +249,30 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn, 
                        assert(!anti);\
                        for ((i) = (p); (i) < (q); (i)++)  \
                                if ( (src)[i] == *(TYPE*) tl ) \
-                                       addresult; \
+                                       addresult(i); \
                } else if (anti){\
                        if ( nil == NULL) \
                        for ((i) = (p); (i) < (q); (i)++) {\
                                if ( ((lval && ( *(TYPE*) tl OP1 (src)[i])) ) 
||\
                                 (hval && ( *(TYPE*) th OP2 (src)[i])) )\
-                                       addresult; \
+                                       addresult(i); \
                        } else \
                        for ((i) = (p); (i) < (q); (i)++) {\
                                if ( ((lval && ( *(TYPE*) tl OP1 (src)[i]) ) ||\
                                      (hval && ( *(TYPE*) th OP2 (src)[i]) )))\
-                                       if ( (src)[i] != TYPE##_nil) addresult; 
\
+                                       if ( (src)[i] != TYPE##_nil) 
addresult(i); \
                        }\
                } else {\
                        if ( nil == NULL) \
                        for ((i) = (p); (i) < (q); (i)++) {\
                                if ( (!lval || ( *(TYPE*) tl OP3 (src)[i] )) && 
\
                                     (!hval || ( *(TYPE*) th OP4 (src)[i] )) ) \
-                                       addresult; \
+                                       addresult(i); \
                        } else \
                        for ((i) = (p); (i) < (q); (i)++) {\
                                if ( (!lval || ( *(TYPE*) tl OP3 (src)[i] )) && 
\
                                     (!hval || ( *(TYPE*) th OP4 (src)[i] )) ) \
-                                       if ( (src)[i] != TYPE##_nil) addresult; 
\
+                                       if ( (src)[i] != TYPE##_nil) 
addresult(i); \
                        }\
                }\
                BATsetcount(bn,cnt);\
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to