# HG changeset patch # User Mark Brand # Date 1301497034 -7200 # Node ID b656a3acea15cf46a3ecf01c8eedc393f3cc4432 # Parent eb3e1558bf24381aa14df114d41eb8249b86506a upgrade package freetds to cvs diff --git a/src/freetds-1-fastforward.patch b/src/freetds-1-fastforward.patch --- a/src/freetds-1-fastforward.patch +++ b/src/freetds-1-fastforward.patch @@ -178385,3 +178385,191 @@ void tds_set_version(TDSLOGIN * tds_login, TDS_TINYINT major_ver, TDS_TINYINT minor_ver); void tds_set_capabilities(TDSLOGIN * tds_login, unsigned char *capabilities, int size); int tds_connect_and_login(TDSSOCKET * tds, TDSCONNECTION * connection); + +commit 0fb0f4a2b0734d2dbf56870566c0228ce71f1859 +Author: freddy77 +Date: Wed Mar 30 11:29:34 2011 +0000 + + avoid unnecessary prepare and unprepare + +diff --git a/ChangeLog b/ChangeLog +index 79e2ed8..73910cd 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++Wed Mar 30 13:29:15 CEST 2011 Frediano Ziglio ++ * include/tds.h src/odbc/odbc.c src/tds/query.c: ++ - avoid unnecessary prepare and unprepare ++ + Sun Mar 27 12:34:23 EDT 2011 JK Lowden + * include/sybdb.h include/tds.h + - src/dblib/dblib.c src/tds/config.c src/tds/login.c +@@ -3193,4 +3197,4 @@ Wed Jan 9 19:54:43 EST 2008 JK Lowden + * ChangeLog-0.82 added because of release + + $FreeTDS$ +-$Id: ChangeLog,v 1.3204 2011/03/27 16:36:53 jklowden Exp $ ++$Id: ChangeLog,v 1.3205 2011/03/30 11:29:34 freddy77 Exp $ +diff --git a/include/tds.h b/include/tds.h +index a0ebb12..9486ebc 100644 +--- a/include/tds.h ++++ b/include/tds.h +@@ -21,7 +21,7 @@ + #ifndef _tds_h_ + #define _tds_h_ + +-/* $Id: tds.h,v 1.351 2011/03/27 16:36:53 jklowden Exp $ */ ++/* $Id: tds.h,v 1.352 2011/03/30 11:29:34 freddy77 Exp $ */ + + #include + #include +@@ -1485,6 +1485,7 @@ int tds_submit_execute(TDSSOCKET * tds, TDSDYNAMIC * dyn); + int tds_send_cancel(TDSSOCKET * tds); + const char *tds_next_placeholder(const char *start); + int tds_count_placeholders(const char *query); ++int tds_needs_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn); + int tds_submit_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn); + int tds_submit_rpc(TDSSOCKET * tds, const char *rpc_name, TDSPARAMINFO * params); + int tds_submit_optioncmd(TDSSOCKET * tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size); +diff --git a/src/odbc/odbc.c b/src/odbc/odbc.c +index 0e57775..73a63ff 100644 +--- a/src/odbc/odbc.c ++++ b/src/odbc/odbc.c +@@ -1,6 +1,6 @@ + /* FreeTDS - Library of routines accessing Sybase and Microsoft databases + * Copyright (C) 1998, 1999, 2000, 2001 Brian Bruns +- * Copyright (C) 2002-2010 Frediano Ziglio ++ * Copyright (C) 2002-2011 Frediano Ziglio + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public +@@ -61,7 +61,7 @@ + #include + #endif + +-TDS_RCSID(var, "$Id: odbc.c,v 1.555 2010/12/28 14:37:10 freddy77 Exp $"); ++TDS_RCSID(var, "$Id: odbc.c,v 1.556 2011/03/30 11:29:34 freddy77 Exp $"); + + static SQLRETURN _SQLAllocConnect(SQLHENV henv, SQLHDBC FAR * phdbc); + static SQLRETURN _SQLAllocEnv(SQLHENV FAR * phenv, SQLINTEGER odbc_version); +@@ -500,17 +500,16 @@ odbc_prepare(TDS_STMT *stmt) + stmt->errs.lastrc = SQL_ERROR; + break; + } +- +- if (stmt->dbc->current_statement == stmt) +- stmt->dbc->current_statement = NULL; +- if (stmt->errs.lastrc == SQL_ERROR && !stmt->dyn->emulated) { +- TDSDYNAMIC *dyn = stmt->dyn; +- stmt->dyn = NULL; +- tds_free_dynamic(tds, dyn); +- } +- ODBC_RETURN_(stmt); ++ break; + } + ++ if (stmt->dbc->current_statement == stmt) ++ stmt->dbc->current_statement = NULL; ++ if (stmt->errs.lastrc == SQL_ERROR && !stmt->dyn->emulated) { ++ TDSDYNAMIC *dyn = stmt->dyn; ++ stmt->dyn = NULL; ++ tds_free_dynamic(tds, dyn); ++ } + stmt->need_reprepare = 0; + ODBC_RETURN_(stmt); + } +@@ -7112,7 +7111,7 @@ odbc_free_dynamic(TDS_STMT * stmt) + TDSSOCKET *tds = stmt->dbc->tds_socket; + + if (stmt->dyn) { +- if (stmt->dyn->emulated) { ++ if (!tds_needs_unprepare(tds, stmt->dyn)) { + tds_free_dynamic(tds, stmt->dyn); + stmt->dyn = NULL; + } else if (tds_submit_unprepare(tds, stmt->dyn) == TDS_SUCCEED) { +diff --git a/src/tds/query.c b/src/tds/query.c +index 899bb09..3e1e608 100644 +--- a/src/tds/query.c ++++ b/src/tds/query.c +@@ -46,7 +46,7 @@ + + #include + +-TDS_RCSID(var, "$Id: query.c,v 1.246 2011/01/12 09:21:11 freddy77 Exp $"); ++TDS_RCSID(var, "$Id: query.c,v 1.247 2011/03/30 11:29:34 freddy77 Exp $"); + + static void tds_put_params(TDSSOCKET * tds, TDSPARAMINFO * info, int flags); + static void tds7_put_query_params(TDSSOCKET * tds, const char *query, size_t query_len); +@@ -1900,6 +1900,22 @@ tds_put_params(TDSSOCKET * tds, TDSPARAMINFO * info, int flags) + } + } + ++int ++tds_needs_unprepare(TDSSOCKET * tds, TDSDYNAMIC * dyn) ++{ ++ CHECK_TDS_EXTRA(tds); ++ CHECK_DYNAMIC_EXTRA(dyn); ++ ++ // check if statement is prepared ++ if (IS_TDS7_PLUS(tds) && !dyn->num_id) ++ return 0; ++ ++ if (dyn->emulated) ++ return 0; ++ ++ return 1; ++} ++ + /** + * Send a unprepare request for a prepared query + * \param tds state information for the socket and the TDS protocol + +commit 1bf29e550aea989d29b9500ee4cc9e3e0594160b +Author: freddy77 +Date: Wed Mar 30 12:53:19 2011 +0000 + + future developing version! + +diff --git a/ChangeLog b/ChangeLog +index 73910cd..b5aecf3 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,6 @@ ++Wed Mar 30 14:53:04 CEST 2011 Frediano Ziglio ++ * configure.ac: future developing version! ++ + Wed Mar 30 13:29:15 CEST 2011 Frediano Ziglio + * include/tds.h src/odbc/odbc.c src/tds/query.c: + - avoid unnecessary prepare and unprepare +@@ -3197,4 +3200,4 @@ Wed Jan 9 19:54:43 EST 2008 JK Lowden + * ChangeLog-0.82 added because of release + + $FreeTDS$ +-$Id: ChangeLog,v 1.3205 2011/03/30 11:29:34 freddy77 Exp $ ++$Id: ChangeLog,v 1.3206 2011/03/30 12:53:19 freddy77 Exp $ +diff --git a/configure.ac b/configure.ac +index 3d6b95b..e05146a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1,7 +1,7 @@ + dnl Process this file with autoconf to produce a configure script. + + dnl ------------------------------------------------------------ +-dnl $Id: configure.ac,v 1.60 2010/12/28 14:37:10 freddy77 Exp $ ++dnl $Id: configure.ac,v 1.61 2011/03/30 12:53:19 freddy77 Exp $ + dnl If you're trying to create a new configure test, try + dnl + dnl http://autogen.sourceforge.net/conftest.html +@@ -12,10 +12,10 @@ dnl ------------------------------------------------------------ + # ------------------------------------------------------------ + # Initialization + # ------------------------------------------------------------ +-AC_INIT(FreeTDS, 0.83.dev.esyscmd(printf $(date +"%Y%m%d"))) ++AC_INIT(FreeTDS, 0.92.dev.esyscmd(printf $(date +"%Y%m%d"))) + AC_CONFIG_SRCDIR(src/dblib/dblib.c) + AC_PREREQ(2.53) +-AC_REVISION($Revision: 1.60 $) ++AC_REVISION($Revision: 1.61 $) + + AM_INIT_AUTOMAKE([dist-bzip2]) + AC_CONFIG_HEADERS(include/config.h)