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: