lunarmodules / luasql

LuaSQL is a simple interface from Lua to a DBMS.
http://lunarmodules.github.io/luasql
535 stars 192 forks source link

can't install luasql-odbc with luarocks on debian 10/11 #129

Closed laigor closed 2 years ago

laigor commented 2 years ago

installed :

Installing https://luarocks.org/luasql-odbc-2.6.0-1.rockspec
Клонирование в «luasql»…
remote: Enumerating objects: 149, done.
remote: Counting objects: 100% (149/149), done.
remote: Compressing objects: 100% (99/99), done.
remote: Total 149 (delta 72), reused 72 (delta 36), pack-reused 0
Получение объектов: 100% (149/149), 104.13 KiB | 264.00 KiB/s, готово.
Определение изменений: 100% (72/72), готово.
Note: switching to '22d4a911f35cf851af9db71124e3998d96fb3fa1'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

gcc -O2 -fPIC -I/usr/include/lua5.3 -c src/luasql.c -o src/luasql.o -I/usr/include
gcc -O2 -fPIC -I/usr/include/lua5.3 -c src/ls_odbc.c -o src/ls_odbc.o -I/usr/include
src/ls_odbc.c:37:2: error: unknown type name ‘SQLPOINTER’
   37 |  SQLPOINTER buf;
      |  ^~~~~~~~~~
src/ls_odbc.c:38:2: error: unknown type name ‘SQLINTEGER’
   38 |  SQLINTEGER len;
      |  ^~~~~~~~~~
src/ls_odbc.c:39:2: error: unknown type name ‘SQLINTEGER’
   39 |  SQLINTEGER type;
      |  ^~~~~~~~~~
src/ls_odbc.c:51:2: error: unknown type name ‘SQLHENV’
   51 |  SQLHENV       henv;               /* environment handle */
      |  ^~~~~~~
src/ls_odbc.c:58:2: error: unknown type name ‘SQLHDBC’
   58 |  SQLHDBC       hdbc;               /* database connection handle */
      |  ^~~~~~~
src/ls_odbc.c:66:2: error: unknown type name ‘SQLHSTMT’
   66 |  SQLHSTMT      hstmt;              /* statement handle */
      |  ^~~~~~~~
src/ls_odbc.c:67:2: error: unknown type name ‘SQLSMALLINT’
   67 |  SQLSMALLINT   numparams;          /* number of input parameters */
      |  ^~~~~~~~~~~
src/ls_odbc.c:85:18: error: unknown type name ‘SQLRETURN’
   85 | static int error(SQLRETURN a)
      |                  ^~~~~~~~~
