null+****@clear*****
null+****@clear*****
2010年 11月 4日 (木) 17:50:27 JST
Kouhei Sutou 2010-11-04 08:50:27 +0000 (Thu, 04 Nov 2010)
New Revision: aa06f773e7f6bfe2e25d84191e406944524f838c
Log:
revert commit miss.
b014ef5d26c6abba3870d3317a2f5b6590663e34 includes reverting
da3198779685c3e589422f8a41bb8ea16b1ee75c commit. But it's mistake!
Sorry...
Modified files:
lib/db.c
Modified: lib/db.c (+31 -11)
===================================================================
--- lib/db.c 2010-11-04 08:45:24 +0000 (5834d07)
+++ lib/db.c 2010-11-04 08:50:27 +0000 (96473ba)
@@ -6433,9 +6433,17 @@ enum {
};
#define CMPNUM(type) {\
- type va = *((type *)(ap));\
- type vb = *((type *)(bp));\
- if (va != vb) { return va > vb; }\
+ if (as) {\
+ if (bs) {\
+ type va = *((type *)(ap));\
+ type vb = *((type *)(bp));\
+ if (va != vb) { return va > vb; }\
+ } else {\
+ return 1;\
+ }\
+ } else {\
+ if (bs) { return 0; }\
+ }\
}
inline static int
@@ -6502,17 +6510,29 @@ compare_value(grn_ctx *ctx, sort_entry *a, sort_entry *b,
CMPNUM(uint64_t);
break;
case KEY_FLOAT32 :
- {
- float va = *((float *)(ap));
- float vb = *((float *)(bp));
- if (va < vb || va > vb) { return va > vb; }
+ if (as) {
+ if (bs) {
+ float va = *((float *)(ap));
+ float vb = *((float *)(bp));
+ if (va < vb || va > vb) { return va > vb; }
+ } else {
+ return 1;
+ }
+ } else {
+ if (bs) { return 0; }
}
break;
case KEY_FLOAT64 :
- {
- double va = *((double *)(ap));
- double vb = *((double *)(bp));
- if (va < vb || va > vb) { return va > vb; }
+ if (as) {
+ if (bs) {
+ double va = *((double *)(ap));
+ double vb = *((double *)(bp));
+ if (va < vb || va > vb) { return va > vb; }
+ } else {
+ return 1;
+ }
+ } else {
+ if (bs) { return 0; }
}
break;
}