LCOV - code coverage report
Current view: top level - src/odbc/unittests - cursor5.c (source / functions) Hit Total Coverage
Test: FreeTDS coverage Lines: 40 41 97.6 %
Date: 2025-02-21 09:36:06 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #include "common.h"
       2             : 
       3             : static SQLINTEGER v_int_3;
       4             : static SQLLEN v_ind_3_1;
       5             : 
       6             : static char v_char_3[21];
       7             : static SQLLEN v_ind_3_2;
       8             : 
       9             : static int result = 0;
      10             : 
      11             : static void
      12         120 : doFetch(int dir, int pos, int expected)
      13             : {
      14             :         SQLRETURN RetCode;
      15             : 
      16         120 :         RetCode = CHKFetchScroll(dir, pos, "SINo");
      17             : 
      18         120 :         if (RetCode != SQL_NO_DATA)
      19          88 :                 printf(">> fetch %2d %10d : %d [%s]\n", dir, pos, v_ind_3_1 ? (int) v_int_3 : -1, v_ind_3_2 ? v_char_3 : "null");
      20             :         else
      21          32 :                 printf(">> fetch %2d %10d : no data found\n", dir, pos);
      22             : 
      23         120 :         if (expected != (RetCode == SQL_NO_DATA ? -1 : v_int_3))
      24           0 :                 result = 1;
      25         120 : }
      26             : 
      27             : int
      28          10 : main(void)
      29             : {
      30          10 :         odbc_use_version3 = 1;
      31          10 :         odbc_connect();
      32          10 :         odbc_check_cursor();
      33             : 
      34           8 :         CHKSetConnectAttr(SQL_ATTR_AUTOCOMMIT, (SQLPOINTER) SQL_AUTOCOMMIT_ON, SQL_IS_UINTEGER, "S");
      35             : 
      36           8 :         odbc_command("create table #mytab1 (k int, c char(30))");
      37           8 :         odbc_command("insert into #mytab1 values (1,'aaa')");
      38           8 :         odbc_command("insert into #mytab1 values (2,'bbb')");
      39           8 :         odbc_command("insert into #mytab1 values (3,'ccc')");
      40             : 
      41           8 :         odbc_reset_statement();
      42             : /*      CHKSetStmtAttr(SQL_ATTR_CURSOR_TYPE, (SQLPOINTER) SQL_CURSOR_STATIC, 0, "S"); */
      43           8 :         CHKSetStmtAttr(SQL_ATTR_CURSOR_SCROLLABLE, (SQLPOINTER) SQL_SCROLLABLE, SQL_IS_UINTEGER, "S");
      44             : 
      45           8 :         CHKPrepare(T("select k, c from #mytab1 order by k"), SQL_NTS, "SI");
      46             : 
      47           8 :         CHKBindCol(1, SQL_C_LONG, &v_int_3, 0, &v_ind_3_1, "S");
      48           8 :         CHKBindCol(2, SQL_C_CHAR, v_char_3, sizeof(v_char_3), &v_ind_3_2, "S");
      49             : 
      50           8 :         CHKExecute("SI");
      51             : 
      52           8 :         doFetch(SQL_FETCH_LAST, 0, 3);
      53           8 :         doFetch(SQL_FETCH_PRIOR, 0, 2);
      54           8 :         doFetch(SQL_FETCH_PRIOR, 0, 1);
      55           8 :         doFetch(SQL_FETCH_PRIOR, 0, -1);
      56           8 :         doFetch(SQL_FETCH_NEXT, 0, 1);
      57           8 :         doFetch(SQL_FETCH_NEXT, 0, 2);
      58           8 :         doFetch(SQL_FETCH_NEXT, 0, 3);
      59           8 :         doFetch(SQL_FETCH_NEXT, 0, -1);
      60           8 :         doFetch(SQL_FETCH_FIRST, 0, 1);
      61           8 :         doFetch(SQL_FETCH_NEXT, 0, 2);
      62           8 :         doFetch(SQL_FETCH_NEXT, 0, 3);
      63           8 :         doFetch(SQL_FETCH_ABSOLUTE, 3, 3);
      64           8 :         doFetch(SQL_FETCH_RELATIVE, -2, 1);
      65           8 :         doFetch(SQL_FETCH_RELATIVE, -2, -1);
      66           8 :         doFetch(SQL_FETCH_RELATIVE, 5, -1);
      67             : 
      68           8 :         CHKCloseCursor("SI");
      69             : 
      70           8 :         odbc_disconnect();
      71           8 :         return result;
      72             : }

Generated by: LCOV version 1.13