~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to examples/sqlite_server.c

  • Committer: lbieber
  • Date: 2010-10-01 13:06:31 UTC
  • mfrom: (1802.2.2 drizzle-bug-651948)
  • mto: This revision was merged to the branch mainline in revision 1805.
  • Revision ID: lbieber@orisndriz08-20101001130631-xubscnhmj7r5dn6g
Merge Andrew - Fix bug 651948 - Index lengths not retrieved using drizzledump

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
 * Copyright (C) 2008 Eric Day (eday@oddments.org)
5
5
 * All rights reserved.
6
6
 *
7
 
 * Redistribution and use in source and binary forms, with or without
8
 
 * modification, are permitted provided that the following conditions are
9
 
 * met:
10
 
 *
11
 
 *     * Redistributions of source code must retain the above copyright
12
 
 * notice, this list of conditions and the following disclaimer.
13
 
 *
14
 
 *     * Redistributions in binary form must reproduce the above
15
 
 * copyright notice, this list of conditions and the following disclaimer
16
 
 * in the documentation and/or other materials provided with the
17
 
 * distribution.
18
 
 *
19
 
 *     * The names of its contributors may not be used to endorse or
20
 
 * promote products derived from this software without specific prior
21
 
 * written permission.
22
 
 *
23
 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
 
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
 
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
 
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30
 
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
 
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
 
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
 
 *
 
7
 * Use and distribution licensed under the BSD license.  See
 
8
 * the COPYING.BSD file in the root source directory for full text.
35
9
 */
36
10
 
37
 
 
38
11
#include <errno.h>
39
12
#include <stdio.h>
40
13
#include <stdlib.h>
93
66
  bool mysql= false;
94
67
  in_port_t port= 0;
95
68
  drizzle_return_t ret;
96
 
  sqlite_server *server= (sqlite_server*)malloc(sizeof(sqlite_server));
97
 
  drizzle_con_st *con_listen= (drizzle_con_st*)malloc(sizeof(drizzle_con_st));
 
69
  sqlite_server server;
 
70
  drizzle_con_st con_listen;
98
71
 
99
 
  server->db= NULL;
100
 
  server->verbose= DRIZZLE_VERBOSE_NEVER;
 
72
  server.db= NULL;
 
73
  server.verbose= DRIZZLE_VERBOSE_NEVER;
101
74
 
102
75
  while((c = getopt(argc, argv, "c:h:mp:v")) != -1)
103
76
  {
120
93
      break;
121
94
 
122
95
    case 'v':
123
 
      switch(server->verbose)
124
 
      {
125
 
      case DRIZZLE_VERBOSE_NEVER:
126
 
        server->verbose= DRIZZLE_VERBOSE_FATAL;
127
 
        break;
128
 
      case DRIZZLE_VERBOSE_FATAL:
129
 
        server->verbose= DRIZZLE_VERBOSE_ERROR;
130
 
        break;
131
 
      case DRIZZLE_VERBOSE_ERROR:
132
 
        server->verbose= DRIZZLE_VERBOSE_INFO;
133
 
        break;
134
 
      case DRIZZLE_VERBOSE_INFO:
135
 
        server->verbose= DRIZZLE_VERBOSE_DEBUG;
136
 
        break;
137
 
      case DRIZZLE_VERBOSE_DEBUG:
138
 
        server->verbose= DRIZZLE_VERBOSE_CRAZY;
139
 
        break;
140
 
      case DRIZZLE_VERBOSE_CRAZY:
141
 
      case DRIZZLE_VERBOSE_MAX:
142
 
        break;
143
 
      }
 
96
      server.verbose++;
144
97
      break;
145
98
 
146
99
    default:
155
108
    return 1;
156
109
  }
157
110
 
158
 
  sqlite3_open(argv[optind], &(server->db));
159
 
  if (server->db == NULL)
 
111
  sqlite3_open(argv[optind], &(server.db));
 
112
  if (server.db == NULL)
160
113
  {
161
114
    printf("sqlite3_open: could not open sqlite3 db\n");
162
115
    return 1;
163
116
  }
164
117
 
165
 
  if (drizzle_create(&(server->drizzle)) == NULL)
 
118
  if (drizzle_create(&server.drizzle) == NULL)
