How should I use libdrizzle?
Hi!
I am making mysql tunnel application.
Apache(PHP)--(mysql protocol)-->My application(
My application receives the request of the Web server and takes a certain step and transfers it to Mysql.
So I think that I should use libdrizzle.
When I compile it, my source code fails.
I make and install drizzle-
My server is "Red Hat Enterprise Linux Server release 6.3 (Santiago)"
Could you give me a advice for this?
<Drizzle Install>
wget https:/
tar zxvf drizzle-
cd drizzle-
./config/autorun.sh
./configure
make
make install
cp -r libdrizzle-2.0 /usr/local/include
<Result>
[root]# make
gcc -c -I/usr/
gcc -o server -L/usr/lib64/mysql server.o -L/root/
server.o: In function `main':
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.o: In function `server(
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
server.
collect2: ld returned 1 exit status
make: *** [server] Error 1
<Makefile>
server : server.o
gcc -o server -L/usr/lib64/mysql server.o -L/root/
server.o : server.cc
gcc -c -I/usr/
<server.cc>
(This is examples of Drizzle)
/*
* Drizzle Client & Protocol Library
*
* Copyright (C) 2008 Eric Day (<email address hidden>)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
*
* * The names of its contributors may not be used to endorse or
* promote products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
//#include "config.h"
#define __STDC_LIMIT_MACROS
#include <stdint.h>
#define __STDC_
#include <inttypes.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <libdrizzle-
#define DRIZZLE_FIELD_MAX 32
#define DRIZZLE_RESULT_ROWS 20
#define DRIZZLE_
{ \
if ((__ret) != DRIZZLE_RETURN_OK) \
DRIZZLE_
}
#define DRIZZLE_
{ \
printf(__function ":%s\n", drizzle_
return; \
}
static void server(drizzle_st *drizzle, drizzle_con_st *con, drizzle_column_st *column);
int main(int argc, char *argv[])
{
int c;
uint32_t count= 0;
const char *host= NULL;
bool mysql= false;
in_port_t port= 0;
drizzle_verbose_t verbose= DRIZZLE_
drizzle_return_t ret;
drizzle_st *drizzle;
drizzle_column_st column;
while((c = getopt(argc, argv, "c:h:mp:v")) != -1)
{
switch(c)
{
case 'c':
count= (uint32_
break;
case 'h':
host= optarg;
break;
case 'm':
mysql= true;
break;
case 'p':
port= (in_port_
break;
case 'v':
switch(
{
case DRIZZLE_
verbose= DRIZZLE_
break;
case DRIZZLE_
verbose= DRIZZLE_
break;
case DRIZZLE_
verbose= DRIZZLE_
break;
case DRIZZLE_
verbose= DRIZZLE_
break;
case DRIZZLE_
verbose= DRIZZLE_
break;
case DRIZZLE_
case DRIZZLE_
break;
}
break;
default:
printf(
printf("\t-c <count> - Number of connections to accept before exiting\n");
printf("\t-h <host> - Host to listen on\n");
printf("\t-m - Use the MySQL protocol\n");
printf("\t-p <port> - Port to listen on\n");
printf("\t-v - Increase verbosity level\n");
return 1;
}
}
if ((drizzle= drizzle_create()) == NULL)
{
fprintf(stderr, "drizzle_
return 1;
}
drizzle_
drizzle_
drizzle_con_st* con_listen;
if ((con_listen= drizzle_
{
fprintf(stderr, "drizzle_
return 1;
}
drizzle_
drizzle_
if (mysql)
{
drizzle_
}
if (drizzle_
{
fprintf(stderr, "drizzle_
return 1;
}
while (1)
{
drizzle_con_st *con= drizzle_
if (ret != DRIZZLE_RETURN_OK)
{
fprintf(
return 1;
}
server(drizzle, con, &column);
drizzle_
if (count > 0)
{
count--;
if (count == 0)
break;
}
}
drizzle_
drizzle_
return 0;
}
static void server(drizzle_st *drizzle, drizzle_con_st *con,
{
drizzle_return_t ret;
drizzle_command_t command;
uint8_t *data= NULL;
size_t total;
char *field[2];
char field1[
char field2[
size_t size[2];
uint64_t x;
field[0]= field1;
field[1]= field2;
/* Handshake packets. */
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
ret= drizzle_
DRIZZLE_
ret= drizzle_
DRIZZLE_
drizzle_result_st *result;
if ((result= drizzle_
{
DRIZZLE_
}
ret= drizzle_
DRIZZLE_
/* Command loop. */
while (1)
{
drizzle_
free(data);
data= (uint8_t *)drizzle_
if (ret == DRIZZLE_
(ret == DRIZZLE_RETURN_OK && command == DRIZZLE_
{
free(data);
return;
}
DRIZZLE_
if ((result= drizzle_
{
DRIZZLE_
}
if (command != DRIZZLE_
{
ret= drizzle_
DRIZZLE_
continue;
}
drizzle_
ret= drizzle_
DRIZZLE_
/* Columns. */
if (drizzle_
{
DRIZZLE_
}
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
drizzle_
ret= drizzle_
DRIZZLE_
drizzle_
drizzle_
ret= drizzle_
DRIZZLE_
drizzle_
drizzle_
ret= drizzle_
DRIZZLE_
/* Rows. */
for (x= 0; x < DRIZZLE_
{
size[0]= (size_t)
if (size[0] >= DRIZZLE_FIELD_MAX)
size[0]= DRIZZLE_FIELD_MAX - 1;
size[1]= (size_t)
if (size[1] >= DRIZZLE_FIELD_MAX)
size[1]= DRIZZLE_FIELD_MAX - 1;
/* This is needed for MySQL and old Drizzle protocol. */
drizzle_
ret= drizzle_
DRIZZLE_
/* Fields. */
ret= drizzle_
DRIZZLE_
ret= drizzle_
DRIZZLE_
}
ret= drizzle_
DRIZZLE_
}
}
Question information
- Language:
- English Edit question
- Status:
- Answered
- For:
- Drizzle Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
Can you help with this problem?
Provide an answer of your own, or ask Akihiro Seki for more information if necessary.