functions. (Kalle)
. y2k_compliance ini option. (Kalle)
+- Removed support for linking against MySQL client libraries older 4.1 from
+ PDO_mysql. (Johannes)
+
- Implemented FR #51295 (SQLite3::busyTimeout not existing). (Mark)
- Implemented FR #48632 (OpenSSL AES support). (yonas dot y
at gmail dot com, Pierre)
AC_MSG_ERROR([Unable to find your mysql installation])
fi
- PHP_CHECK_LIBRARY($PDO_MYSQL_LIBNAME, mysql_query,
+ PHP_CHECK_LIBRARY($PDO_MYSQL_LIBNAME, mysql_commit,
[
PHP_EVAL_INCLINE($PDO_MYSQL_INCLUDE)
PHP_EVAL_LIBLINE($PDO_MYSQL_LIBS, PDO_MYSQL_SHARED_LIBADD)
],[
if test "$PHP_ZLIB_DIR" != "no"; then
PHP_ADD_LIBRARY_WITH_PATH(z, $PHP_ZLIB_DIR, PDO_MYSQL_SHARED_LIBADD)
- PHP_CHECK_LIBRARY($PDO_MYSQL_LIBNAME, mysql_query, [], [
- AC_MSG_ERROR([PDO_MYSQL configure failed. Please check config.log for more information.])
+ PHP_CHECK_LIBRARY($PDO_MYSQL_LIBNAME, mysql_commit, [], [
+ AC_MSG_ERROR([PDO_MYSQL configure failed, MySQL 4.1 needed. Please check config.log for more information.])
], [
-L$PHP_ZLIB_DIR/$PHP_LIBDIR -L$PDO_MYSQL_LIB_DIR
])
],[
$PDO_MYSQL_LIBS
])
-
- _SAVE_LIBS=$LIBS
- LIBS="$LIBS $PDO_MYSQL_LIBS"
- AC_CHECK_FUNCS([mysql_commit mysql_stmt_prepare mysql_next_result mysql_sqlstate])
- LIBS=$_SAVE_LIBS
fi
ifdef([PHP_CHECK_PDO_INCLUDES],
# define pdo_mysql_init(persistent) mysql_init(NULL)
#endif
-#if !HAVE_MYSQL_SQLSTATE && !PDO_USE_MYSQLND
-static const char *pdo_mysql_get_sqlstate(unsigned int my_errno) { /* {{{ */
- switch (my_errno) {
- /* import auto-generated case: code */
-#include "php_pdo_mysql_sqlstate.h"
- default: return "HY000";
- }
-}
-/* }}} */
-#endif
-
/* {{{ _pdo_mysql_error */
int _pdo_mysql_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, const char *file, int line TSRMLS_DC) /* {{{ */
{
einfo = &H->einfo;
}
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
if (S && S->stmt) {
einfo->errcode = mysql_stmt_errno(S->stmt);
- }
- else
-#endif
- {
+ } else {
einfo->errcode = mysql_errno(H->server);
}
PDO_DBG_RETURN(0);
}
-#if HAVE_MYSQL_SQLSTATE || PDO_USE_MYSQLND
-# if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
if (S && S->stmt) {
strcpy(*pdo_err, mysql_stmt_sqlstate(S->stmt));
- } else
-# endif
- {
+ } else {
strcpy(*pdo_err, mysql_sqlstate(H->server));
}
-#else
- strcpy(*pdo_err, pdo_mysql_get_sqlstate(einfo->errcode));
-#endif
if (!dbh->methods) {
PDO_DBG_INF("Throwing exception");
{
pdo_mysql_db_handle *H = (pdo_mysql_db_handle *)dbh->driver_data;
pdo_mysql_stmt *S = ecalloc(1, sizeof(pdo_mysql_stmt));
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
char *nsql = NULL;
int nsql_len = 0;
int ret;
int server_version;
-#endif
PDO_DBG_ENTER("mysql_handle_preparer");
PDO_DBG_INF_FMT("dbh=%p", dbh);
goto end;
}
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
server_version = mysql_get_server_version(H->server);
if (server_version < 40100) {
goto fallback;
PDO_DBG_RETURN(1);
fallback:
-#endif
end:
stmt->supports_placeholders = PDO_PLACEHOLDER_NONE;
PDO_DBG_RETURN(H->einfo.errcode ? -1 : 0);
} else {
-#if HAVE_MYSQL_NEXT_RESULT || PDO_USE_MYSQLND
/* MULTI_QUERY support - eat up all unfetched result sets */
MYSQL_RES* result;
while (mysql_more_results(H->server)) {
mysql_free_result(result);
}
}
-#endif
PDO_DBG_RETURN((int)c);
}
}
pefree(S->einfo.errmsg, stmt->dbh->is_persistent);
S->einfo.errmsg = NULL;
}
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
if (S->stmt) {
pdo_mysql_stmt_close(S->stmt);
S->stmt = NULL;
}
-#endif /* HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND */
#ifndef PDO_USE_MYSQLND
if (S->params) {
efree(S->in_length);
}
-#endif /* PDO_USE_MYSQLND */
-
-#ifdef HAVE_MYSQL_STMT_PREPARE
if (S->bound_result)
{
int i;
efree(S->out_null);
efree(S->out_length);
}
-#endif /* HAVE_MYSQL_STMT_PREPARE */
+#endif
-#if HAVE_MYSQL_NEXT_RESULT || PDO_USE_MYSQLND
if (S->H->server) {
while (mysql_more_results(S->H->server)) {
MYSQL_RES *res;
mysql_free_result(res);
}
}
- }
-#endif /* HAVE_MYSQL_NEXT_RESULT || PDO_USE_MYSQLND */
+ }
+
#if PDO_USE_MYSQLND
if (!S->stmt && S->current_data) {
mnd_free(S->current_data);
}
/* }}} */
-#ifdef HAVE_MYSQL_STMT_PREPARE
+#ifndef PDO_USE_MYSQLND
static int pdo_mysql_stmt_execute_prepared_libmysql(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
{
pdo_mysql_stmt *S = stmt->driver_data;
PDO_DBG_ENTER("pdo_mysql_stmt_execute");
PDO_DBG_INF_FMT("stmt=%p", S->stmt);
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
if (S->stmt) {
PDO_DBG_RETURN(pdo_mysql_stmt_execute_prepared(stmt));
}
-#endif
/* ensure that we free any previous unfetched results */
if (S->result) {
static int pdo_mysql_stmt_next_rowset(pdo_stmt_t *stmt TSRMLS_DC) /* {{{ */
{
-#if HAVE_MYSQL_NEXT_RESULT || PDO_USE_MYSQLND
pdo_mysql_stmt *S = (pdo_mysql_stmt*)stmt->driver_data;
pdo_mysql_db_handle *H = S->H;
long row_count;
#endif
/* ensure that we free any previous unfetched results */
-#if HAVE_MYSQL_STMT_PREPARE
+#ifndef PDO_USE_MYSQLND
if (S->stmt) {
stmt->column_count = (int)mysql_num_fields(S->result);
mysql_stmt_free_result(S->stmt);
S->fields = mysql_fetch_fields(S->result);
PDO_DBG_RETURN(1);
}
-#else
- strcpy(stmt->error_code, "HYC00");
- PDO_DBG_RETURN(0);
-#endif /* HAVE_MYSQL_STMT_PREPARE */
}
/* }}} */
#ifndef PDO_USE_MYSQLND
PDO_MYSQL_PARAM_BIND *b;
#endif
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
pdo_mysql_stmt *S = (pdo_mysql_stmt*)stmt->driver_data;
PDO_DBG_ENTER("pdo_mysql_stmt_param_hook");
break;
}
}
-#endif /* HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND */
+
PDO_DBG_RETURN(1);
}
/* }}} */
PDO_DBG_RETURN(1);
}
#else
-# if HAVE_MYSQL_STMT_PREPARE
int ret;
if (S->stmt) {
PDO_DBG_RETURN(1);
}
-# endif /* HAVE_MYSQL_STMT_PREPARE */
#endif /* PDO_USE_MYSQLND */
if (!S->result) {
}
/* With mysqlnd data is stored inside mysqlnd, not S->current_data */
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
if (!S->stmt) {
-#endif
if (S->current_data == NULL || !S->result) {
PDO_DBG_RETURN(0);
}
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
}
-#endif
+
if (colno >= stmt->column_count) {
/* error invalid column */
PDO_DBG_RETURN(0);
*len = sizeof(zval);
PDO_DBG_RETURN(1);
}
-#elif HAVE_MYSQL_STMT_PREPARE
+#else
if (S->stmt) {
if (S->out_null[colno]) {
*ptr = NULL;
*len = S->out_length[colno];
PDO_DBG_RETURN(1);
}
-#endif /* PDO_USE_MYSQLND else HAVE_MYSQL_STMT_PREPARE */
+#endif
*ptr = S->current_data[colno];
*len = S->current_lengths[colno];
PDO_DBG_RETURN(1);
mysql_free_result(S->result);
S->result = NULL;
}
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
if (S->stmt) {
int retval;
retval = mysql_stmt_free_result(S->stmt);
PDO_DBG_RETURN(retval ? 0 : 1);
}
-#endif
-#if HAVE_MYSQL_NEXT_RESULT || PDO_USE_MYSQLND
while (mysql_more_results(S->H->server)) {
MYSQL_RES *res;
if (mysql_next_result(S->H->server) != 0) {
mysql_free_result(res);
}
}
-#endif
PDO_DBG_RETURN(1);
}
/* }}} */
long *current_lengths;
#endif
pdo_mysql_error_info einfo;
-#if HAVE_MYSQL_STMT_PREPARE || PDO_USE_MYSQLND
#if PDO_USE_MYSQLND
MYSQLND_STMT *stmt;
#else
unsigned long *out_length;
unsigned int params_given;
unsigned max_length:1;
-#endif
} pdo_mysql_stmt;
extern pdo_driver_t pdo_mysql_driver;