Annotation of parser3/src/sql/mysql/parser3mysql.C, revision 1.4
1.1 paf 1: /** @file
2: Parser: MySQL driver.
3:
4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
5:
6: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
7:
1.4 ! paf 8: $Id: parser3mysql.C, v 1.3 2001/04/04 12:13:20 paf Exp $
1.1 paf 9: */
10:
1.4 ! paf 11: #include <stdlib.h>
! 12:
1.1 paf 13: #include "pa_sql_driver.h"
1.4 ! paf 14: #include "mysql.h"
! 15: #include "pa_common.h"
1.1 paf 16:
1.4 ! paf 17: char *lsplit(char *string, char delim) {
! 18: if(string) {
! 19: char *v=strchr(string, delim);
! 20: if(v) {
! 21: *v=0;
! 22: return v+1;
! 23: }
! 24: }
! 25: return 0;
! 26: }
! 27:
! 28: char *lsplit(char **string_ref, char delim) {
! 29: char *result=*string_ref;
! 30: char *next=lsplit(*string_ref, delim);
! 31: *string_ref=next;
! 32: return result;
! 33: }
1.2 paf 34:
35: /// MySQL server driver
1.1 paf 36: class MySQL_Driver : public SQL_Driver {
37: public:
38:
1.4 ! paf 39: MySQL_Driver() : SQL_Driver() {
1.3 paf 40: }
1.1 paf 41:
42: /// get api version
43: int api_version() { return SQL_API_VERSION; }
1.4 ! paf 44: /// connect
! 45: const char *connect(char *url, void **info) {
! 46: char *user=url;
! 47: char *host=lsplit(user, '@');
! 48: char *db=lsplit(host, '/');
! 49: char *pwd=lsplit(user, ':');
! 50: char *error_pos=0;
! 51: char *port_cstr=lsplit(host, ':');
! 52: int port=port_cstr?strtol(port_cstr, &error_pos, 0):0;
! 53:
! 54: MYSQL *mysql=mysql_init(NULL);
! 55: if(!mysql_real_connect(mysql,
! 56: host, user, pwd, db, port?port:MYSQL_PORT, NULL, 0))
! 57: return "mysql connect failed";
! 58:
! 59: *(MYSQL **)info=mysql;
1.3 paf 60: return 0;
1.2 paf 61: }
1.4 ! paf 62: const char *disconnect(void *info) {
! 63: mysql_close((MYSQL *)info);
! 64: return 0;
1.2 paf 65: }
1.4 ! paf 66: const char *commit(void *info) {
1.3 paf 67: return 0;//"mysql commit failed";
1.1 paf 68: }
1.4 ! paf 69: const char *rollback(void *info) {
! 70: return 0;//"mysql rollback failed";
1.1 paf 71: }
1.4 ! paf 72: ;
1.1 paf 73: };
74:
75: extern "C" SQL_Driver *create() {
76: return new MySQL_Driver();
77: }
E-mail: