ext/pdo_firebird/firebird_statement.c:

diff -u -r1.18.2.1.2.5 firebird_statement.c

--- firebird_statement.c 27 Feb 2007 03:04:40 -0000 1.18.2.1.2.5

+++ firebird_statement.c 18 Oct 2007 19:52:35 -0000

@@ -170,43 +170,11 @@

col->maxlen = var->sqllen;

col->namelen = var->aliasname_length;

col->name = estrndup(var->aliasname,var->aliasname_length);

-

- return 1;

-}

-/* }}} */

+ col->param_type = PDO_PARAM_STR;


-#if abies_0

-/* internal function to override return types of parameters */

-static void set_param_type(enum pdo_param_type *param_type, XSQLVAR const 
*var) /* {{{ */

-{

- /* set the param type after the field type */

- switch (var->sqltype & ~1) {

- case SQL_INT64:

-#if SIZEOF_LONG < 8

- if (0) /* always a string if its size exceeds native long */

-#endif

- case SQL_SHORT:

- case SQL_LONG:

- if (var->sqlscale == 0) {

- *param_type = PDO_PARAM_INT;

- break;

- }

- case SQL_TEXT:

- case SQL_VARYING:

- case SQL_TYPE_DATE:

- case SQL_TYPE_TIME:

- case SQL_TIMESTAMP:

- case SQL_BLOB:

- *param_type = PDO_PARAM_STR;

- break;

- case SQL_FLOAT:

- case SQL_DOUBLE:

- *param_type = PDO_PARAM_DBL;

- break;

- }

+ return 1;

}

/* }}} */

-#endif


#define FETCH_BUF(buf,type,len,lenvar) ((buf) = (buf) ? (buf) : \

emalloc((len) ? (len * sizeof(type)) : ((*(unsigned long*)lenvar) = 
sizeof(type))))

@@ -302,15 +270,24 @@

*ptr = NULL;

*len = 0;

} else {

- /* override the column param type */

- /* set_param_type(&stmt->columns[colno].param_type,var); */

- stmt->columns[colno].param_type = PDO_PARAM_STR;

-

if (var->sqlscale < 0) {

- static ISC_INT64 const scales[] = { 1, 10, 100, 1000, 10000, 100000, 
1000000,

- 100000000, 1000000000, 1000000000, 
LL_LIT(10000000000),LL_LIT(100000000000),

- LL_LIT(10000000000000), LL_LIT(100000000000000),LL_LIT(1000000000000000),

- LL_LIT(1000000000000000),LL_LIT(1000000000000000000) };

+ static ISC_INT64 const scales[] = { 1, 10, 100, 1000,

+ 10000,

+ 100000,

+ 1000000,

+ 10000000,

+ 100000000,

+ 1000000000,

+ LL_LIT(10000000000),

+ LL_LIT(100000000000),

+ LL_LIT(1000000000000),

+ LL_LIT(10000000000000),

+ LL_LIT(100000000000000),

+ LL_LIT(1000000000000000),

+ LL_LIT(10000000000000000),

+ LL_LIT(100000000000000000),

+ LL_LIT(1000000000000000000)

+ };

ISC_INT64 n, f = scales[-var->sqlscale];


switch (var->sqltype & ~1) {

@@ -340,11 +317,6 @@

struct tm t;

char *fmt;


-/**

-* For the time being, this code has been changed to convert every returned 
value to a string

-* before passing it back up to the PDO driver.

-*/

-

case SQL_VARYING:

*ptr = &var->sqldata[2];

*len = *(short*)var->sqldata;

@@ -353,7 +325,6 @@

*ptr = var->sqldata;

*len = var->sqllen;

break;

-/* --- cut here --- */

case SQL_SHORT:

*ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);

*len = slprintf(*ptr, CHAR_BUF_LEN, "%d", *(short*)var->sqldata);

@@ -374,51 +345,18 @@

*ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);

*len = slprintf(*ptr, CHAR_BUF_LEN, "%F" , *(double*)var->sqldata);

break;

-/* --- cut here --- */

-#if abies_0

- case SQL_SHORT:

- *ptr = FETCH_BUF(S->fetch_buf[colno], long, 0, *len);

- *(long*)*ptr = *(short*)var->sqldata;

- break;

- case SQL_LONG:

-#if SIZEOF_LONG == 8

- *ptr = FETCH_BUF(S->fetch_buf[colno], long, 0, *len);

- *(long*)*ptr = *(ISC_LONG*)var->sqldata;

-#else

- *ptr = var->sqldata;

-#endif

- break;

- case SQL_INT64:

- *len = sizeof(long);

-#if SIZEOF_LONG == 8

- *ptr = var->sqldata;

-#else

- *ptr = FETCH_BUF(S->fetch_buf[colno], char, CHAR_BUF_LEN, NULL);

- *len = slprintf(*ptr, CHAR_BUF_LEN, "%" LL_MASK "d", 
*(ISC_INT64*)var->sqldata);

-#endif

- break;

- case SQL_FLOAT:

- *ptr = FETCH_BUF(S->fetch_buf[colno], double, 0, *len);

- *(double*)*ptr = *(float*)var->sqldata;

- break;

- case SQL_DOUBLE:

- *ptr = var->sqldata;

- *len = sizeof(double);

- break;

-#endif

case SQL_TYPE_DATE:

isc_decode_sql_date((ISC_DATE*)var->sqldata, &t);

- fmt = INI_STR("ibase.dateformat");

+ fmt = S->H->date_format ? S->H->date_format : PDO_FB_DEF_DATE_FMT;

if (0) {

case SQL_TYPE_TIME:

isc_decode_sql_time((ISC_TIME*)var->sqldata, &t);

- fmt = INI_STR("ibase.timeformat");

+ fmt = S->H->time_format ? S->H->time_format : PDO_FB_DEF_TIME_FMT;

} else if (0) {

case SQL_TIMESTAMP:

isc_decode_timestamp((ISC_TIMESTAMP*)var->sqldata, &t);

- fmt = INI_STR("ibase.timestampformat");

+ fmt = S->H->timestamp_format ? S->H->timestamp_format : 
PDO_FB_DEF_TIMESTAMP_FMT;

}

-

/* convert the timestamp into a string */

*ptr = FETCH_BUF(S->fetch_buf[colno], char, *len = 80, NULL);

*len = strftime(*ptr, *len, fmt, &t);

@@ -618,13 +556,6 @@

ZVAL_LONG(param->parameter, *(long*)value);

break;

}

-#if abies_0

- case PDO_PARAM_DBL:

- if (value) {

- ZVAL_DOUBLE(param->parameter, *(double*)value);

- break;

- }

-#endif

default:

ZVAL_NULL(param->parameter);

}

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to