/* Open a connection to the database. */ int _connect_to_db(struct db_context_t *dbc) { dbc->drizzle= drizzle_create(NULL); if (dbc->drizzle == NULL) { printf("drizzle_create failed\n"); return ERROR; } dbc->drizzle_con= drizzle_con_create(dbc->drizzle, NULL); if (dbc->drizzle_con == NULL) { printf("drizzle_con_create failed\n"); return ERROR; } drizzle_con_set_tcp(dbc->drizzle_con, drizzle_host, atoi(drizzle_port)); drizzle_con_set_db(dbc->drizzle_con, drizzle_dbname); drizzle_con_set_options(dbc->drizzle_con, DRIZZLE_CON_MYSQL); /* Disable AUTOCOMMIT mode for connection */ (void)drizzle_query_str(dbc->drizzle_con, dbc->drizzle_result_set, "SET AUTOCOMMIT=0", &drizzle_return); if (drizzle_return != DRIZZLE_RETURN_OK) { printf("drizzle_query AUTOCOMMIT=0: %s\n", drizzle_con_error(dbc->drizzle_con)); return ERROR; } return OK; }
VALUE rb_drizzle_con_set_db(VALUE self, VALUE database) { net_drizzle_con_st *context; Data_Get_Struct(self, net_drizzle_con_st, context); drizzle_con_set_db(context->con, RSTRING_PTR(database)); return self; }
static int _drizzle_ConnectionObject_Initialize( _drizzle_ConnectionObject *self, PyObject *args, PyObject *kwargs) { drizzle_st *drizzle= NULL; drizzle_con_st *con= NULL; drizzle_return_t ret; PyObject *conv = NULL; char *host= NULL, *user= NULL, *passwd= NULL, *db= NULL, *unix_socket= NULL, *init_command= NULL; uint16_t port= 0; int connect_timeout= 0, client_flag= 0; static char *kwlist[]= { "host", "user", "passwd", "db", "port", "conv", "unix_socket", "connect_timeout", "init_command", "client_flag", NULL }; self->open= 0; self->converter= NULL; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ssssHOsisi:connect", kwlist, &host, &user, &passwd, &db, &port, &conv, &unix_socket, &connect_timeout, &init_command, &client_flag)) { return -1; } drizzle = drizzle_create(NULL); con = drizzle_con_create(drizzle, NULL); if (unix_socket != NULL) { drizzle_con_set_uds(con, unix_socket); } else { drizzle_con_set_tcp(con, host, port); } drizzle_con_set_auth(con, user, passwd); drizzle_con_set_db(con, db); drizzle_con_add_options(con, client_flag); ret = drizzle_con_connect(con); if (ret != DRIZZLE_RETURN_OK) { _drizzle_Exception(self); return -1; } if (!conv) { conv= PyDict_New(); } else { Py_INCREF(conv); } if (!conv) { return -1; } self->converter = conv; self->con= con; self->open= 1; return 0; }
int main(int argc, char *argv[]) { const char *query= "SELECT table_schema,table_name FROM tables"; drizzle_st drizzle; drizzle_con_st con[SIMPLE_MULTI_COUNT]; drizzle_result_st result[SIMPLE_MULTI_COUNT]; drizzle_query_st ql[SIMPLE_MULTI_COUNT]; drizzle_return_t ret; drizzle_row_t row; int x; if (drizzle_create(&drizzle) == NULL) { printf("drizzle_create:NULL\n"); return 1; } /* Create SIMPLE_MULTI_COUNT connections and initialize query list. */ for (x= 0; x < SIMPLE_MULTI_COUNT; x++) { if (x == 0) { if (drizzle_con_create(&drizzle, &(con[0])) == NULL) { printf("drizzle_con_create:%s\n", drizzle_error(&drizzle)); return 1; } if (argc == 2 && !strcmp(argv[1], "-m")) drizzle_con_add_options(&(con[0]), DRIZZLE_CON_MYSQL); else if (argc != 1) { printf("usage: %s [-m]\n", argv[0]); return 1; } drizzle_con_set_db(&(con[0]), "information_schema"); } else { if (drizzle_con_clone(&drizzle, &(con[x]), &(con[0])) == NULL) { printf("drizzle_con_clone:%s\n", drizzle_error(&drizzle)); return 1; } } if (drizzle_query_add(&drizzle, &(ql[x]), &(con[x]), &(result[x]), query, strlen(query), 0, NULL) == NULL) { printf("drizzle_query_add:%s\n", drizzle_error(&drizzle)); return 1; } } ret= drizzle_query_run_all(&drizzle); if (ret != DRIZZLE_RETURN_OK) { printf("drizzle_query_run_all:%s\n", drizzle_error(&drizzle)); return 1; } for (x= 0; x < SIMPLE_MULTI_COUNT; x++) { if (drizzle_result_error_code(&(result[x])) != 0) { printf("%d:%s\n", drizzle_result_error_code(&(result[x])), drizzle_result_error(&(result[x]))); continue; } while ((row= drizzle_row_next(&(result[x]))) != NULL) printf("%d %s:%s\n", x, row[0], row[1]); } drizzle_free(&drizzle); return 0; }