Quellcode durchsuchen

- move db_mysql and db_unixodbc str2val implementation to the DB core,
remove the duplicated implementation in the modules
(preparation for query copy problem)
- introduced a small regression for the unixodbc in the NULL value handling
that needs to be fixed


git-svn-id: https://openser.svn.sourceforge.net/svnroot/openser/trunk@5322 689a6050-402a-0410-94f2-e92a70836424

Henning Westerholt vor 17 Jahren
Ursprung
Commit
f828dad0ca
3 geänderte Dateien mit 2 neuen und 129 gelöschten Zeilen
  1. 2 2
      modules/db_mysql/km_row.c
  2. 0 114
      modules/db_mysql/km_val.c
  3. 0 13
      modules/db_mysql/km_val.h

+ 2 - 2
modules/db_mysql/km_row.c

@@ -32,7 +32,7 @@
 #include "../../dprint.h"
 #include "../../mem/mem.h"
 #include "../../db/db_row.h"
-#include "../../db/db_ut.h"
+#include "../../db/db_val.h"
 #include "my_con.h"
 #include "val.h"
 #include "row.h"
@@ -70,7 +70,7 @@ int db_mysql_convert_row(const db_con_t* _h, db_res_t* _res, db_row_t* _r)
 	lengths = mysql_fetch_lengths(CON_RESULT(_h));
 
 	for(i = 0; i < RES_COL_N(_res); i++) {
-		if (db_mysql_str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]),
+		if (db_str2val(RES_TYPES(_res)[i], &(ROW_VALUES(_r)[i]),
 			    ((MYSQL_ROW)CON_ROW(_h))[i], lengths[i]) < 0) {
 			LM_ERR("failed to convert value\n");
 			LM_DBG("free row at %p\n", _r);

+ 0 - 114
modules/db_mysql/km_val.c

@@ -36,120 +36,6 @@
 #include <stdio.h>
 
 
-/*!
- * \brief Convert a str to a db value, does not copy strings
- *
- * Convert a str to a db value, does not copy strings.
- * \param _t destination value type
- * \param _v destination value
- * \param _s source string
- * \param _l string length
- * \return 0 on success, negative on error
- */
-int db_mysql_str2val(const db_type_t _t, db_val_t* _v, const char* _s, const int _l)
-{
-	static str dummy_string = {"", 0};
-	
-	if (!_v) {
-		LM_ERR("invalid parameter value\n");
-		return -1;
-	}
-	/* A NULL string is a NULL value in mysql, otherwise its an empty value */
-	if (!_s) {
-		memset(_v, 0, sizeof(db_val_t));
-			/* Initialize the string pointers to a dummy empty
-			 * string so that we do not crash when the NULL flag
-			 * is set but the module does not check it properly
-			 */
-		VAL_STRING(_v) = dummy_string.s;
-		VAL_STR(_v) = dummy_string;
-		VAL_BLOB(_v) = dummy_string;
-		VAL_TYPE(_v) = _t;
-		VAL_NULL(_v) = 1;
-		return 0;
-	}
-	VAL_NULL(_v) = 0;
-
-	switch(_t) {
-	case DB_INT:
-		LM_DBG("converting INT [%s]\n", _s);
-		if (db_str2int(_s, &VAL_INT(_v)) < 0) {
-			LM_ERR("error while converting integer value from string\n");
-			return -2;
-		} else {
-			VAL_TYPE(_v) = DB_INT;
-			return 0;
-		}
-		break;
-
-	case DB_BIGINT:
-		LM_DBG("converting BIGINT [%s]\n", _s);
-		if (db_str2longlong(_s, &VAL_BIGINT(_v)) < 0) {
-			LM_ERR("error while converting big integer value from string\n");
-			return -3;
-		} else {
-			VAL_TYPE(_v) = DB_BIGINT;
-			return 0;
-		}
-		break;
-
-	case DB_BITMAP:
-		LM_DBG("converting BITMAP [%s]\n", _s);
-		if (db_str2int(_s, &VAL_INT(_v)) < 0) {
-			LM_ERR("error while converting bitmap value from string\n");
-			return -4;
-		} else {
-			VAL_TYPE(_v) = DB_BITMAP;
-			return 0;
-		}
-		break;
-	
-	case DB_DOUBLE:
-		LM_DBG("converting DOUBLE [%s]\n", _s);
-		if (db_str2double(_s, &VAL_DOUBLE(_v)) < 0) {
-			LM_ERR("error while converting double value from string\n");
-			return -5;
-		} else {
-			VAL_TYPE(_v) = DB_DOUBLE;
-			return 0;
-		}
-		break;
-
-	case DB_STRING:
-		LM_DBG("converting STRING [%s]\n", _s);
-		VAL_STRING(_v) = _s;
-		VAL_TYPE(_v) = DB_STRING;
-		return 0;
-
-	case DB_STR:
-		LM_DBG("converting STR [%.*s]\n", _l, _s);
-		VAL_STR(_v).s = (char*)_s;
-		VAL_STR(_v).len = _l;
-		VAL_TYPE(_v) = DB_STR;
-		return 0;
-
-	case DB_DATETIME:
-		LM_DBG("converting DATETIME [%s]\n", _s);
-		if (db_str2time(_s, &VAL_TIME(_v)) < 0) {
-			LM_ERR("error while converting datetime value from string\n");
-			return -6;
-		} else {
-			VAL_TYPE(_v) = DB_DATETIME;
-			return 0;
-		}
-		break;
-
-	case DB_BLOB:
-		LM_DBG("converting BLOB [%.*s]\n", _l, _s);
-		VAL_BLOB(_v).s = (char*)_s;
-		VAL_BLOB(_v).len = _l;
-		VAL_TYPE(_v) = DB_BLOB;
-		return 0;
-	}
-	return -7;
-}
-
-
 /*!
  * \brief Converting a value to a string
  *

+ 0 - 13
modules/db_mysql/km_val.h

@@ -37,19 +37,6 @@
 #include "../../db/db.h"
 
 
-/*!
- * \brief Convert a str to a db value, does not copy strings
- *
- * Convert a str to a db value, does not copy strings.
- * \param _t destination value type
- * \param _v destination value
- * \param _s source string
- * \param _l string length
- * \return 0 on success, negative on error
- */
-int db_mysql_str2val(const db_type_t _t, db_val_t* _v, const char* _s, const int _l);
-
-
 /*!
  * \brief Converting a value to a string
  *