File: sql_parser_test.c

package info (click to toggle)
libgda2 1.2.4-1.2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 13,724 kB
  • ctags: 6,979
  • sloc: ansic: 47,166; xml: 19,896; sh: 8,797; makefile: 863; yacc: 202; lex: 129; cpp: 73
file content (81 lines) | stat: -rw-r--r-- 1,628 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "sql_parser.h"
#include "mem.h"

static int
display (GList * list)
{
	for (; list != NULL; list = list->next)
		printf ("%s%s", (char *) list->data, list->next ? ", " : "");
	printf ("\n");
	return 0;
}

static void
list_free_item (void *data, void *nothing)
{
	g_free (data);
}

int
main (int argc, char *argv[])
{
	char buffer[1024];
	sql_statement *result;
	int error = 0;
	char *rebuilt;
	GList *tables;
	GList *fields;

	printf ("SQL Parse Tester\n");
	if (argc >= 2 && strcmp(argv[1],"-testwhere")==0)
		{
		printf("Testing sql where clauses\n");
		return  sql_statement_test_wherejoin();
		}

	while (fgets (buffer, 1023, stdin) != NULL) {
		if (buffer[strlen (buffer) - 1] == '\n')
			buffer[strlen (buffer) - 1] = '\0';
		if (buffer[0] == 0)
			break;
		printf ("parsing: %s\n", buffer);
		result = sql_parse (buffer);
		if (result) {
			/* sql_statement_append_field (result, NULL, "newfield"); */
			rebuilt = sql_stringify (result);
			printf ("rebuilt: %s\n", rebuilt);
			free (rebuilt);

			sql_display (result);
			printf ("\n");

			tables = sql_statement_get_tables (result);
			printf ("Tables: ");
			display (tables);

			g_list_foreach (tables, list_free_item, NULL);
			g_list_free (tables);

			fields = sql_statement_get_fields (result);
			printf ("Fields: ");
			display (fields);

			g_list_foreach (fields, list_free_item, NULL);
			g_list_free (fields);

			sql_destroy (result);
		}
		else {
			error = 1;
			break;
		}
	}
	/* Line will generate warning if memory debugging is disabled */
	memsql_display (); 

	return error;
}