dbd/mysql/statement.c

changeset 36
942bfe1843bc
parent 33
6c64c45e7d8f
child 45
7c968f66bccd
equal deleted inserted replaced
35:72946c7c68da 36:942bfe1843bc
31 unsigned int mysql_type = field->type; 31 unsigned int mysql_type = field->type;
32 size_t size = 0; 32 size_t size = 0;
33 33
34 switch (mysql_type) { 34 switch (mysql_type) {
35 case MYSQL_TYPE_TINY: 35 case MYSQL_TYPE_TINY:
36 size = 4; 36 size = 1;
37 break; 37 break;
38 case MYSQL_TYPE_YEAR: 38 case MYSQL_TYPE_YEAR:
39 case MYSQL_TYPE_SHORT: 39 case MYSQL_TYPE_SHORT:
40 size = 4; 40 size = 2;
41 break; 41 break;
42 case MYSQL_TYPE_INT24: 42 case MYSQL_TYPE_INT24:
43 size = 4; 43 size = 4;
44 break; 44 break;
45 case MYSQL_TYPE_LONG: 45 case MYSQL_TYPE_LONG:
148 148
149 char *error_message = NULL; 149 char *error_message = NULL;
150 char *errstr = NULL; 150 char *errstr = NULL;
151 151
152 int p; 152 int p;
153
154 if (statement->metadata) {
155 /*
156 * free existing metadata from any previous executions
157 */
158 mysql_free_result(statement->metadata);
159 statement->metadata = NULL;
160 }
153 161
154 if (!statement->stmt) { 162 if (!statement->stmt) {
155 lua_pushboolean(L, 0); 163 lua_pushboolean(L, 0);
156 lua_pushstring(L, DBI_ERR_EXECUTE_INVALID); 164 lua_pushstring(L, DBI_ERR_EXECUTE_INVALID);
157 return 2; 165 return 2;
331 LUA_PUSH_ATTRIB_NIL(name); 339 LUA_PUSH_ATTRIB_NIL(name);
332 } else { 340 } else {
333 LUA_PUSH_ARRAY_NIL(d); 341 LUA_PUSH_ARRAY_NIL(d);
334 } 342 }
335 } else if (lua_push == LUA_PUSH_INTEGER) { 343 } else if (lua_push == LUA_PUSH_INTEGER) {
336 if (named_columns) { 344 if (fields[i].type == MYSQL_TYPE_YEAR || fields[i].type == MYSQL_TYPE_SHORT) {
337 LUA_PUSH_ATTRIB_INT(name, *(int *)(bind[i].buffer)); 345 if (named_columns) {
346 LUA_PUSH_ATTRIB_INT(name, *(short *)(bind[i].buffer));
347 } else {
348 LUA_PUSH_ARRAY_INT(d, *(short *)(bind[i].buffer));
349 }
350 } else if (fields[i].type == MYSQL_TYPE_TINY) {
351 if (named_columns) {
352 LUA_PUSH_ATTRIB_INT(name, (int)*(char *)(bind[i].buffer));
353 } else {
354 LUA_PUSH_ARRAY_INT(d, (int)*(char *)(bind[i].buffer));
355 }
338 } else { 356 } else {
339 LUA_PUSH_ARRAY_INT(d, *(int *)(bind[i].buffer)); 357 if (named_columns) {
358 LUA_PUSH_ATTRIB_INT(name, *(int *)(bind[i].buffer));
359 } else {
360 LUA_PUSH_ARRAY_INT(d, *(int *)(bind[i].buffer));
361 }
340 } 362 }
341 } else if (lua_push == LUA_PUSH_NUMBER) { 363 } else if (lua_push == LUA_PUSH_NUMBER) {
342 if (named_columns) { 364 if (named_columns) {
343 LUA_PUSH_ATTRIB_FLOAT(name, *(double *)(bind[i].buffer)); 365 LUA_PUSH_ATTRIB_FLOAT(name, *(double *)(bind[i].buffer));
344 } else { 366 } else {

mercurial