MCPcopy Create free account
hub / github.com/bloomberg/comdb2 / sqlite_to_lua

Function sqlite_to_lua

lua/sp.c:6957–7005  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6955}
6956
6957static int sqlite_to_lua(Lua L, const char *tz, int argc, sqlite3_value **argv)
6958{
6959 blob_t b;
6960 datetime_t d;
6961 const dttz_t *dt;
6962 const intv_t *tv;
6963
6964 for (int i = 0; i < argc; ++i) {
6965 switch (sqlite3_value_type(argv[i])) {
6966 case SQLITE_INTEGER:
6967 luabb_pushinteger(L, sqlite3_value_int64(argv[i]));
6968 break;
6969 case SQLITE_FLOAT:
6970 luabb_pushreal(L, sqlite3_value_double(argv[i]));
6971 break;
6972 case SQLITE_BLOB:
6973 b.data = (void *)sqlite3_value_blob(argv[i]);
6974 b.length = sqlite3_value_bytes(argv[i]);
6975 luabb_pushblob(L, &b);
6976 break;
6977 case SQLITE_NULL: lua_pushnil(L); break;
6978 case SQLITE_TEXT:
6979 luabb_pushcstring(L, (char *)sqlite3_value_text(argv[i]));
6980 break;
6981 case SQLITE_DATETIME:
6982 case SQLITE_DATETIMEUS:
6983 dt = sqlite3_value_datetime(argv[i]);
6984 dttz_to_datetime_t(dt, tz, &d);
6985 luabb_pushdatetime(L, &d);
6986 break;
6987 case SQLITE_INTERVAL_YM:
6988 tv = sqlite3_value_interval(argv[i], SQLITE_INTERVAL_YM);
6989 luabb_pushintervalym(L, tv);
6990 break;
6991 case SQLITE_INTERVAL_DS:
6992 case SQLITE_INTERVAL_DSUS:
6993 tv = sqlite3_value_interval(argv[i], SQLITE_INTERVAL_DS);
6994 luabb_pushintervalds(L, tv);
6995 break;
6996 case SQLITE_DECIMAL:
6997 tv = sqlite3_value_interval(argv[i], SQLITE_DECIMAL);
6998 luabb_pushdecimal(L, &tv->u.dec);
6999 break;
7000 default: return -1;
7001 }
7002 }
7003
7004 return 0;
7005}
7006
7007static int emit_sqlite_result(struct sqlclntstate *clnt, sqlite3_context *context)
7008{

Callers 2

lua_step_intFunction · 0.85
lua_func_intFunction · 0.85

Calls 15

sqlite3_value_typeFunction · 0.85
luabb_pushintegerFunction · 0.85
sqlite3_value_int64Function · 0.85
luabb_pushrealFunction · 0.85
sqlite3_value_doubleFunction · 0.85
sqlite3_value_blobFunction · 0.85
sqlite3_value_bytesFunction · 0.85
luabb_pushblobFunction · 0.85
lua_pushnilFunction · 0.85
luabb_pushcstringFunction · 0.85
sqlite3_value_textFunction · 0.85
sqlite3_value_datetimeFunction · 0.85

Tested by

no test coverage detected