Compare commits
1 Commits
releng-0.5
...
0.5.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 3e31ed5b3e |
+1
-1
@@ -449,7 +449,7 @@ done
|
||||
|
||||
echo \#define BONGO_BUILD_BRANCH \"0.5\" > ./include/bongo-buildinfo.h
|
||||
echo \#define BONGO_BUILD_VSTR \"v\" >> ./include/bongo-buildinfo.h
|
||||
echo \#define BONGO_BUILD_VER \"1035\" >> ./include/bongo-buildinfo.h
|
||||
echo \#define BONGO_BUILD_VER \"1073\" >> ./include/bongo-buildinfo.h
|
||||
|
||||
conf_flags="--enable-maintainer-mode"
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ AC_PREREQ(2.52)
|
||||
|
||||
AC_INIT(src/libs/msgapi/msgapi.c)
|
||||
|
||||
AM_INIT_AUTOMAKE(bongo, 0.5.0rc1)
|
||||
AM_INIT_AUTOMAKE(bongo, 0.5.0)
|
||||
|
||||
# this space is here to trick autogen.sh
|
||||
AM_GNU_GETTEXT([external])
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ typedef struct _MsgSQLHandle {
|
||||
} stmts;
|
||||
|
||||
BongoMemStack *memstack;
|
||||
XplSemaphore *transactionLock;
|
||||
XplSemaphore transactionLock;
|
||||
int transactionDepth;
|
||||
int lockTimeoutMs;
|
||||
BOOL isNew; // have we just created this?
|
||||
|
||||
@@ -757,10 +757,14 @@ StoreObjectIterQueryBuilder(StoreClient *client, QueryBuilder *builder, BOOL sho
|
||||
}
|
||||
|
||||
|
||||
MemFree(sql);
|
||||
QueryBuilderFinish(builder);
|
||||
return 1000;
|
||||
|
||||
abort:
|
||||
if (sql) {
|
||||
MemFree(sql);
|
||||
}
|
||||
MsgSQLAbortTransaction(client->storedb);
|
||||
QueryBuilderFinish(builder);
|
||||
|
||||
|
||||
@@ -43,11 +43,33 @@ QueryBuilderStart(QueryBuilder *builder)
|
||||
void
|
||||
QueryBuilderFinish(QueryBuilder *builder)
|
||||
{
|
||||
unsigned int x;
|
||||
StorePropInfo *newprop;
|
||||
ExtraLink *link;
|
||||
QueryBuilder_Param *param;
|
||||
|
||||
QueryParserFinish(&builder->internal_parser);
|
||||
QueryParserFinish(&builder->external_parser);
|
||||
|
||||
/* free all the properties */
|
||||
for(x=0;x<BongoArrayCount(builder->properties);x++) {
|
||||
newprop = BongoArrayIndex(builder->properties, StorePropInfo *, x);
|
||||
MemFree(newprop);
|
||||
}
|
||||
BongoArrayFree(builder->properties, TRUE);
|
||||
|
||||
/* free all the links */
|
||||
for(x=0;x<BongoArrayCount(builder->links);x++) {
|
||||
link = BongoArrayIndex(builder->links, ExtraLink *, x);
|
||||
MemFree(link);
|
||||
}
|
||||
BongoArrayFree(builder->links, TRUE);
|
||||
|
||||
/* free all the parameters */
|
||||
for(x=0;x<BongoArrayCount(builder->parameters);x++) {
|
||||
param = BongoArrayIndex(builder->parameters, QueryBuilder_Param *, x);
|
||||
MemFree(param);
|
||||
}
|
||||
BongoArrayFree(builder->parameters, TRUE);
|
||||
}
|
||||
|
||||
@@ -307,6 +329,7 @@ QueryBuilderCreateSQL(QueryBuilder *builder, char **output)
|
||||
{
|
||||
BongoStringBuilder b;
|
||||
unsigned int i;
|
||||
int ccode;
|
||||
|
||||
if (BongoStringBuilderInit(&b)) {
|
||||
// unable to start... ick
|
||||
@@ -359,7 +382,8 @@ QueryBuilderCreateSQL(QueryBuilder *builder, char **output)
|
||||
// add in any constraints specified on the various columns
|
||||
if (builder->int_query) {
|
||||
if (QueryExpressionToSQL(builder, builder->internal_parser.start, &b)) {
|
||||
return -2;
|
||||
ccode = -2;
|
||||
goto abort;
|
||||
}
|
||||
}
|
||||
if (builder->int_query && builder->ext_query) {
|
||||
@@ -367,7 +391,8 @@ QueryBuilderCreateSQL(QueryBuilder *builder, char **output)
|
||||
}
|
||||
if (builder->ext_query) {
|
||||
if (QueryExpressionToSQL(builder, builder->external_parser.start, &b)) {
|
||||
return -3;
|
||||
ccode = -3;
|
||||
goto abort;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,6 +424,10 @@ QueryBuilderCreateSQL(QueryBuilder *builder, char **output)
|
||||
BongoStringBuilderDestroy(&b);
|
||||
|
||||
return 0;
|
||||
|
||||
abort:
|
||||
BongoStringBuilderDestroy(&b);
|
||||
return ccode;
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
* Parser of Store Protocol queries into structures, for later use in SQL queries
|
||||
*/
|
||||
|
||||
#include "stored.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
@@ -151,7 +152,7 @@ QueryParserRun(struct parser_state *state)
|
||||
char *token;
|
||||
struct expression *current_expression = state->start;
|
||||
|
||||
while (pull_token(&(state->query), &token) != -1) {
|
||||
while (pull_token(&(state->query_ptr), &token) != -1) {
|
||||
if (current_expression < state->start) {
|
||||
// ran off the top of our stack, but there were still tokens
|
||||
DEBUG_MESSAGE("ERR: tokens remaining in data\n");
|
||||
@@ -261,6 +262,8 @@ QueryParserStart(struct parser_state *state, const char *query, int max_expr) {
|
||||
return -2;
|
||||
}
|
||||
|
||||
state->query_ptr = state->query;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -274,6 +277,9 @@ QueryParserFinish(struct parser_state *state) {
|
||||
if (state->start != NULL) {
|
||||
MemFree(state->start);
|
||||
}
|
||||
if (state->query != NULL) {
|
||||
MemFree(state->query);
|
||||
}
|
||||
state->start = state->last = NULL;
|
||||
state->entries = 0;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ struct parser_state {
|
||||
struct expression *last;
|
||||
int entries;
|
||||
char *query;
|
||||
char *query_ptr;
|
||||
};
|
||||
|
||||
int QueryParserStart(struct parser_state *state, const char *query, int max_expr);
|
||||
|
||||
Reference in New Issue
Block a user