MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / db_sqlite_convert_row

Function db_sqlite_convert_row

modules/db_sqlite/row.c:41–137  ·  view source on GitHub ↗

* Convert a row from result into db API representation */

Source from the content-addressed store, hash-verified

39 * Convert a row from result into db API representation
40 */
41int db_sqlite_convert_row(const db_con_t* _h, db_res_t* _res, db_row_t* _r)
42{
43 int col,len;
44 db_val_t* _v;
45 const char* db_value;
46
47 if ((!_h) || (!_res) || (!_r)) {
48 LM_ERR("invalid parameter value\n");
49 return -1;
50 }
51
52 if (!CON_SQLITE_PS(_h)) {
53 LM_ERR("conn has no prepared statement! sqlite requires one\n");
54 return -1;
55 }
56
57 /* Save the number of columns in the ROW structure */
58 ROW_N(_r) = RES_COL_N(_res);
59
60 for(col=0; col < RES_COL_N(_res); col++) {
61 _v = &(ROW_VALUES(_r)[col]);
62
63 if (sqlite3_column_type(CON_SQLITE_PS(_h), col) == SQLITE_NULL) {
64 VAL_NULL(_v) = 1;
65 VAL_TYPE(_v) = RES_TYPES(_res)[col];
66 continue;
67 }
68
69 switch (RES_TYPES(_res)[col]) {
70 case DB_BITMAP:
71 /* value considered to be int; but stored as bigint;
72 * can be used as VAL_INT() to be called
73 * also can be used as VAL_BIGINT() */
74 VAL_BIGINT(_v) = sqlite3_column_int64(CON_SQLITE_PS(_h), col);
75 VAL_TYPE(_v) = DB_INT;
76
77 break;
78 case DB_INT:
79 VAL_BIGINT(_v) =sqlite3_column_int64(CON_SQLITE_PS(_h), col);
80 VAL_TYPE(_v) = DB_INT;
81
82 break;
83 case DB_BIGINT:
84 VAL_BIGINT(_v) = sqlite3_column_int64(CON_SQLITE_PS(_h), col);
85 VAL_TYPE(_v) = DB_BIGINT;
86
87 break;
88 case DB_DATETIME:
89 db_value = (char *)sqlite3_column_text(CON_SQLITE_PS(_h), col);
90 if (db_str2time(db_value, &VAL_TIME(_v)) < 0) {
91 LM_ERR("error while converting datetime value from string\n");
92 return -1;
93 }
94 VAL_TYPE(_v) = DB_DATETIME;
95 break;
96 case DB_DOUBLE:
97 VAL_DOUBLE(_v) = sqlite3_column_double(CON_SQLITE_PS(_h), col);
98 VAL_TYPE(_v) = DB_DOUBLE;

Callers 2

db_sqlite_convert_rowsFunction · 0.85
db_sqlite_fetch_resultFunction · 0.85

Calls 1

db_str2timeFunction · 0.85

Tested by

no test coverage detected