File: sql_parse_test.c

package info (click to toggle)
qof 0.8.6-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 4,488 kB
  • sloc: ansic: 30,786; sh: 11,632; xml: 487; makefile: 431; yacc: 184; lex: 123; sed: 16
file content (75 lines) | stat: -rw-r--r-- 1,419 bytes parent folder | download | duplicates (8)
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
#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");

	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;
		}
	}
	memsql_display ();

	return error;
}