ncbi_running_on_valgrind(
void)
20 const char* s = getenv(
"NCBI_RUN_UNDER_VALGRIND");
25 #include <freetds/bool.h> 30 #define MAX_STRING_LENGTH 20 67memset(&
buf, 0x5a,
sizeof(
buf));
82 #define GET_DESC_FIELD(desc_type, col, field, type) \ 83 (get_desc_field(SQL_ATTR_ ## desc_type ## _PARAM_DESC, col, field, sizeof(type)).fld ## type) 101 #define CHECK_COND(args) do { \ 102 char *err = check_cond args; \ 105 fprintf(stderr, "Wrong condition at line %d: %s\n", __LINE__, err); \
124sprintf((
char*)
strCol[
i],
"Dummy value %d",
i* 3);
142sprintf((
char*)
binCol[
i],
"%d",
i* 11);
151name[0] = (
f==
'X'||
f==
'x') ?
'Y':
'X';
169 odbc_command(
"IF OBJECT_ID('TestTVPProc') IS NOT NULL DROP PROC TestTVPProc");
170 odbc_command(
"IF TYPE_ID('TVPType') IS NOT NULL DROP TYPE TVPType");
171 odbc_command(
"IF OBJECT_ID('TVPTable') IS NOT NULL DROP TABLE TVPTable");
173 odbc_command(
"CREATE TABLE TVPTable (PersonID INT PRIMARY KEY, Name VARCHAR(50))");
174 odbc_command(
"CREATE TYPE TVPType " "AS TABLE (vPersonID INT PRIMARY KEY, vName VARCHAR(50))");
175 odbc_command(
"CREATE PROCEDURE TestTVPProc (@TVPParam TVPType READONLY) " 176 "AS INSERT INTO TVPTable SELECT * FROM @TVPParam");
213fprintf(stderr,
"Wrong number of rows inserted, expected %ld, got %s\n", (
long) numRows,
outputBuffer);
221 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable WHERE PersonID = 0 AND Name = 'Dummy value 0') SELECT 1");
222 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable WHERE PersonID = 10 AND Name = 'Dummy value 3') SELECT 1");
223 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable WHERE PersonID = 20 AND Name = 'Dummy value 6') SELECT 1");
224 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable WHERE PersonID = 30 AND Name = 'Dummy value 9') SELECT 1");
225 odbc_check_no_row(
"IF EXISTS(SELECT * FROM TVPTable WHERE PersonID = 40 AND Name = 'Dummy value 12') SELECT 1");
245 odbc_command(
"IF OBJECT_ID('TestTVPProc2') IS NOT NULL DROP PROC TestTVPProc2");
246 odbc_command(
"IF TYPE_ID('TVPType2') IS NOT NULL DROP TYPE TVPType2");
247 odbc_command(
"IF OBJECT_ID('TVPTable2') IS NOT NULL DROP TABLE TVPTable2");
249 odbc_command(
"CREATE TABLE TVPTable2 (Num NUMERIC(10, 5), Bin BINARY(10))");
250 odbc_command(
"CREATE TYPE TVPType2 " "AS TABLE (vNum NUMERIC(10, 5), vBin VARBINARY(10))");
251 odbc_command(
"CREATE PROCEDURE TestTVPProc2 (@TVPParam TVPType2 READONLY) " 252 "AS INSERT INTO TVPTable2 SELECT vNum, vBin FROM @TVPParam");
278fprintf(stderr,
"Wrong number of columns inserted, expected %ld, got %s\n", (
long) numRows,
outputBuffer);
286 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable2 WHERE Bin = 0x30 AND Num = -48) SELECT 1");
287 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable2 WHERE Bin = 0x3131 AND Num = 97) SELECT 1");
288 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable2 WHERE Bin = 0x3232 AND Num = -13361) SELECT 1");
289 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable2 WHERE Bin = 0x3333 AND Num = 25905) SELECT 1");
290 odbc_check_no_row(
"IF NOT EXISTS(SELECT * FROM TVPTable2 WHERE Bin = 0x3434 AND Num = -14386) SELECT 1");
311 odbc_command(
"IF OBJECT_ID('TestTVPProc') IS NOT NULL DROP PROC TestTVPProc");
312 odbc_command(
"IF TYPE_ID('TVPType') IS NOT NULL DROP TYPE TVPType");
313 odbc_command(
"IF OBJECT_ID('TVPTable') IS NOT NULL DROP TABLE TVPTable");
315 odbc_command(
"CREATE TABLE TVPTable (PersonID INT PRIMARY KEY, Name VARCHAR(50))");
316 odbc_command(
"CREATE TYPE TVPType " "AS TABLE (vPersonID INT PRIMARY KEY, vName VARCHAR(50))");
317 odbc_command(
"CREATE PROCEDURE TestTVPProc (@TVPParam TVPType READONLY) " 318 "AS INSERT INTO TVPTable SELECT * FROM @TVPParam");
426 CHECK_COND((ptr == tableName,
"SQL_DESC_DATA_PTR expected %p got %p", tableName, ptr));
430printf(
"Internal pointer %p\n", ptr);
435 CHECK_COND((ptr == &numRows,
"SQL_DESC_INDICATOR_PTR expected %p got %p", &numRows, ptr));
438 CHECK_COND((ptr ==
NULL,
"SQL_DESC_INDICATOR_PTR expected %p got %p",
NULL, ptr));
443 CHECK_COND((ptr == &numRows,
"SQL_DESC_OCTET_LENGTH_PTR expected %p got %p", &numRows, ptr));
446 CHECK_COND((ptr ==
NULL,
"SQL_DESC_OCTET_LENGTH_PTR expected %p got %p",
NULL, ptr));
453 CHECK_COND((
len== 0,
"SQL_DESC_OCTET_LENGTH expected %ld got %ld", (
long) 0, (
long)
len));
516 if(RUNNING_ON_VALGRIND > 0)
519 #if defined(HAVE__HEAPWALK) 524hinfo._pentry =
NULL;
525 while((heapstatus = _heapwalk(&hinfo)) == _HEAPOK) {
526 if(hinfo._useflag == _USEDENTRY)
529 assert(heapstatus == _HEAPEMPTY || heapstatus == _HEAPEND);
531 #elif defined(HAVE_MALLINFO2) 532ret = mallinfo2().uordblks;
534ret = (size_t) (mallinfo().uordblks);
540TestInitializeLeak(
void)
544 size_tinitial_memory;
556initial_memory = memory_usage();
557 for(
i= 0;
i< 1024; ++
i)
561 assert(memory_usage() < initial_memory + 10240);
571initial_memory = memory_usage();
572 for(
i= 0;
i< 1024; ++
i)
576 assert(memory_usage() < initial_memory + 10240);
594printf(
"TVP data is supported since protocol 7.3, MSSQL only.\n");
606TestInitializeLeak();
#define CHKFreeStmt(a, res)
#define CHKBindParameter(a, b, c, d, e, f, g, h, i, res)
#define odbc_reset_statement()
#define CHKGetData(a, b, c, d, e, res)
#define odbc_command(cmd)
#define CHKExecDirect(a, b, res)
#define CHKCloseCursor(res)
#define CHKSetStmtAttr(a, b, c, res)
#define CHKGetStmtAttr(a, b, c, d, res)
#define CHKGetDescField(desc, a, b, c, d, e, res)
#define CHKSetDescField(desc, a, b, c, d, res)
static SQLRETURN odbc_connect(TDS_DBC *dbc, TDSLOGIN *login)
void odbc_test_skipped(void)
int odbc_disconnect(void)
SQLWCHAR * odbc_get_sqlwchar(ODBC_BUF **buf, const char *s)
void odbc_check_no_row(const char *query)
void odbc_read_error(void)
int odbc_tds_version(void)
int odbc_driver_is_freetds(void)
#define SQL_SOPT_SS_PARAM_FOCUS
const struct ncbi::grid::netcache::search::fields::SIZE size
int strcmp(const char *str1, const char *str2)
#define SQL_ATTR_APP_PARAM_DESC
#define SQL_DESC_OCTET_LENGTH_PTR
#define SQL_DESC_INDICATOR_PTR
#define SQL_DESC_DATA_PTR
#define SQL_DESC_OCTET_LENGTH
#define SQL_DESC_CONCISE_TYPE
#define SQL_PARAM_INPUT_OUTPUT
#define SQL_DESC_ARRAY_SIZE
struct tagSQL_NUMERIC_STRUCT SQL_NUMERIC_STRUCT
unsigned long SQLUINTEGER
unsigned short SQLUSMALLINT
DATE_STRUCT SQL_DATE_STRUCT
signed short int SQLSMALLINT
#define SQL_MAX_NUMERIC_LEN
static SQLCHAR strCol[5][20]
int main(int argc, char *argv[])
static SQLCHAR outputBuffer[256]
static SQLINTEGER lBinCol[5]
static field_output get_desc_field(SQLINTEGER desc_type, SQLSMALLINT icol, SQLSMALLINT fDescType, size_t size)
static void TestTVPInsert2(void)
static SQLINTEGER lStrCol[5]
static SQLINTEGER lIntCol[5]
static void dirty_name(SQLWCHAR *name)
static SQLINTEGER lDateCol[5]
#define MAX_STRING_LENGTH
#define GET_DESC_FIELD(desc_type, col, field, type)
static SQLINTEGER intCol[5]
static char * check_cond(bool condition, const char *fmt,...)
static void TestDescriptorValues(void)
static SQLCHAR binCol[5][20]
static SQLINTEGER lenBuffer
static SQL_DATE_STRUCT dateCol[5]
static SQL_NUMERIC_STRUCT numericCol[5]
static void TestTVPMemoryManagement(void)
static void TestErrors(void)
static void TestTVPInsert(void)
static SQLINTEGER lNumericCol[5]
SQLSMALLINT fldSQLSMALLINT
SQLUINTEGER fldSQLUINTEGER
SQLUSMALLINT fldSQLUSMALLINT
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4