How does this grab folks? It's sort of a homegrown printf just for our
queries, with the following replacements:
%s -- string, gets escaped automatically
%d -- integer
%l -- u64_t
%u -- unsigned integer
%T -- table prefix
%D -- to_date function
%C -- to_char function
void testdbstring(void)
{
char *goquery;
char *query = "SELECT * FROM %Ttable WHERE "
" string = '%s' AND int = %d "
" AND u64_t = %l AND unsigned = %u "
" AND to_date = %D and to_char = %C ";
char *string = "string";
int integer = -12345;
unsigned unint = 12345;
u64_t bigint = 1222333444;
dbstring(&goquery, query, string, integer, bigint, unint);
printf("%s\n", goquery);
}
The query string is allocated, strings escaped, parameters replaced:
SELECT * FROM dbmail_table WHERE
string = 'string' AND int = -12345
AND u64_t = 1222333444ND unsigned = 12345
AND to_date = TO_DATE( foo ) and to_char = TO_CHAR( foo )
Aaron
--