[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmodbc.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 19-Apr-2016 15:03:34 Branch: rpm-5_4 Handle: 2016041913033400 Modified files: (Branch: rpm-5_4) rpm/rpmio rpmodbc.c Log: - add RPM_GNUC_PURE where suggested. Summary: RevisionChanges Path 1.1.2.20+4 -0 rpm/rpmio/rpmodbc.c patch -p0 <<'@@ .' Index: rpm/rpmio/rpmodbc.c $ cvs diff -u -r1.1.2.19 -r1.1.2.20 rpmodbc.c --- rpm/rpmio/rpmodbc.c 3 Apr 2016 20:37:38 - 1.1.2.19 +++ rpm/rpmio/rpmodbc.c 19 Apr 2016 13:03:34 - 1.1.2.20 @@ -206,6 +206,7 @@ #undef _ENTRY static size_t nSQL_ATTRS = sizeof(SQL_ATTRS) / sizeof(SQL_ATTRS[0]); +RPM_GNUC_PURE static int odbcDumpStmt(ODBC_t odbc, void * _fp) { FILE * fp = (_fp ? _fp : stderr); @@ -461,6 +462,7 @@ #undef _ENTRY static size_t nSQL_INFOS = sizeof(SQL_INFOS) / sizeof(SQL_INFOS[0]); +RPM_GNUC_PURE static int odbcDumpInfo(ODBC_t odbc, void * _fp) { FILE * fp = (_fp ? _fp : stderr); @@ -739,7 +741,9 @@ int odbcEndTran(ODBC_t odbc, int _rollback) { SQLHANDLE * dbc = odbc->dbc->hp; /* XXX env? */ +#if defined(WITH_UNIXODBC) short _completion = (_rollback ? SQL_ROLLBACK : SQL_COMMIT); +#endif int rc = 0; (void)dbc; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmodbc.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 03-Apr-2016 22:37:38 Branch: rpm-5_4 Handle: 2016040320373800 Modified files: (Branch: rpm-5_4) rpm/rpmio rpmodbc.c Log: - typo. Summary: RevisionChanges Path 1.1.2.19+1 -1 rpm/rpmio/rpmodbc.c patch -p0 <<'@@ .' Index: rpm/rpmio/rpmodbc.c $ cvs diff -u -r1.1.2.18 -r1.1.2.19 rpmodbc.c --- rpm/rpmio/rpmodbc.c 11 May 2015 21:10:19 - 1.1.2.18 +++ rpm/rpmio/rpmodbc.c 3 Apr 2016 20:37:38 - 1.1.2.19 @@ -1263,7 +1263,7 @@ urlinfo u = NULL; xx = urlSplit(fn, ); -assert(ut == URL_IS_MYSQL || ut == URL_IS_POSTGRES || URL_IS_SQLSERVER); +assert(ut == URL_IS_MYSQL || ut == URL_IS_POSTGRES || ut == URL_IS_SQLSERVER); odbc->db = rpmExpand(u->scheme, "_", basename((char *)dbpath), NULL); odbc->u = urlLink(u, __FUNCTION__); } @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmodbc.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 25-Mar-2012 18:34:37 Branch: rpm-5_4 Handle: 2012032516343700 Modified files: (Branch: rpm-5_4) rpm/rpmio rpmodbc.c Log: - odbc: fix: always print odbc failures. Summary: RevisionChanges Path 1.1.2.15+1 -1 rpm/rpmio/rpmodbc.c patch -p0 '@@ .' Index: rpm/rpmio/rpmodbc.c $ cvs diff -u -r1.1.2.14 -r1.1.2.15 rpmodbc.c --- rpm/rpmio/rpmodbc.c 25 Mar 2012 00:36:53 - 1.1.2.14 +++ rpm/rpmio/rpmodbc.c 25 Mar 2012 16:34:37 - 1.1.2.15 @@ -105,7 +105,7 @@ /* XXF FIXME: add logic to set printit */ #define CHECK(_o, _t, _m, _rc) \ -Xchkodbc(_o, _t, _m, _rc, _odbc_debug, __FUNCTION__, __FILE__, __LINE__) +Xchkodbc(_o, _t, _m, _rc, 1, __FUNCTION__, __FILE__, __LINE__) #else #define CHECK(_o, _t, _m, _rc) (-1) #endif /* WITH_UNIXODBC */ @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmodbc.c rpmodbc.h
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 21-Mar-2012 19:09:49 Branch: rpm-5_4 Handle: 2012032118094900 Modified files: (Branch: rpm-5_4) rpm/rpmio rpmodbc.c rpmodbc.h Log: - odbc: haul out a load of trashy #ifdef's and peculier data types. Summary: RevisionChanges Path 1.1.2.8 +187 -202 rpm/rpmio/rpmodbc.c 1.1.2.7 +26 -14 rpm/rpmio/rpmodbc.h patch -p0 '@@ .' Index: rpm/rpmio/rpmodbc.c $ cvs diff -u -r1.1.2.7 -r1.1.2.8 rpmodbc.c --- rpm/rpmio/rpmodbc.c 20 Mar 2012 16:12:42 - 1.1.2.7 +++ rpm/rpmio/rpmodbc.c 21 Mar 2012 18:09:49 - 1.1.2.8 @@ -31,9 +31,20 @@ (_rc)); \ } +#if !defined(WITH_UNIXODBC) /* XXX retrofit */ +#define SQL_SUCCEEDED(rc) (((rc)(~1))==0) +#define SQL_NO_DATA 100 +#define SQL_FETCH_NEXT 1 +#define SQL_FETCH_FIRST 2 +#define SQL_FETCH_LAST 3 +#define SQL_FETCH_PRIOR 4 +#define SQL_FETCH_ABSOLUTE 5 +#define SQL_FETCH_RELATIVE 6 +#endif + /*==*/ #if defined(WITH_UNIXODBC) -static int Xchkodbc(/*@unused@*/ ODBC_t odbc, int type, const char * msg, +static int Xchkodbc(/*@unused@*/ ODBC_t odbc, int ht, const char * msg, int error, int printit, const char * func, const char * fn, unsigned ln) { @@ -41,27 +52,29 @@ /* XXX filter SQL_NO_DATA(100) return. */ if (printit !SQL_SUCCEEDED(rc) rc != SQL_NO_DATA) { - SQLINTEGER i = 0; - SQLRETURN ret; - void * hndl; + HNDL_t H; + short ret; + int i; fprintf(stderr, error: %s:%s:%u: %s(%d):\n, func, fn, ln, msg, rc); - switch (type) { - case SQL_HANDLE_ENV:hndl = odbc-env; break; - case SQL_HANDLE_DBC:hndl = odbc-dbc; break; - case SQL_HANDLE_STMT: hndl = odbc-stmt; break; - case SQL_HANDLE_DESC: hndl = odbc-desc; break; - default:hndl = NULL;break; + switch (ht) { + case SQL_HANDLE_ENV:H = odbc-env; break; + case SQL_HANDLE_DBC:H = odbc-dbc; break; + case SQL_HANDLE_STMT: H = odbc-stmt; break; + case SQL_HANDLE_DESC: H = odbc-desc; break; + default:H = NULL; break; } +assert(H); + i = 0; do { - SQLINTEGER native; - SQLCHAR state[7]; - SQLCHAR text[256]; - SQLSMALLINT len; - ret = SQLGetDiagRec(type, hndl, ++i, state, native, text, + int native; + unsigned char state[7]; + unsigned char text[256]; + short len; + ret = SQLGetDiagRec(H-ht, H-hp, ++i, state, native, text, sizeof(text), len); if (SQL_SUCCEEDED(ret)) fprintf(stderr, \t%s:%ld:%ld:%s\n, @@ -75,17 +88,59 @@ /* XXF FIXME: add logic to set printit */ #define CHECK(_o, _t, _m, _rc) \ Xchkodbc(_o, _t, _m, _rc, _odbc_debug, __FUNCTION__, __FILE__, __LINE__) - +#else +#define CHECK(_o, _t, _m, _rc) (-1) #endif /* WITH_UNIXODBC */ +static void * hFree(ODBC_t odbc, HNDL_t H) +{ +int xx; + +if (H) { + if (H-hp) + xx = CHECK(odbc, H-ht, SQLFreeHandle, + SQLFreeHandle(H-ht, H-hp)); + H-ht = 0; + H-hp = NULL; + H = _free(H); +} +return NULL; +}; + +static void * hAlloc(ODBC_t odbc, int ht) +{ +HNDL_t PH; +HNDL_t H = xmalloc(sizeof(*H)); +SQLHANDLE * parent; +int xx; + +H-ht = ht; +H-hp = NULL; + +switch (ht) { +case SQL_HANDLE_ENV: PH = NULL; break; +case SQL_HANDLE_DBC: PH = odbc-env; break; +case SQL_HANDLE_STMT:PH = odbc-dbc; break; +case SQL_HANDLE_DESC:PH = odbc-dbc; break; +default: PH = NULL; break; +} +parent = (PH ? PH-hp : NULL); + +xx = CHECK(odbc, H-ht, SQLAllocHandle, + SQLAllocHandle(H-ht, parent, H-hp)); +assert(H-hp); + +return H; +}; + /*==*/ int odbcConnect(ODBC_t odbc, const char * uri) { const char * db = NULL; +SQLHANDLE *
[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmodbc.c rpmodbc.h todbc.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 18-Mar-2012 16:47:06 Branch: rpm-5_4 Handle: 2012031815470600 Modified files: (Branch: rpm-5_4) rpm/rpmio rpmodbc.c rpmodbc.h todbc.c Log: - odbc: use a uri to carry around connect info. Summary: RevisionChanges Path 1.1.2.4 +41 -13 rpm/rpmio/rpmodbc.c 1.1.2.4 +2 -4 rpm/rpmio/rpmodbc.h 1.1.2.3 +15 -9 rpm/rpmio/todbc.c patch -p0 '@@ .' Index: rpm/rpmio/rpmodbc.c $ cvs diff -u -r1.1.2.3 -r1.1.2.4 rpmodbc.c --- rpm/rpmio/rpmodbc.c 18 Mar 2012 14:02:14 - 1.1.2.3 +++ rpm/rpmio/rpmodbc.c 18 Mar 2012 15:47:06 - 1.1.2.4 @@ -11,6 +11,7 @@ #include rpmiotypes.h #include rpmio.h /* for *Pool methods */ #include rpmlog.h +#include rpmmacro.h #include rpmurl.h #define _RPMODBC_INTERNAL @@ -29,15 +30,30 @@ /*==*/ -int odbcConnect(ODBC_t odbc, - const char * db, const char * u, const char * pw) +int odbcConnect(ODBC_t odbc, const char * uri) { +const char * db = NULL; +urlinfo u = NULL; int rc = -1; -fprintf(stderr, -- %s(%p,%s,%s,%s)\n, __FUNCTION__, odbc, db, u, pw); -odbc-db = xstrdup(db); -odbc-u = xstrdup(u); -odbc-pw = xstrdup(pw); +fprintf(stderr, -- %s(%p,%s)\n, __FUNCTION__, odbc, uri); + +if (uri) { + const char * dbpath = NULL; + int ut = urlPath(uri, dbpath); +assert(ut == URL_IS_MYSQL || ut == URL_IS_POSTGRES); + rc = urlSplit(uri, u); + db = rpmExpand(u-scheme, _, basename((char *)dbpath), NULL); +} else { + u = odbc-u; + db = xstrdup(odbc-db); +} +assert(u); +assert(db); + +fprintf(stderr, \tdb: %s\n, db); +fprintf(stderr, \t u: %s\n, u-user); +fprintf(stderr, \tpw: %s\n, u-password); #if defined(WITH_UNIXODBC) assert(odbc-env); @@ -46,13 +62,15 @@ assert(odbc-dbc); } +/* XXX FIXME: odbc-u-user and odbc-u-password */ rc = SQLConnect(odbc-dbc, (SQLCHAR *) db, SQL_NTS, - (SQLCHAR *) u, SQL_NTS, - (SQLCHAR *) pw, SQL_NTS); + (SQLCHAR *) u-user, SQL_NTS, + (SQLCHAR *) u-password, SQL_NTS); #endif SPEW(0, rc, odbc); +db = _free(db); return rc; } @@ -293,10 +311,8 @@ } #endif -odbc-pw = _free(odbc-pw); -odbc-u = _free(odbc-u); odbc-db = _free(odbc-db); - +odbc-u = urlFree(odbc-u, __FUNCTION__); odbc-fn = _free(odbc-fn); } @@ -319,14 +335,26 @@ return odbc; } +static char * _odbc_uri = mysql://luser:jasnl@localhost/test; + ODBC_t odbcNew(const char * fn, int flags) { ODBC_t odbc = odbcGetPool(_odbcPool); -if (fn) - odbc-fn = xstrdup(fn); +if (fn == NULL) + fn = _odbc_uri; +odbc-fn = xstrdup(fn); odbc-flags = flags; +{const char * dbpath = NULL; + int ut = urlPath(fn, dbpath); + urlinfo u = NULL; + int xx = urlSplit(fn, u); +assert(ut == URL_IS_MYSQL || ut == URL_IS_POSTGRES); + odbc-db = rpmExpand(u-scheme, _, basename((char *)dbpath), NULL); + odbc-u = urlLink(u, __FUNCTION__); +} + #if defined(WITH_UNIXODBC) SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, odbc-env); assert(odbc-env); @@ . patch -p0 '@@ .' Index: rpm/rpmio/rpmodbc.h $ cvs diff -u -r1.1.2.3 -r1.1.2.4 rpmodbc.h --- rpm/rpmio/rpmodbc.h 18 Mar 2012 14:02:14 - 1.1.2.3 +++ rpm/rpmio/rpmodbc.h 18 Mar 2012 15:47:06 - 1.1.2.4 @@ -22,9 +22,8 @@ const char * fn; int flags; +void * u; const char * db; -const char * u; -const char * pw; void * env; void * dbc; @@ -92,8 +91,7 @@ /*@globals fileSystem, internalState @*/ /*@modifies fileSystem, internalState @*/; -int odbcConnect(ODBC_t odbc, - const char * db, const char * u, const char * pw) +int odbcConnect(ODBC_t odbc, /*@null@*/ const char * uri) /*@*/; int odbcDisconnect(ODBC_t odbc) @@ . patch -p0 '@@ .' Index: rpm/rpmio/todbc.c $ cvs diff -u -r1.1.2.2 -r1.1.2.3 todbc.c ---
[CVS] RPM: rpm-5_4: rpm/rpmio/ rpmodbc.c
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 19-Mar-2012 05:50:00 Branch: rpm-5_4 Handle: 201203190450 Modified files: (Branch: rpm-5_4) rpm/rpmio rpmodbc.c Log: - odbc: rescuscitate builds that do not have --with-unixodbc. Summary: RevisionChanges Path 1.1.2.6 +2 -0 rpm/rpmio/rpmodbc.c patch -p0 '@@ .' Index: rpm/rpmio/rpmodbc.c $ cvs diff -u -r1.1.2.5 -r1.1.2.6 rpmodbc.c --- rpm/rpmio/rpmodbc.c 18 Mar 2012 19:26:14 - 1.1.2.5 +++ rpm/rpmio/rpmodbc.c 19 Mar 2012 04:50:00 - 1.1.2.6 @@ -32,6 +32,7 @@ } /*==*/ +#if defined(WITH_UNIXODBC) static int Xchkodbc(/*@unused@*/ ODBC_t odbc, const char * msg, int error, int printit, const char * func, const char * fn, unsigned ln) @@ -49,6 +50,7 @@ } #define CHECK(_odbc, _msg, _error) \ Xchkodbc(_odbc, _msg, _error, _odbc_debug, __FUNCTION__, __FILE__, __LINE__) +#endif /* WITH_UNIXODBC */ /*==*/ @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org