Fri, 03 Jan 2025 21:40:57 +0100
implement dense results
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
4 | * Copyright 2017 Olaf Wintermann. All rights reserved. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBLIITY OF SUCH DAMAGE. |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #include <stdio.h> |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | #include <sqlite3.h> |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
32 | #include <dbutils/dbutils.h> |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
33 | #include <dbutils/sqlite.h> |
|
3
69ea9040d896
add DB abstraction layer
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
0
diff
changeset
|
34 | #include <dbutils/db.h> |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
35 | |
|
8
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
36 | #include <cx/buffer.h> |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
37 | #include <cx/printf.h> |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
38 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
39 | const char *sql_create_table_person = |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
40 | "create table if not exists Person (" |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
41 | "person_id integer primary key autoincrement, " |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
42 | "name text, " |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
43 | "email text, " |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
44 | "age integer, " |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
45 | "iscustomer integer , " |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
46 | "hash integer, " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
47 | "address_id integer);"; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
48 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
49 | const char *sql_create_table_address = |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
50 | "create table if not exists Address (" |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
51 | "address_id integer primary key autoincrement, " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
52 | "street text, " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
53 | "zip text, " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
54 | "city text);"; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
55 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
56 | const char *sql_create_table_role = |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
57 | "create table if not exists Role (" |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
58 | "role_id integer primary key autoincrement, " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
59 | "person_id integer, " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
60 | "name text);"; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
61 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
62 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
63 | const char *sql_check_table = |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
64 | "select person_id from Person limit 1;"; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
65 | |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
66 | const char *sql_create_test_data1 = |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
67 | "insert into address (street, zip, city) " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
68 | "values " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
69 | "('street 1', '12343', 'city 17'), " |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
70 | "('street 2', '23456', 'city 18');"; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
71 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
72 | const char *sql_create_test_data2 = |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
73 | "insert into person (name, email, age, iscustomer, hash, address_id) " |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
74 | "values " |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
75 | "('alice', 'alice@example.com', 30, 0, 123456789, (select address_id from address where street = 'street 1')), " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
76 | "('bob', 'bob@example.com', 25, 1, 987654321, (select address_id from address where street = 'street 2'));"; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
77 | |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
78 | const char *sql_create_test_data3 = |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
79 | "insert into role (person_id, name) " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
80 | "values " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
81 | "(1, 'finance'), " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
82 | "(1, 'dev'), " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
83 | "(1, 'manager'), " |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
84 | "(2, 'extern');"; |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
85 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
86 | typedef struct Address { |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
87 | int64_t address_id; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
88 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
89 | cxmutstr street; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
90 | cxmutstr zip; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
91 | cxmutstr city; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
92 | } Address; |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
93 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
94 | typedef struct Person { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
95 | int64_t person_id; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
96 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
97 | cxmutstr name; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
98 | cxmutstr email; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
99 | int age; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
100 | bool iscustomer; |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
101 | uint64_t hash; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
102 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
103 | Address *address; |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
104 | |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
105 | CxList *roles; |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
106 | } Person; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
107 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
108 | typedef struct Role { |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
109 | int64_t role_id; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
110 | int64_t person_id; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
111 | cxmutstr name; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
112 | } Role; |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
113 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
114 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
115 | static int create_test_data(sqlite3 *db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
116 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
117 | int main(int argc, char **argv) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
118 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
119 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
120 | DBUContext *ctx = dbuContextCreate(); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
121 | |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
122 | DBUClass *address = dbuRegisterClass(ctx, "address", Address, address_id); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
123 | dbuClassAdd(address, Address, street); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
124 | dbuClassAdd(address, Address, zip); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
125 | dbuClassAdd(address, Address, city); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
126 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
127 | DBUClass *role = dbuRegisterClass(ctx, "role", Role, role_id); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
128 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
129 | DBUClass *person = dbuRegisterClass(ctx, "person", Person, person_id); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
130 | dbuClassAdd(person, Person, name); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
131 | dbuClassAdd(person, Person, email); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
132 | dbuClassAdd(person, Person, age); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
133 | dbuClassAdd(person, Person, iscustomer); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
134 | dbuClassAdd(person, Person, hash); |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
135 | dbuClassAddObj(person, "address_id", offsetof(Person, address), address); |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
136 | dbuClassAddCxLinkedList(person, "person_id", offsetof(Person, roles), role); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
137 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
138 | dbuClassAddForeignKey(role, Role, person_id, person); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
139 | dbuClassAdd(role, Role, name); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
140 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
141 | // Open or create the database |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
142 | sqlite3 *db; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
143 | int rc = sqlite3_open("test.db", &db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
144 | if(rc != SQLITE_OK) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
145 | fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db)); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
146 | sqlite3_close(db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
147 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
148 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
149 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
150 | if(create_test_data(db)) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
151 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
152 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
153 | |
|
3
69ea9040d896
add DB abstraction layer
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
0
diff
changeset
|
154 | DBUConnection *conn = dbuSQLiteConnectionFromDB(db, true); |
|
69ea9040d896
add DB abstraction layer
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
0
diff
changeset
|
155 | DBUQuery *query = conn->createQuery(conn, NULL); |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
156 | dbuQuerySetSQL(query, "select p.*, a.address_id as [__address__address_id], a.street, a.zip, a.city from Person p inner join Address a on p.address_id = a.address_id;"); |
|
4
1908c8b1599f
add new object builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
3
diff
changeset
|
157 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
158 | DBUQuery *roleQuery = conn->createQuery(conn, NULL); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
159 | dbuQuerySetSQL(roleQuery, "select * from role;"); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
160 | |
|
10
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
161 | DBUQuery *query2 = conn->createQuery(conn, NULL); |
|
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
162 | dbuQuerySetSQL(query2, "select p.*, a.address_id as [__address__address_id], a.street, a.zip, a.city, r.role_id as [__role__role_id], r.person_id, r.name from Person p inner join Address a on p.address_id = a.address_id left join Role r on p.person_id = r.person_id;"); |
|
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
163 | |
|
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
164 | DBUObjectBuilder *builder = dbuObjectBuilder(person, query2, cxDefaultAllocator); |
|
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
165 | dbuObjectBuilderSetDenseResult(builder, true); |
|
80f9d007cb52
implement dense results
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
8
diff
changeset
|
166 | //dbuObjectBuilderAddAdditionalQuery(builder, role, roleQuery); |
|
4
1908c8b1599f
add new object builder API
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
3
diff
changeset
|
167 | CxList *persons = dbuObjectBuilderGetList(builder); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
168 | if(persons) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
169 | CxIterator i = cxListIterator(persons); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
170 | cx_foreach(Person *, p, i) { |
|
8
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
171 | CxBuffer rolebuffer; |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
172 | cxBufferInit(&rolebuffer, NULL, 256, 0, CX_BUFFER_AUTO_EXTEND|CX_BUFFER_FREE_CONTENTS); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
173 | cxBufferPut(&rolebuffer, '['); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
174 | if(p->roles) { |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
175 | CxIterator r = cxListIterator(p->roles); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
176 | char *addseparator = ""; |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
177 | cx_foreach(Role *, role, r) { |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
178 | cx_bprintf(&rolebuffer, "%s{ role_id = %d, name = \"%s\"}", addseparator, role->role_id, role->name.ptr); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
179 | addseparator = ", "; |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
180 | } |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
181 | } |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
182 | cxBufferPut(&rolebuffer, ']'); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
183 | cxBufferPut(&rolebuffer, 0); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
184 | printf("{ person_id = %" PRId64 ", name = \"%s\", email = \"%s\", age = %d, iscustomer = %s, hash = %" PRIu64 " roles = %s }\n", |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
185 | p->person_id, p->name.ptr, p->email.ptr, p->age, p->iscustomer ? "true" : "false", p->hash, rolebuffer.space); |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
186 | |
|
bd08116b8af4
add support for list members to the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
7
diff
changeset
|
187 | cxBufferDestroy(&rolebuffer); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
188 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
189 | } else { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
190 | fprintf(stderr, "Error\n"); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
191 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
192 | |
|
3
69ea9040d896
add DB abstraction layer
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
0
diff
changeset
|
193 | conn->free(conn); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
194 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
195 | return 0; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
196 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
197 | |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
198 | static int create_test_data(sqlite3 *db) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
199 | char *err_msg = NULL; |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
200 | sqlite3_stmt *stmt; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
201 | int rc = sqlite3_prepare_v2(db, sql_check_table, -1, &stmt, 0); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
202 | if(rc == SQLITE_OK) { |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
203 | return 0; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
204 | } |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
205 | |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
206 | rc = sqlite3_exec(db, sql_create_table_person, 0, 0, &err_msg); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
207 | if(rc != SQLITE_OK) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
208 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
209 | sqlite3_free(err_msg); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
210 | sqlite3_close(db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
211 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
212 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
213 | |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
214 | rc = sqlite3_exec(db, sql_create_table_address, 0, 0, &err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
215 | if(rc != SQLITE_OK) { |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
216 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
217 | sqlite3_free(err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
218 | sqlite3_close(db); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
219 | return 1; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
220 | } |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
221 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
222 | rc = sqlite3_exec(db, sql_create_table_role, 0, 0, &err_msg); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
223 | if(rc != SQLITE_OK) { |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
224 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
225 | sqlite3_free(err_msg); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
226 | sqlite3_close(db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
227 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
228 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
229 | |
|
5
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
230 | rc = sqlite3_exec(db, sql_create_test_data1, 0, 0, &err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
231 | if(rc != SQLITE_OK) { |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
232 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
233 | sqlite3_free(err_msg); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
234 | sqlite3_close(db); |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
235 | return 1; |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
236 | } |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
237 | |
|
f0c66b2139ea
add support for child objects in the object builder
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
4
diff
changeset
|
238 | rc = sqlite3_exec(db, sql_create_test_data2, 0, 0, &err_msg); |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
239 | if(rc != SQLITE_OK) { |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
240 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
241 | sqlite3_free(err_msg); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
242 | sqlite3_close(db); |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
243 | return 1; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
244 | } |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
245 | |
|
7
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
246 | rc = sqlite3_exec(db, sql_create_test_data3, 0, 0, &err_msg); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
247 | if(rc != SQLITE_OK) { |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
248 | fprintf(stderr, "SQLite error: %s\n", err_msg); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
249 | sqlite3_free(err_msg); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
250 | sqlite3_close(db); |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
251 | return 1; |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
252 | } |
|
c98ff52cd806
prepare for list members
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
5
diff
changeset
|
253 | |
|
0
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
254 | return 0; |
|
1a157da63d7c
add API for registering types and simple SQLite proof of concept
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
255 | } |