--- a/src/query/wasastringtoquery.cpp
+++ b/src/query/wasastringtoquery.cpp
@@ -1,5 +1,5 @@
#ifndef lint
-static char rcsid[] = "@(#$Id: wasastringtoquery.cpp,v 1.9 2008-08-26 13:50:13 dockes Exp $ (C) 2006 J.F.Dockes";
+static char rcsid[] = "@(#$Id: wasastringtoquery.cpp,v 1.10 2008-12-16 08:53:49 dockes Exp $ (C) 2006 J.F.Dockes";
#endif
/*
* This program is free software; you can redistribute it and/or modify
@@ -25,11 +25,13 @@
#include "wasastringtoquery.h"
-//#define DEB_WASASTRINGTOQ 1
+// #define DEB_WASASTRINGTOQ 1
#ifdef DEB_WASASTRINGTOQ
#define DPRINT(X) fprintf X
+#define DUMPQ(Q) {string D;Q->describe(D);fprintf(stderr, "%s\n", D.c_str());}
#else
#define DPRINT(X)
+#define DUMPQ(Q)
#endif
WasaQuery::~WasaQuery()
@@ -289,9 +291,9 @@
orChain->m_op = WasaQuery::OP_OR;
}
- // We need to transfer the previous query from the main vector
- // to the OR subquery
- if (!query->m_subs.empty()) {
+ // For the first OR, we need to transfer the previous
+ // query from the main vector to the OR subquery
+ if (orChain->m_subs.empty() && !query->m_subs.empty()) {
orChain->m_subs.push_back(query->m_subs.back());
query->m_subs.pop_back();
}
@@ -416,8 +418,10 @@
if (orChain) {
// Getting out of OR. Add the OR subquery to the main one
+ DPRINT((stderr, "Adding OR chain to main.Before: \n"));
+ DUMPQ(query);
+ DUMPQ(orChain);
query->m_subs.push_back(orChain);
- DPRINT((stderr, "Adding OR chain to main\n"));
}
regfree(&m_rx);
@@ -451,7 +455,7 @@
}
string desc;
q->describe(desc);
- printf("%s\n", desc.c_str());
+ fprintf(stderr, "Finally: %s\n", desc.c_str());
exit(0);
}