~ubuntu-branches/ubuntu/saucy/drizzle/saucy-proposed

« back to all changes in this revision

Viewing changes to examples/simple_multi.c

  • Committer: Package Import Robot
  • Author(s): Clint Byrum
  • Date: 2012-06-19 10:46:49 UTC
  • mfrom: (1.2.11) (2.1.16 sid)
  • Revision ID: package-import@ubuntu.com-20120619104649-9ij634mxm4x8pp4l
Tags: 1:7.1.36-stable-1ubuntu1
* Merge from Debian unstable. (LP: #987575)
  Remaining changes:
  - Added upstart script.
* debian/drizzle.upstart: dropped logger since upstart logs job
  output now.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Drizzle Client & Protocol Library
3
 
 *
4
 
 * Copyright (C) 2008 Eric Day (eday@oddments.org)
5
 
 * All rights reserved.
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
 
 *
35
 
 */
36
 
 
37
 
 
38
 
#include <config.h>
39
 
 
40
 
#include <stdio.h>
41
 
#include <string.h>
42
 
#include <stdlib.h>
43
 
 
44
 
#include <libdrizzle/drizzle_client.h>
45
 
 
46
 
#define SIMPLE_MULTI_COUNT 10
47
 
 
48
 
int main(int argc, char *argv[])
49
 
{
50
 
  const char *query= "SELECT table_schema,table_name FROM tables";
51
 
  drizzle_st drizzle;
52
 
  drizzle_con_st *con;
53
 
  drizzle_result_st *result;
54
 
  drizzle_query_st *ql;
55
 
  drizzle_return_t ret;
56
 
  drizzle_row_t row;
57
 
  int x;
58
 
 
59
 
  con= (drizzle_con_st*)malloc(sizeof(drizzle_con_st) * SIMPLE_MULTI_COUNT);
60
 
  result= (drizzle_result_st*)malloc(sizeof(drizzle_result_st) * SIMPLE_MULTI_COUNT);
61
 
  ql= (drizzle_query_st*)malloc(sizeof(drizzle_query_st) * SIMPLE_MULTI_COUNT);
62
 
 
63
 
  if (drizzle_create(&drizzle) == NULL)
64
 
  {
65
 
    printf("drizzle_create:NULL\n");
66
 
    return 1;
67
 
  }
68
 
 
69
 
  /* Create SIMPLE_MULTI_COUNT connections and initialize query list. */
70
 
  for (x= 0; x < SIMPLE_MULTI_COUNT; x++)
71
 
  {
72
 
    if (x == 0)
73
 
    {
74
 
      if (drizzle_con_create(&drizzle, &(con[0])) == NULL)
75
 
      {
76
 
        printf("drizzle_con_create:%s\n", drizzle_error(&drizzle));
77
 
        return 1;
78
 
      }
79
 
 
80
 
      if (argc == 2 && !strcmp(argv[1], "-m"))
81
 
        drizzle_con_add_options(&(con[0]), DRIZZLE_CON_MYSQL);
82
 
      else if (argc != 1)
83
 
      {
84
 
        printf("usage: %s [-m]\n", argv[0]);
85
 
        return 1;
86
 
      }
87
 
 
88
 
      drizzle_con_set_db(&(con[0]), "information_schema");
89
 
    }
90
 
    else
91
 
    {
92
 
      if (drizzle_con_clone(&drizzle, &(con[x]), &(con[0])) == NULL)
93
 
      {
94
 
        printf("drizzle_con_clone:%s\n", drizzle_error(&drizzle));
95
 
        return 1;
96
 
      }
97
 
    }
98
 
 
99
 
    if (drizzle_query_add(&drizzle, &(ql[x]), &(con[x]), &(result[x]), query,
100
 
                          strlen(query), DRIZZLE_QUERY_NONE, NULL) == NULL)
101
 
    {
102
 
      printf("drizzle_query_add:%s\n", drizzle_error(&drizzle));
103
 
      return 1;
104
 
    }
105
 
  }
106
 
 
107
 
  ret= drizzle_query_run_all(&drizzle);
108
 
  if (ret != DRIZZLE_RETURN_OK)
109
 
  {
110
 
    printf("drizzle_query_run_all:%s\n", drizzle_error(&drizzle));
111
 
    return 1;
112
 
  }
113
 
 
114
 
  for (x= 0; x < SIMPLE_MULTI_COUNT; x++)
115
 
  {
116
 
    if (drizzle_result_error_code(&(result[x])) != 0)
117
 
    {
118
 
      printf("%d:%s\n", drizzle_result_error_code(&(result[x])),
119
 
             drizzle_result_error(&(result[x])));
120
 
      continue;
121
 
    }
122
 
 
123
 
    while ((row= drizzle_row_next(&(result[x]))) != NULL)
124
 
      printf("%d %s:%s\n", x, row[0], row[1]);
125
 
  }
126
 
 
127
 
  drizzle_free(&drizzle);
128
 
 
129
 
  free(con);
130
 
  free(result);
131
 
  free(ql);
132
 
  return 0;
133
 
}