src/ls_odbc.c:195:38: error: unknown type name ‘SQLSMALLINT’
  195 | static int fail(lua_State *L,  const SQLSMALLINT type, const SQLHANDLE handle) {
      |                                      ^~~~~~~~~~~
src/ls_odbc.c:195:62: error: unknown type name ‘SQLHANDLE’
  195 | static int fail(lua_State *L,  const SQLSMALLINT type, const SQLHANDLE handle) {
      |                                                              ^~~~~~~~~
src/ls_odbc.c: In function ‘fail’:
src/ls_odbc.c:196:5: error: unknown type name ‘SQLCHAR’
  196 |     SQLCHAR State[6];
      |     ^~~~~~~
src/ls_odbc.c:197:5: error: unknown type name ‘SQLINTEGER’
  197 |     SQLINTEGER NativeError;
      |     ^~~~~~~~~~
src/ls_odbc.c:198:5: error: unknown type name ‘SQLSMALLINT’
  198 |     SQLSMALLINT MsgSize, i;
      |     ^~~~~~~~~~~
src/ls_odbc.c:199:5: error: unknown type name ‘SQLRETURN’
  199 |     SQLRETURN ret;
      |     ^~~~~~~~~
src/ls_odbc.c:200:5: error: unknown type name ‘SQLCHAR’
  200 |     SQLCHAR Msg[SQL_MAX_MESSAGE_LENGTH];
      |     ^~~~~~~
src/ls_odbc.c:200:17: error: ‘SQL_MAX_MESSAGE_LENGTH’ undeclared (first use in this function)
  200 |     SQLCHAR Msg[SQL_MAX_MESSAGE_LENGTH];
      |                 ^~~~~~~~~~~~~~~~~~~~~~
src/ls_odbc.c:200:17: note: each undeclared identifier is reported only once for each function it appears in
src/ls_odbc.c:207:15: warning: implicit declaration of function ‘SQLGetDiagRec’ [-Wimplicit-function-declaration]
  207 |         ret = SQLGetDiagRec(type, handle, i, State, &NativeError, Msg,
      |               ^~~~~~~~~~~~~
src/ls_odbc.c:209:20: error: ‘SQL_NO_DATA’ undeclared (first use in this function)
  209 |         if (ret == SQL_NO_DATA) break;
      |                    ^~~~~~~~~~~
src/ls_odbc.c: At top level:
src/ls_odbc.c:218:39: error: unknown type name ‘SQLSMALLINT’
  218 | static param_data *malloc_stmt_params(SQLSMALLINT c)
      |                                       ^~~~~~~~~~~
src/ls_odbc.c:226:55: error: unknown type name ‘SQLSMALLINT’
  226 | static param_data *free_stmt_params(param_data *data, SQLSMALLINT c)
      |                                                       ^~~~~~~~~~~
src/ls_odbc.c: In function ‘stmt_shut’:
src/ls_odbc.c:246:2: error: unknown type name ‘SQLRETURN’
  246 |  SQLRETURN ret;
      |  ^~~~~~~~~
src/ls_odbc.c:253:17: warning: implicit declaration of function ‘free_stmt_params’ [-Wimplicit-function-declaration]
  253 |  stmt->params = free_stmt_params(stmt->params, stmt->numparams);
      |                 ^~~~~~~~~~~~~~~~
src/ls_odbc.c:253:15: warning: assignment to ‘param_data *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  253 |  stmt->params = free_stmt_params(stmt->params, stmt->numparams);
      |               ^
src/ls_odbc.c:255:8: warning: implicit declaration of function ‘SQLFreeHandle’ [-Wimplicit-function-declaration]
  255 |  ret = SQLFreeHandle(hSTMT, stmt->hstmt);
      |        ^~~~~~~~~~~~~
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:255:22: note: in expansion of macro ‘hSTMT’
  255 |  ret = SQLFreeHandle(hSTMT, stmt->hstmt);
      |                      ^~~~~
src/ls_odbc.c:256:6: warning: implicit declaration of function ‘error’; did you mean ‘perror’? [-Wimplicit-function-declaration]
  256 |  if (error(ret)) {
      |      ^~~~~
      |      perror
src/ls_odbc.c: In function ‘cur_shut’:
src/ls_odbc.c:271:12: warning: implicit declaration of function ‘SQLCloseCursor’ [-Wimplicit-function-declaration]
  271 |  if (error(SQLCloseCursor(cur->stmt->hstmt))) {
      |            ^~~~~~~~~~~~~~
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:272:18: note: in expansion of macro ‘hSTMT’
  272 |   return fail(L, hSTMT, cur->stmt->hstmt);
      |                  ^~~~~
src/ls_odbc.c: At top level:
src/ls_odbc.c:293:40: error: unknown type name ‘SQLSMALLINT’
  293 | static const char *sqltypetolua (const SQLSMALLINT type) {
      |                                        ^~~~~~~~~~~
src/ls_odbc.c: In function ‘sqltypetolua’:
src/ls_odbc.c:295:14: error: ‘SQL_UNKNOWN_TYPE’ undeclared (first use in this function)
  295 |         case SQL_UNKNOWN_TYPE: case SQL_CHAR: case SQL_VARCHAR:
      |              ^~~~~~~~~~~~~~~~
src/ls_odbc.c:295:37: error: ‘SQL_CHAR’ undeclared (first use in this function)
  295 |         case SQL_UNKNOWN_TYPE: case SQL_CHAR: case SQL_VARCHAR:
      |                                     ^~~~~~~~
src/ls_odbc.c:295:52: error: ‘SQL_VARCHAR’ undeclared (first use in this function)
  295 |         case SQL_UNKNOWN_TYPE: case SQL_CHAR: case SQL_VARCHAR:
      |                                                    ^~~~~~~~~~~
src/ls_odbc.c:296:14: error: ‘SQL_TYPE_DATE’ undeclared (first use in this function)
  296 |         case SQL_TYPE_DATE: case SQL_TYPE_TIME: case SQL_TYPE_TIMESTAMP:
      |              ^~~~~~~~~~~~~
src/ls_odbc.c:296:34: error: ‘SQL_TYPE_TIME’ undeclared (first use in this function)
  296 |         case SQL_TYPE_DATE: case SQL_TYPE_TIME: case SQL_TYPE_TIMESTAMP:
      |                                  ^~~~~~~~~~~~~
src/ls_odbc.c:296:54: error: ‘SQL_TYPE_TIMESTAMP’ undeclared (first use in this function)
  296 |         case SQL_TYPE_DATE: case SQL_TYPE_TIME: case SQL_TYPE_TIMESTAMP:
      |                                                      ^~~~~~~~~~~~~~~~~~
src/ls_odbc.c:297:14: error: ‘SQL_DATE’ undeclared (first use in this function)
  297 |         case SQL_DATE: case SQL_INTERVAL: case SQL_TIMESTAMP:
      |              ^~~~~~~~
src/ls_odbc.c:297:29: error: ‘SQL_INTERVAL’ undeclared (first use in this function)
  297 |         case SQL_DATE: case SQL_INTERVAL: case SQL_TIMESTAMP:
      |                             ^~~~~~~~~~~~
src/ls_odbc.c:297:48: error: ‘SQL_TIMESTAMP’ undeclared (first use in this function)
  297 |         case SQL_DATE: case SQL_INTERVAL: case SQL_TIMESTAMP:
      |                                                ^~~~~~~~~~~~~
src/ls_odbc.c:298:14: error: ‘SQL_LONGVARCHAR’ undeclared (first use in this function)
  298 |         case SQL_LONGVARCHAR:
      |              ^~~~~~~~~~~~~~~
src/ls_odbc.c:299:14: error: ‘SQL_WCHAR’ undeclared (first use in this function)
  299 |         case SQL_WCHAR: case SQL_WVARCHAR: case SQL_WLONGVARCHAR:
      |              ^~~~~~~~~
src/ls_odbc.c:299:30: error: ‘SQL_WVARCHAR’ undeclared (first use in this function)
  299 |         case SQL_WCHAR: case SQL_WVARCHAR: case SQL_WLONGVARCHAR:
      |                              ^~~~~~~~~~~~
src/ls_odbc.c:299:49: error: ‘SQL_WLONGVARCHAR’ undeclared (first use in this function)
  299 |         case SQL_WCHAR: case SQL_WVARCHAR: case SQL_WLONGVARCHAR:
      |                                                 ^~~~~~~~~~~~~~~~
src/ls_odbc.c:301:14: error: ‘SQL_BIGINT’ undeclared (first use in this function)
  301 |         case SQL_BIGINT: case SQL_TINYINT:
      |              ^~~~~~~~~~
src/ls_odbc.c:301:31: error: ‘SQL_TINYINT’ undeclared (first use in this function)
  301 |         case SQL_BIGINT: case SQL_TINYINT:
      |                               ^~~~~~~~~~~
src/ls_odbc.c:302:14: error: ‘SQL_INTEGER’ undeclared (first use in this function); did you mean ‘LUA_INTEGER’?
  302 |         case SQL_INTEGER: case SQL_SMALLINT:
      |              ^~~~~~~~~~~
      |              LUA_INTEGER
src/ls_odbc.c:302:32: error: ‘SQL_SMALLINT’ undeclared (first use in this function)
  302 |         case SQL_INTEGER: case SQL_SMALLINT:
      |                                ^~~~~~~~~~~~
src/ls_odbc.c:306:8: error: ‘SQL_NUMERIC’ undeclared (first use in this function)
  306 |   case SQL_NUMERIC: case SQL_DECIMAL:
      |        ^~~~~~~~~~~
src/ls_odbc.c:306:26: error: ‘SQL_DECIMAL’ undeclared (first use in this function)
  306 |   case SQL_NUMERIC: case SQL_DECIMAL:
      |                          ^~~~~~~~~~~
src/ls_odbc.c:307:14: error: ‘SQL_FLOAT’ undeclared (first use in this function)
  307 |         case SQL_FLOAT: case SQL_REAL: case SQL_DOUBLE:
      |              ^~~~~~~~~
src/ls_odbc.c:307:30: error: ‘SQL_REAL’ undeclared (first use in this function)
  307 |         case SQL_FLOAT: case SQL_REAL: case SQL_DOUBLE:
      |                              ^~~~~~~~
src/ls_odbc.c:307:45: error: ‘SQL_DOUBLE’ undeclared (first use in this function)
  307 |         case SQL_FLOAT: case SQL_REAL: case SQL_DOUBLE:
      |                                             ^~~~~~~~~~
src/ls_odbc.c:309:14: error: ‘SQL_BINARY’ undeclared (first use in this function)
  309 |         case SQL_BINARY: case SQL_VARBINARY: case SQL_LONGVARBINARY:
      |              ^~~~~~~~~~
src/ls_odbc.c:309:31: error: ‘SQL_VARBINARY’ undeclared (first use in this function)
  309 |         case SQL_BINARY: case SQL_VARBINARY: case SQL_LONGVARBINARY:
      |                               ^~~~~~~~~~~~~
src/ls_odbc.c:309:51: error: ‘SQL_LONGVARBINARY’ undeclared (first use in this function)
  309 |         case SQL_BINARY: case SQL_VARBINARY: case SQL_LONGVARBINARY:
      |                                                   ^~~~~~~~~~~~~~~~~
src/ls_odbc.c:311:14: error: ‘SQL_BIT’ undeclared (first use in this function)
  311 |         case SQL_BIT:
      |              ^~~~~~~
src/ls_odbc.c: At top level:
src/ls_odbc.c:329:58: error: unknown type name ‘SQLHSTMT’
  329 | static int push_column(lua_State *L, int coltypes, const SQLHSTMT hstmt,
      |                                                          ^~~~~~~~
src/ls_odbc.c:330:9: error: unknown type name ‘SQLUSMALLINT’
  330 |         SQLUSMALLINT i) {
      |         ^~~~~~~~~~~~
src/ls_odbc.c: In function ‘cur_fetch’:
src/ls_odbc.c:437:2: error: unknown type name ‘SQLHSTMT’
  437 |  SQLHSTMT hstmt = cur->stmt->hstmt;
      |  ^~~~~~~~
src/ls_odbc.c:439:2: error: unknown type name ‘SQLRETURN’
  439 |  SQLRETURN rc = SQLFetch(hstmt);
      |  ^~~~~~~~~
src/ls_odbc.c:439:17: warning: implicit declaration of function ‘SQLFetch’ [-Wimplicit-function-declaration]
  439 |  SQLRETURN rc = SQLFetch(hstmt);
      |                 ^~~~~~~~
src/ls_odbc.c:440:12: error: ‘SQL_NO_DATA’ undeclared (first use in this function)
  440 |  if (rc == SQL_NO_DATA) {
      |            ^~~~~~~~~~~
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:450:19: note: in expansion of macro ‘hSTMT’
  450 |    return fail(L, hSTMT, hstmt);
      |                   ^~~~~
src/ls_odbc.c:455:3: error: unknown type name ‘SQLUSMALLINT’
  455 |   SQLUSMALLINT i;
      |   ^~~~~~~~~~~~
src/ls_odbc.c:460:10: warning: implicit declaration of function ‘push_column’ [-Wimplicit-function-declaration]
  460 |    ret = push_column (L, cur->coltypes, hstmt, i);
      |          ^~~~~~~~~~~
src/ls_odbc.c:480:3: error: unknown type name ‘SQLUSMALLINT’
  480 |   SQLUSMALLINT i;
      |   ^~~~~~~~~~~~
src/ls_odbc.c: In function ‘create_colinfo’:
src/ls_odbc.c:538:2: error: unknown type name ‘SQLCHAR’
  538 |  SQLCHAR buffer[256];
      |  ^~~~~~~
src/ls_odbc.c:539:2: error: unknown type name ‘SQLSMALLINT’
  539 |  SQLSMALLINT namelen, datatype, i;
      |  ^~~~~~~~~~~
src/ls_odbc.c:540:2: error: unknown type name ‘SQLRETURN’
  540 |  SQLRETURN ret;
      |  ^~~~~~~~~
src/ls_odbc.c:548:9: warning: implicit declaration of function ‘SQLDescribeCol’ [-Wimplicit-function-declaration]
  548 |   ret = SQLDescribeCol(cur->stmt->hstmt, i, buffer, sizeof(buffer),
      |         ^~~~~~~~~~~~~~
src/ls_odbc.c:550:14: error: ‘SQL_ERROR’ undeclared (first use in this function)
  550 |   if (ret == SQL_ERROR) {
      |              ^~~~~~~~~
src/ls_odbc.c: At top level:
src/ls_odbc.c:571:33: error: unknown type name ‘SQLSMALLINT’
  571 |                           const SQLSMALLINT numcols)
      |                                 ^~~~~~~~~~~
src/ls_odbc.c: In function ‘create_cursor’:
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:590:18: note: in expansion of macro ‘hSTMT’
  590 |   return fail(L, hSTMT, cur->stmt->hstmt);
      |                  ^~~~~
src/ls_odbc.c: In function ‘stmt_close’:
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:620:18: note: in expansion of macro ‘hSTMT’
  620 |   return fail(L, hSTMT, stmt->hstmt);
      |                  ^~~~~
src/ls_odbc.c: In function ‘conn_close’:
src/ls_odbc.c:633:2: error: unknown type name ‘SQLRETURN’
  633 |  SQLRETURN ret;
      |  ^~~~~~~~~
src/ls_odbc.c:649:8: warning: implicit declaration of function ‘SQLDisconnect’ [-Wimplicit-function-declaration]
  649 |  ret = SQLDisconnect(conn->hdbc);
      |        ^~~~~~~~~~~~~
src/ls_odbc.c:83:14: error: ‘SQL_HANDLE_DBC’ undeclared (first use in this function)
   83 | #define hDBC SQL_HANDLE_DBC
      |              ^~~~~~~~~~~~~~
src/ls_odbc.c:651:18: note: in expansion of macro ‘hDBC’
  651 |   return fail(L, hDBC, conn->hdbc);
      |                  ^~~~
src/ls_odbc.c: In function ‘raw_execute’:
src/ls_odbc.c:669:2: error: unknown type name ‘SQLSMALLINT’
  669 |  SQLSMALLINT numcols;
      |  ^~~~~~~~~~~
src/ls_odbc.c:674:12: warning: implicit declaration of function ‘SQLExecute’ [-Wimplicit-function-declaration]
  674 |  if (error(SQLExecute(stmt->hstmt))) {
      |            ^~~~~~~~~~
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:675:18: note: in expansion of macro ‘hSTMT’
  675 |   return fail(L, hSTMT, stmt->hstmt);
      |                  ^~~~~
src/ls_odbc.c:679:12: warning: implicit declaration of function ‘SQLNumResultCols’ [-Wimplicit-function-declaration]
  679 |  if (error(SQLNumResultCols(stmt->hstmt, &numcols))) {
      |            ^~~~~~~~~~~~~~~~
src/ls_odbc.c:688:3: error: unknown type name ‘SQLINTEGER’
  688 |   SQLINTEGER numrows;
      |   ^~~~~~~~~~
src/ls_odbc.c:689:12: warning: implicit declaration of function ‘SQLRowCount’ [-Wimplicit-function-declaration]
  689 |   if(error(SQLRowCount(stmt->hstmt, &numrows))) {
      |            ^~~~~~~~~~~
src/ls_odbc.c: In function ‘set_param’:
src/ls_odbc.c:700:9: error: unknown type name ‘SQLINTEGER’
  700 |  static SQLINTEGER cbNull = SQL_NULL_DATA;
      |         ^~~~~~~~~~
src/ls_odbc.c:700:29: error: ‘SQL_NULL_DATA’ undeclared (first use in this function)
  700 |  static SQLINTEGER cbNull = SQL_NULL_DATA;
      |                             ^~~~~~~~~~~~~
src/ls_odbc.c:706:13: warning: implicit declaration of function ‘SQLBindParameter’ [-Wimplicit-function-declaration]
  706 |    if(error(SQLBindParameter(stmt->hstmt, i, SQL_PARAM_INPUT, SQL_C_DEFAULT,
      |             ^~~~~~~~~~~~~~~~
src/ls_odbc.c:706:46: error: ‘SQL_PARAM_INPUT’ undeclared (first use in this function)
  706 |    if(error(SQLBindParameter(stmt->hstmt, i, SQL_PARAM_INPUT, SQL_C_DEFAULT,
      |                                              ^~~~~~~~~~~~~~~
src/ls_odbc.c:706:63: error: ‘SQL_C_DEFAULT’ undeclared (first use in this function)
  706 |    if(error(SQLBindParameter(stmt->hstmt, i, SQL_PARAM_INPUT, SQL_C_DEFAULT,
      |                                                               ^~~~~~~~~~~~~
src/ls_odbc.c:707:30: error: ‘SQL_DOUBLE’ undeclared (first use in this function)
  707 |                              SQL_DOUBLE, 0, 0, NULL, 0, &cbNull))) {
      |                              ^~~~~~~~~~
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:708:20: note: in expansion of macro ‘hSTMT’
  708 |     return fail(L, hSTMT, stmt->hstmt);
      |                    ^~~~~
src/ls_odbc.c:714:14: warning: assignment to ‘int’ from ‘void *’ makes integer from pointer without a cast [-Wint-conversion]
  714 |    data->buf = malloc(sizeof(double));
      |              ^
src/ls_odbc.c:715:5: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  715 |    *(double *)data->buf = (double)lua_tonumber(L, -1);
      |     ^
src/ls_odbc.c:721:63: error: ‘SQL_C_DOUBLE’ undeclared (first use in this function)
  721 |    if(error(SQLBindParameter(stmt->hstmt, i, SQL_PARAM_INPUT, SQL_C_DOUBLE,
      |                                                               ^~~~~~~~~~~~
src/ls_odbc.c:733:14: warning: assignment to ‘int’ from ‘void *’ makes integer from pointer without a cast [-Wint-conversion]
  733 |    data->buf = malloc(len+1);
      |              ^
src/ls_odbc.c:734:11: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  734 |    memcpy((char *)data->buf, str, len+1);
      |           ^
src/ls_odbc.c:736:17: error: ‘SQL_NTS’ undeclared (first use in this function)
  736 |    data->type = SQL_NTS;
      |                 ^~~~~~~
src/ls_odbc.c:740:63: error: ‘SQL_C_CHAR’ undeclared (first use in this function)
  740 |    if(error(SQLBindParameter(stmt->hstmt, i, SQL_PARAM_INPUT, SQL_C_CHAR,
      |                                                               ^~~~~~~~~~
src/ls_odbc.c:741:30: error: ‘SQL_CHAR’ undeclared (first use in this function)
  741 |                              SQL_CHAR, len, 0, data->buf, data->len,
      |                              ^~~~~~~~
src/ls_odbc.c:749:30: error: ‘SQLCHAR’ undeclared (first use in this function)
  749 |    data->buf = malloc(sizeof(SQLCHAR));
      |                              ^~~~~~~
src/ls_odbc.c:750:15: error: expected expression before ‘)’ token
  750 |    *(SQLCHAR *)data->buf = (SQLCHAR)lua_toboolean(L, -1);
      |               ^
src/ls_odbc.c:756:63: error: ‘SQL_C_BIT’ undeclared (first use in this function)
  756 |    if(error(SQLBindParameter(stmt->hstmt, i, SQL_PARAM_INPUT, SQL_C_BIT,
      |                                                               ^~~~~~~~~
src/ls_odbc.c:757:30: error: ‘SQL_BIT’ undeclared (first use in this function)
  757 |                              SQL_BIT, 0, 0, data->buf, data->len,
      |                              ^~~~~~~
src/ls_odbc.c: In function ‘raw_readparams_table’:
src/ls_odbc.c:777:9: error: unknown type name ‘SQLINTEGER’
  777 |  static SQLINTEGER cbNull = SQL_NULL_DATA;
      |         ^~~~~~~~~~
src/ls_odbc.c:777:29: error: ‘SQL_NULL_DATA’ undeclared (first use in this function)
  777 |  static SQLINTEGER cbNull = SQL_NULL_DATA;
      |                             ^~~~~~~~~~~~~
src/ls_odbc.c:778:2: error: unknown type name ‘SQLSMALLINT’
  778 |  SQLSMALLINT i;
      |  ^~~~~~~~~~~
src/ls_odbc.c:783:17: warning: implicit declaration of function ‘malloc_stmt_params’ [-Wimplicit-function-declaration]
  783 |  stmt->params = malloc_stmt_params(stmt->numparams);
      |                 ^~~~~~~~~~~~~~~~~~
src/ls_odbc.c:783:15: warning: assignment to ‘param_data *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  783 |  stmt->params = malloc_stmt_params(stmt->numparams);
      |               ^
src/ls_odbc.c: In function ‘raw_readparams_args’:
src/ls_odbc.c:805:9: error: unknown type name ‘SQLINTEGER’
  805 |  static SQLINTEGER cbNull = SQL_NULL_DATA;
      |         ^~~~~~~~~~
src/ls_odbc.c:805:29: error: ‘SQL_NULL_DATA’ undeclared (first use in this function)
  805 |  static SQLINTEGER cbNull = SQL_NULL_DATA;
      |                             ^~~~~~~~~~~~~
src/ls_odbc.c:806:2: error: unknown type name ‘SQLSMALLINT’
  806 |  SQLSMALLINT i;
      |  ^~~~~~~~~~~
src/ls_odbc.c:811:15: warning: assignment to ‘param_data *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  811 |  stmt->params = malloc_stmt_params(stmt->numparams);
      |               ^
src/ls_odbc.c: In function ‘desc_params’:
src/ls_odbc.c:864:2: error: unknown type name ‘SQLSMALLINT’
  864 |  SQLSMALLINT i;
      |  ^~~~~~~~~~~
src/ls_odbc.c:868:3: error: unknown type name ‘SQLSMALLINT’
  868 |   SQLSMALLINT type, digits, nullable;
      |   ^~~~~~~~~~~
src/ls_odbc.c:869:3: error: unknown type name ‘SQLULEN’
  869 |   SQLULEN len;
      |   ^~~~~~~
src/ls_odbc.c:873:12: warning: implicit declaration of function ‘SQLDescribeParam’ [-Wimplicit-function-declaration]
  873 |   if(error(SQLDescribeParam(stmt->hstmt, i, &type, &len, &digits, &nullable))) {
      |            ^~~~~~~~~~~~~~~~
src/ls_odbc.c: In function ‘conn_prepare’:
src/ls_odbc.c:895:2: error: unknown type name ‘SQLCHAR’
  895 |  SQLCHAR *statement = (SQLCHAR *)luaL_checkstring(L, 2);
      |  ^~~~~~~
src/ls_odbc.c:895:24: error: ‘SQLCHAR’ undeclared (first use in this function)
  895 |  SQLCHAR *statement = (SQLCHAR *)luaL_checkstring(L, 2);
      |                        ^~~~~~~
src/ls_odbc.c:895:33: error: expected expression before ‘)’ token
  895 |  SQLCHAR *statement = (SQLCHAR *)luaL_checkstring(L, 2);
      |                                 ^
src/ls_odbc.c:896:2: error: unknown type name ‘SQLHDBC’
  896 |  SQLHDBC hdbc = conn->hdbc;
      |  ^~~~~~~
src/ls_odbc.c:897:2: error: unknown type name ‘SQLHSTMT’
  897 |  SQLHSTMT hstmt;
      |  ^~~~~~~~
src/ls_odbc.c:898:2: error: unknown type name ‘SQLRETURN’
  898 |  SQLRETURN ret;
      |  ^~~~~~~~~
src/ls_odbc.c:902:8: warning: implicit declaration of function ‘SQLAllocHandle’ [-Wimplicit-function-declaration]
  902 |  ret = SQLAllocHandle(hSTMT, hdbc, &hstmt);
      |        ^~~~~~~~~~~~~~
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:902:23: note: in expansion of macro ‘hSTMT’
  902 |  ret = SQLAllocHandle(hSTMT, hdbc, &hstmt);
      |                       ^~~~~
src/ls_odbc.c:83:14: error: ‘SQL_HANDLE_DBC’ undeclared (first use in this function)
   83 | #define hDBC SQL_HANDLE_DBC
      |              ^~~~~~~~~~~~~~
src/ls_odbc.c:904:18: note: in expansion of macro ‘hDBC’
  904 |   return fail(L, hDBC, hdbc);
      |                  ^~~~
src/ls_odbc.c:907:8: warning: implicit declaration of function ‘SQLPrepare’ [-Wimplicit-function-declaration]
  907 |  ret = SQLPrepare(hstmt, statement, SQL_NTS);
      |        ^~~~~~~~~~
src/ls_odbc.c:907:37: error: ‘SQL_NTS’ undeclared (first use in this function)
  907 |  ret = SQLPrepare(hstmt, statement, SQL_NTS);
      |                                     ^~~~~~~
src/ls_odbc.c:922:11: warning: implicit declaration of function ‘SQLNumParams’ [-Wimplicit-function-declaration]
  922 |  if(error(SQLNumParams(hstmt, &stmt->numparams))) {
      |           ^~~~~~~~~~~~
src/ls_odbc.c: In function ‘conn_commit’:
src/ls_odbc.c:995:2: error: unknown type name ‘SQLRETURN’
  995 |  SQLRETURN ret = SQLEndTran(hDBC, conn->hdbc, SQL_COMMIT);
      |  ^~~~~~~~~
src/ls_odbc.c:995:18: warning: implicit declaration of function ‘SQLEndTran’ [-Wimplicit-function-declaration]
  995 |  SQLRETURN ret = SQLEndTran(hDBC, conn->hdbc, SQL_COMMIT);
      |                  ^~~~~~~~~~
src/ls_odbc.c:83:14: error: ‘SQL_HANDLE_DBC’ undeclared (first use in this function)
   83 | #define hDBC SQL_HANDLE_DBC
      |              ^~~~~~~~~~~~~~
src/ls_odbc.c:995:29: note: in expansion of macro ‘hDBC’
  995 |  SQLRETURN ret = SQLEndTran(hDBC, conn->hdbc, SQL_COMMIT);
      |                             ^~~~
src/ls_odbc.c:995:47: error: ‘SQL_COMMIT’ undeclared (first use in this function)
  995 |  SQLRETURN ret = SQLEndTran(hDBC, conn->hdbc, SQL_COMMIT);
      |                                               ^~~~~~~~~~
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:997:18: note: in expansion of macro ‘hSTMT’
  997 |   return fail(L, hSTMT, conn->hdbc);
      |                  ^~~~~
src/ls_odbc.c: In function ‘conn_rollback’:
src/ls_odbc.c:1007:2: error: unknown type name ‘SQLRETURN’
 1007 |  SQLRETURN ret = SQLEndTran(hDBC, conn->hdbc, SQL_ROLLBACK);
      |  ^~~~~~~~~
src/ls_odbc.c:83:14: error: ‘SQL_HANDLE_DBC’ undeclared (first use in this function)
   83 | #define hDBC SQL_HANDLE_DBC
      |              ^~~~~~~~~~~~~~
src/ls_odbc.c:1007:29: note: in expansion of macro ‘hDBC’
 1007 |  SQLRETURN ret = SQLEndTran(hDBC, conn->hdbc, SQL_ROLLBACK);
      |                             ^~~~
src/ls_odbc.c:1007:47: error: ‘SQL_ROLLBACK’ undeclared (first use in this function)
 1007 |  SQLRETURN ret = SQLEndTran(hDBC, conn->hdbc, SQL_ROLLBACK);
      |                                               ^~~~~~~~~~~~
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:1009:18: note: in expansion of macro ‘hSTMT’
 1009 |   return fail(L, hSTMT, conn->hdbc);
      |                  ^~~~~
src/ls_odbc.c: In function ‘conn_setautocommit’:
src/ls_odbc.c:1019:2: error: unknown type name ‘SQLRETURN’
 1019 |  SQLRETURN ret;
      |  ^~~~~~~~~
src/ls_odbc.c:1021:9: warning: implicit declaration of function ‘SQLSetConnectAttr’ [-Wimplicit-function-declaration]
 1021 |   ret = SQLSetConnectAttr(conn->hdbc, SQL_ATTR_AUTOCOMMIT,
      |         ^~~~~~~~~~~~~~~~~
src/ls_odbc.c:1021:39: error: ‘SQL_ATTR_AUTOCOMMIT’ undeclared (first use in this function)
 1021 |   ret = SQLSetConnectAttr(conn->hdbc, SQL_ATTR_AUTOCOMMIT,
      |                                       ^~~~~~~~~~~~~~~~~~~
src/ls_odbc.c:1022:5: error: ‘SQLPOINTER’ undeclared (first use in this function)
 1022 |    (SQLPOINTER) SQL_AUTOCOMMIT_ON, 0);
      |     ^~~~~~~~~~
src/ls_odbc.c:1022:16: error: expected ‘)’ before ‘SQL_AUTOCOMMIT_ON’
 1022 |    (SQLPOINTER) SQL_AUTOCOMMIT_ON, 0);
      |                ^~~~~~~~~~~~~~~~~~
      |                )
src/ls_odbc.c:1025:16: error: expected ‘)’ before ‘SQL_AUTOCOMMIT_OFF’
 1025 |    (SQLPOINTER) SQL_AUTOCOMMIT_OFF, 0);
      |                ^~~~~~~~~~~~~~~~~~~
      |                )
src/ls_odbc.c:82:15: error: ‘SQL_HANDLE_STMT’ undeclared (first use in this function)
   82 | #define hSTMT SQL_HANDLE_STMT
      |               ^~~~~~~~~~~~~~~
src/ls_odbc.c:1028:18: note: in expansion of macro ‘hSTMT’
 1028 |   return fail(L, hSTMT, conn->hdbc);
      |                  ^~~~~
src/ls_odbc.c: At top level:
src/ls_odbc.c:1037:67: error: unknown type name ‘SQLHDBC’
 1037 | static int create_connection (lua_State *L, int o, env_data *env, SQLHDBC hdbc)
      |                                                                   ^~~~~~~
src/ls_odbc.c: In function ‘env_connect’:
src/ls_odbc.c:1073:2: error: unknown type name ‘SQLCHAR’
 1073 |  SQLCHAR *sourcename = (SQLCHAR*)luaL_checkstring (L, 2);
      |  ^~~~~~~
src/ls_odbc.c:1073:25: error: ‘SQLCHAR’ undeclared (first use in this function)
 1073 |  SQLCHAR *sourcename = (SQLCHAR*)luaL_checkstring (L, 2);
      |                         ^~~~~~~
src/ls_odbc.c:1073:33: error: expected expression before ‘)’ token
 1073 |  SQLCHAR *sourcename = (SQLCHAR*)luaL_checkstring (L, 2);
      |                                 ^
src/ls_odbc.c:1074:11: error: ‘username’ undeclared (first use in this function); did you mean ‘rename’?
 1074 |  SQLCHAR *username = (SQLCHAR*)luaL_optstring (L, 3, NULL);
      |           ^~~~~~~~
      |           rename
src/ls_odbc.c:1074:31: error: expected expression before ‘)’ token
 1074 |  SQLCHAR *username = (SQLCHAR*)luaL_optstring (L, 3, NULL);
      |                               ^
src/ls_odbc.c:1075:11: error: ‘password’ undeclared (first use in this function)
 1075 |  SQLCHAR *password = (SQLCHAR*)luaL_optstring (L, 4, NULL);
      |           ^~~~~~~~
src/ls_odbc.c:1075:31: error: expected expression before ‘)’ token
 1075 |  SQLCHAR *password = (SQLCHAR*)luaL_optstring (L, 4, NULL);
      |                               ^
src/ls_odbc.c:1076:2: error: unknown type name ‘SQLHDBC’
 1076 |  SQLHDBC hdbc;
      |  ^~~~~~~
src/ls_odbc.c:1077:2: error: unknown type name ‘SQLRETURN’
 1077 |  SQLRETURN ret;
      |  ^~~~~~~~~
src/ls_odbc.c:83:14: error: ‘SQL_HANDLE_DBC’ undeclared (first use in this function)
   83 | #define hDBC SQL_HANDLE_DBC
      |              ^~~~~~~~~~~~~~
src/ls_odbc.c:1080:24: note: in expansion of macro ‘hDBC’
 1080 |  ret = SQLAllocHandle (hDBC, env->henv, &hdbc);
      |                        ^~~~
src/ls_odbc.c:1085:8: warning: implicit declaration of function ‘SQLConnect’ [-Wimplicit-function-declaration]
 1085 |  ret = SQLConnect (hdbc, sourcename, SQL_NTS,
      |        ^~~~~~~~~~
src/ls_odbc.c:1085:38: error: ‘SQL_NTS’ undeclared (first use in this function)
 1085 |  ret = SQLConnect (hdbc, sourcename, SQL_NTS,
      |                                      ^~~~~~~
src/ls_odbc.c:1094:9: warning: implicit declaration of function ‘create_connection’; did you mean ‘getconnection’? [-Wimplicit-function-declaration]
 1094 |  return create_connection (L, 1, env, hdbc);
      |         ^~~~~~~~~~~~~~~~~
      |         getconnection
src/ls_odbc.c: In function ‘env_close’:
src/ls_odbc.c:1102:2: error: unknown type name ‘SQLRETURN’
 1102 |  SQLRETURN ret;
      |  ^~~~~~~~~
src/ls_odbc.c:81:14: error: ‘SQL_HANDLE_ENV’ undeclared (first use in this function)
   81 | #define hENV SQL_HANDLE_ENV
      |              ^~~~~~~~~~~~~~
src/ls_odbc.c:1114:23: note: in expansion of macro ‘hENV’
 1114 |  ret = SQLFreeHandle (hENV, env->henv);
      |                       ^~~~
src/ls_odbc.c:1117:13: warning: assignment to ‘int’ from ‘void *’ makes integer from pointer without a cast [-Wint-conversion]
 1117 |   env->henv = NULL;
      |             ^
src/ls_odbc.c: In function ‘create_environment’:
src/ls_odbc.c:1173:2: error: unknown type name ‘SQLHENV’
 1173 |  SQLHENV henv;
      |  ^~~~~~~
src/ls_odbc.c:1174:2: error: unknown type name ‘SQLRETURN’
 1174 |  SQLRETURN ret = SQLAllocHandle(hENV, SQL_NULL_HANDLE, &henv);
      |  ^~~~~~~~~
src/ls_odbc.c:81:14: error: ‘SQL_HANDLE_ENV’ undeclared (first use in this function)
   81 | #define hENV SQL_HANDLE_ENV
      |              ^~~~~~~~~~~~~~
src/ls_odbc.c:1174:33: note: in expansion of macro ‘hENV’
 1174 |  SQLRETURN ret = SQLAllocHandle(hENV, SQL_NULL_HANDLE, &henv);
      |                                 ^~~~
src/ls_odbc.c:1174:39: error: ‘SQL_NULL_HANDLE’ undeclared (first use in this function)
 1174 |  SQLRETURN ret = SQLAllocHandle(hENV, SQL_NULL_HANDLE, &henv);
      |                                       ^~~~~~~~~~~~~~~
src/ls_odbc.c:1179:8: warning: implicit declaration of function ‘SQLSetEnvAttr’ [-Wimplicit-function-declaration]
 1179 |  ret = SQLSetEnvAttr (henv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);
      |        ^~~~~~~~~~~~~
src/ls_odbc.c:1179:29: error: ‘SQL_ATTR_ODBC_VERSION’ undeclared (first use in this function)
 1179 |  ret = SQLSetEnvAttr (henv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);
      |                             ^~~~~~~~~~~~~~~~~~~~~
src/ls_odbc.c:1179:60: error: ‘SQL_OV_ODBC3’ undeclared (first use in this function)
 1179 |  ret = SQLSetEnvAttr (henv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);
      |                                                            ^~~~~~~~~~~~

Error: Build error: Failed compiling object src/ls_odbc.o
laigor commented 2 years ago

Compilation fails because UNIXODBC is not defined. I don't know the correct way to solve this problem. To work around the problem, I use the following command to install luasql-odbc: luarocks CFLAGS="-DUNIXODBC" install luasql-odbc

tomasguisasola commented 2 years ago

Hi laigor

This flag resolves the library against which the driver will be compiled. Note the code at the beginning of src/ls_odbc.c

if defined(_WIN32)

include

include

elif defined(INFORMIX)

include "infxcli.h"

elif defined(UNIXODBC)

include "sql.h"

include "sqltypes.h"

include "sqlext.h"

endif

Thus, if you have an unixodbc installation, that workaround should work, I think.

Regards, Tomás

Em dom., 26 de set. de 2021 às 11:23, laigor @.***> escreveu:

Compilation fails because UNIXODBC is not defined. I don't know the correct way to solve this problem. To work around the problem, I use the following command to install luasql-odbc: luarocks CFLAGS="-DUNIXODBC" install luasql-odbc

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe. Triage notifications on the go with GitHub Mobile for iOS or Android.

laigor commented 2 years ago

Am I the only one who installs luasql-odbc in linux via luarocks? UNIXODBC should be detected automatically, or at least the documentation should indicate how to properly install luasql-odbc in Linux.

tomasguisasola commented 2 years ago

Hi

I don't know if you are the only user of luasql-odbc, sorry. Personally I use Postgres, and have almost no feedback from users.

Regards, Tomás

Em ter., 28 de set. de 2021 às 07:11, laigor @.***> escreveu:

Am I the only one who installs luasql-odbc in linux via luarocks? UNIXODBC should be detected automatically, or at least the documentation should indicate how to properly install luasql-odbc in Linux.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/keplerproject/luasql/issues/129#issuecomment-929049206, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABAB3MMWT4V2CH2DLI3DD3UEGID5ANCNFSM5ETGKMYQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

laigor commented 2 years ago

Same issue #131

deining commented 1 year ago

Am I the only one who installs luasql-odbc in linux via luarocks?

No, you are not :-). I encountered the same issues you addressed with this issue today.

UNIXODBC should be detected automatically

This this was fixed meanwhile, but unfortunately there is no new version available on luraocks.org that contains that fix. Would be really helpful if a new version could be released soon.

granjerox commented 1 year ago

I've managed to install it by patching file manually

luarocks unpack luasql-odbc
cd luasql-odbc-2.6.0-1/luasql
nano src/ls_odbc.c  
    change line 19 from 
         #elif defined(UNIXODBC)
    to
         #else
luarocks make luasql-odbc-2.6.0-1.rockspec 

and thats it.

ps.: It still throws some warnings

❯ luarocks make luasql-odbc-2.6.0-1.rockspec
gcc -O2 -fPIC -I/usr/include/lua5.2 -c src/luasql.c -o src/luasql.o -I/usr/include
gcc -O2 -fPIC -I/usr/include/lua5.2 -c src/ls_odbc.c -o src/ls_odbc.o -I/usr/include
src/ls_odbc.c: In function ‘raw_execute’:
src/ls_odbc.c:689:37: warning: passing argument 2 of ‘SQLRowCount’ from incompatible pointer type [-Wincompatible-pointer-types]
  689 |   if(error(SQLRowCount(stmt->hstmt, &numrows))) {
      |                                     ^~~~~~~~
      |                                     |
      |                                     SQLINTEGER * {aka int *}
In file included from src/ls_odbc.c:20:
/usr/include/sql.h:768:44: note: expected ‘SQLLEN *’ {aka ‘long int *’} but argument is of type ‘SQLINTEGER *’ {aka ‘int *’}
  768 |                                    SQLLEN *RowCount);
      |                                    ~~~~~~~~^~~~~~~~
src/ls_odbc.c: In function ‘set_param’:
src/ls_odbc.c:707:57: warning: passing argument 10 of ‘SQLBindParameter’ from incompatible pointer type [-Wincompatible-pointer-types]
  707 |                              SQL_DOUBLE, 0, 0, NULL, 0, &cbNull))) {
      |                                                         ^~~~~~~
      |                                                         |
      |                                                         SQLINTEGER * {aka int *}
In file included from src/ls_odbc.c:22:
/usr/include/sqlext.h:2049:21: note: expected ‘SQLLEN *’ {aka ‘long int *’} but argument is of type ‘SQLINTEGER *’ {aka ‘int *’}
 2049 |     SQLLEN         *pcbValue);
      |     ~~~~~~~~~~~~~~~~^~~~~~~~
src/ls_odbc.c:723:30: warning: passing argument 10 of ‘SQLBindParameter’ from incompatible pointer type [-Wincompatible-pointer-types]
  723 |                              &data->type))) {
      |                              ^~~~~~~~~~~
      |                              |
      |                              SQLINTEGER * {aka int *}
In file included from src/ls_odbc.c:22:
/usr/include/sqlext.h:2049:21: note: expected ‘SQLLEN *’ {aka ‘long int *’} but argument is of type ‘SQLINTEGER *’ {aka ‘int *’}
 2049 |     SQLLEN         *pcbValue);
      |     ~~~~~~~~~~~~~~~~^~~~~~~~
src/ls_odbc.c:742:30: warning: passing argument 10 of ‘SQLBindParameter’ from incompatible pointer type [-Wincompatible-pointer-types]
  742 |                              &data->type))) {
      |                              ^~~~~~~~~~~
      |                              |
      |                              SQLINTEGER * {aka int *}
In file included from src/ls_odbc.c:22:
/usr/include/sqlext.h:2049:21: note: expected ‘SQLLEN *’ {aka ‘long int *’} but argument is of type ‘SQLINTEGER *’ {aka ‘int *’}
 2049 |     SQLLEN         *pcbValue);
      |     ~~~~~~~~~~~~~~~~^~~~~~~~
src/ls_odbc.c:758:30: warning: passing argument 10 of ‘SQLBindParameter’ from incompatible pointer type [-Wincompatible-pointer-types]
  758 |                              &data->type))) {
      |                              ^~~~~~~~~~~
      |                              |
      |                              SQLINTEGER * {aka int *}
In file included from src/ls_odbc.c:22:
/usr/include/sqlext.h:2049:21: note: expected ‘SQLLEN *’ {aka ‘long int *’} but argument is of type ‘SQLINTEGER *’ {aka ‘int *’}
 2049 |     SQLLEN         *pcbValue);
      |     ~~~~~~~~~~~~~~~~^~~~~~~~
gcc -shared -o luasql/odbc.so -L/usr/local/lib src/luasql.o src/ls_odbc.o -L/usr/lib -Wl,-rpath,/usr/lib: -lodbc
luasql-odbc 2.6.0-1 is now installed in /usr/local (license: MIT/X11)