166
119
  {
167
120
    printf("drizzle_create:NULL\n");
168
121
    return 1;
169
122
  }
170
123
 
171
 
  drizzle_add_options(&(server->drizzle), DRIZZLE_FREE_OBJECTS);
172
 
  drizzle_set_verbose(&(server->drizzle), server->verbose);
 
124
  drizzle_add_options(&server.drizzle, DRIZZLE_FREE_OBJECTS);
 
125
  drizzle_set_verbose(&server.drizzle, server.verbose);
173
126
 
174
 
  if (drizzle_con_create(&(server->drizzle), con_listen) == NULL)
 
127
  if (drizzle_con_create(&server.drizzle, &con_listen) == NULL)
175
128
  {
176
129
    printf("drizzle_con_create:NULL\n");
177
130
    return 1;
178
131
  }
179
132
 
180
 
  drizzle_con_add_options(con_listen, DRIZZLE_CON_LISTEN);
181
 
  drizzle_con_set_tcp(con_listen, host, port);
 
133
  drizzle_con_add_options(&con_listen, DRIZZLE_CON_LISTEN);
 
134
  drizzle_con_set_tcp(&con_listen, host, port);
182
135
 
183
136
  if (mysql)
184
 
    drizzle_con_add_options(con_listen, DRIZZLE_CON_MYSQL);
 
137
    drizzle_con_add_options(&con_listen, DRIZZLE_CON_MYSQL);
185
138
 
186
 
  if (drizzle_con_listen(con_listen) != DRIZZLE_RETURN_OK)
 
139
  if (drizzle_con_listen(&con_listen) != DRIZZLE_RETURN_OK)
187
140
  {
188
 
    printf("drizzle_con_listen:%s\n", drizzle_error(&(server->drizzle)));
 
141
    printf("drizzle_con_listen:%s\n", drizzle_error(&server.drizzle));
189
142
    return 1;
190
143
  }
191
144
 
192
145
  while (1)
193
146
  {
194
 
    (void)drizzle_con_accept(&(server->drizzle), &(server->con), &ret);
 
147
    (void)drizzle_con_accept(&server.drizzle, &server.con, &ret);
195
148
    if (ret != DRIZZLE_RETURN_OK)
196
149
    {
197
 
      printf("drizzle_con_accept:%s\n", drizzle_error(&(server->drizzle)));
 
150
      printf("drizzle_con_accept:%s\n", drizzle_error(&server.drizzle));
198
151
      return 1;
199
152
    }
200
153
 
201
 
    server_run(server);
 
154
    server_run(&server);
202
155
 
203
 
    drizzle_con_free(&(server->con));
 
156
    drizzle_con_free(&server.con);
204
157
 
205
158
    if (count > 0)
206
159
    {
211
164
    }
212
165
  }
213
166
 
214
 
  drizzle_con_free(con_listen);
215
 
  drizzle_free(&(server->drizzle));
216
 
  sqlite3_close(server->db);
217
 
  free(con_listen);
218
 
  free(server);
 
167
  drizzle_con_free(&con_listen);
 
168
  drizzle_free(&server.drizzle);
 
169
  sqlite3_close(server.db);
219
170
 
220
171
  return 0;
221
172
}
260
211
    if (data != NULL)
261
212
      free(data);
262
213
 
263
 
    data= (uint8_t *)drizzle_con_command_buffer(&(server->con), &command, &total, &ret);
 
214
    data= drizzle_con_command_buffer(&(server->con), &command, &total, &ret);
264
215
    if (ret == DRIZZLE_RETURN_LOST_CONNECTION ||
265
216
        (ret == DRIZZLE_RETURN_OK && command == DRIZZLE_COMMAND_QUIT))
266
217
    {
357
308
  sqlite_server *server= (sqlite_server *)data;
358
309
  drizzle_return_t ret;
359
310
  int x;
360
 
  size_t *sizes= (size_t*)malloc(sizeof(size_t)*8192);
 
311
  size_t sizes[8192];
361
312
 
362
313
  if (server->send_columns == true)
363
314
  {
424
375
 
425
376
  server->rows++;
426
377
 
427
 
  free(sizes);
428
 
 
429
378
  return 0;
430
379
}
431
380