components/unixodbc/TESTING
author Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
Sun, 26 Mar 2017 13:26:42 -0700
changeset 7803 bab5480f2396
parent 7671 a092c6b08fcc
permissions -rw-r--r--
23209384 Restore developer docs for gdk-pixbuf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7671
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     1
There isn't a self-test suite provided for this component.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     2
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     3
Useful resources for how to test this can be found at:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     4
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     5
  https://compscinotes.wordpress.com/2010/04/18/unixodbc-mysql-sample-program/
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     6
  http://www.unixodbc.org/unixODBCsetup.html
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     7
  http://www.easysoft.com/developer/languages/c/odbc_tutorial.html
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     8
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
     9
From the later, a couple of simple commands to run are:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    10
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    11
$ odbcinst --version
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    12
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    13
and
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    14
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    15
$ odbcinst -q -s
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    16
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    17
just to make sure you have the correct new version of the package installed.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    18
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    19
The Oracle Instant Client is the only package in Solaris known to use
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    20
unixODBC, and this can be used to provide some more testing.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    21
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    22
Install all the Instant Client Solaris packages with:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    23
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    24
$ sudo pkg install \*instantclient\*
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    25
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    26
Create a file called .odbc.ini in your home directory containing the
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    27
following:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    28
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    29
$ cat ~/.odbc.ini
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    30
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    31
[plus1]
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    32
Application Attributes = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    33
Attributes = W
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    34
BatchAutocommitMode = IfAllSuccessful
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    35
BindAsFLOAT = F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    36
CloseCursor = F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    37
DisableDPM = F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    38
DisableMTS = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    39
Driver = /usr/oracle/instantclient/12.1/lib/64/libsqora.so.12.1
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    40
DSN = TestDBDSN
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    41
EXECSchemaOpt =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    42
EXECSyntax = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    43
Failover = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    44
FailoverDelay = 10
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    45
FailoverRetryCount = 10
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    46
FetchBufferSize = 64000
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    47
ForceWCHAR = F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    48
Lobs = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    49
Longs = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    50
MaxLargeData = 0
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    51
MetadataIdDefault = F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    52
QueryTimeout = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    53
ResultSets = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    54
ServerName =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    55
SQLGetData extensions = F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    56
Translation DLL =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    57
Translation Option = 0
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    58
DisableRULEHint = T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    59
UserID =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    60
StatementCache=F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    61
CacheBufferSize=20
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    62
UseOCIDescribeAny=F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    63
SQLTranslateErrors=F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    64
MaxTokenSize=8192
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    65
AggregateSQLType=FLOAT
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    66
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    67
Create a file called tnsnames.ora containing the following:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    68
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    69
$ cat tnsnames.ora
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    70
plus1 =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    71
  (DESCRIPTION =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    72
    (ADDRESS_LIST =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    73
        (ADDRESS =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    74
          (PROTOCOL = TCP)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    75
          (HOST = adc2171609.us.oracle.com)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    76
          (PORT = 1521)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    77
        )
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    78
    )
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    79
    (CONNECT_DATA =
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    80
      (SID = plus1)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    81
    )
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    82
  )
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    83
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    84
Create a file called odbcconnect.c containing the following:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    85
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    86
$ cat odbcconnect.c
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    87
/*  Copyright (c) 2004, 2012, Oracle and/or its affiliates.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    88
 *  All rights reserved.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    89
 */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    90
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    91
/*
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    92
   NAME
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    93
     odbcconnect.c - Simple ODBC Connect demo
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    94
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    95
   DESCRIPTION
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    96
     Basic ODBC Connect demo
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    97
*/
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    98
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
    99
#include <stdio.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   100
#include <sql.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   101
#include <sqlext.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   102
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   103
#define STR_LEN 50
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   104
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   105
int main (int argc, char *argv[])
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   106
{
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   107
  HENV          henv;               /* environment handle */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   108
  HDBC          hdbc;               /* connection handle */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   109
  HSTMT         hstmt;              /* statement handle */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   110
  SDWORD        retcode;            /* return code */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   111
  UCHAR         info[STR_LEN];      /* info string for SQLGetInfo */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   112
  SQLSMALLINT   cbInfoValue;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   113
  SQLCHAR       SqlState[6], Msg[SQL_MAX_MESSAGE_LENGTH];
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   114
  SQLINTEGER    NativeError;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   115
  SQLSMALLINT   MsgLen;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   116
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   117
  retcode = SQLAllocEnv (&henv);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   118
  retcode = SQLSetEnvAttr (henv, SQL_ATTR_ODBC_VERSION, (void *)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   119
SQL_OV_ODBC3,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   120
              SQL_IS_INTEGER);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   121
  retcode = SQLAllocConnect (henv, &hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   122
  retcode = SQLConnect (hdbc, "plus1", SQL_NTS, "scott", SQL_NTS, "tiger",
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   123
              SQL_NTS);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   124
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   125
  if (retcode != SQL_SUCCESS)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   126
  {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   127
    if ((retcode = SQLGetDiagRec (SQL_HANDLE_DBC, hdbc, 1, SqlState,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   128
                   &NativeError, Msg, sizeof(Msg), &MsgLen)) != SQL_NO_DATA)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   129
      printf ("SqlState = %s\n Message = %s\n", SqlState, Msg);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   130
    goto EXIT;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   131
  }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   132
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   133
  retcode = SQLGetInfo (hdbc, SQL_DBMS_VER, &info, STR_LEN, &cbInfoValue);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   134
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   135
  if (retcode != SQL_SUCCESS)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   136
  {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   137
    if ((retcode = SQLGetDiagRec (SQL_HANDLE_DBC, hdbc, 1, SqlState,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   138
                   &NativeError, Msg, sizeof(Msg), &MsgLen)) != SQL_NO_DATA)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   139
      printf ("SqlState = %s\n Message = %s\n", SqlState, Msg);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   140
    goto EXIT;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   141
  }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   142
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   143
  printf ("Current DBMS version is %s\n", info);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   144
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   145
EXIT:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   146
  SQLDisconnect (hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   147
  SQLFreeConnect (hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   148
  SQLFreeEnv (henv);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   149
  return 0;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   150
}
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   151
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   152
Compile this with:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   153
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   154
$ gcc -I/usr/include/odbc -m64 -o odbcconnect odbcconnect.c -lodbc
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   155
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   156
In order to run this, you will need to:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   157
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   158
  1/ set LD_LIBRARY_PATH to the directory containing the Instant Client
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   159
driver.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   160
  2/ Set TNS_ADMIN to the directory containing the tnsnames.ora file.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   161
  3/ Set TWO_TASK to the name of the database (plus1 in the above example).
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   162
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   163
Running the odbcconnect program should give you something like:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   164
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   165
$ ./do_run.sh
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   166
+ ./odbcconnect
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   167
+ TNS_ADMIN=/export/home/richb/userland/bugs/23210080/tianfang
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   168
+ TWO_TASK=plus1
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   169
+ LD_LIBRARY_PATH_32=/usr/oracle/instantclient/12.1/lib
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   170
+ LD_LIBRARY_PATH_64=/usr/oracle/instantclient/12.1/lib/64
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   171
Current DBMS version is 12.02.0020
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   172
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   173
----
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   174
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   175
Another test using the previous database and setup...
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   176
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   177
Create a file called odbcselect.c containing the following:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   178
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   179
$ cat odbcselect.c
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   180
/* Copyright (c) 2004, 2010, Oracle and/or its affiliates.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   181
All rights reserved. */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   182
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   183
#include <stdio.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   184
#include <sql.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   185
#include <sqlext.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   186
#define  STR_LEN 50
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   187
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   188
int main (int argc, char *argv[])
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   189
{
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   190
  HENV          henv;          /* environment handle */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   191
  HDBC          hdbc;          /* connection handle  */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   192
  SQLHSTMT      hstmt;         /* statement handle   */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   193
  SDWORD        retcode;       /* return code        */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   194
  SQLCHAR *     stmt = "select ename, empno from emp where empno orderby
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   195
empno";
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   196
  SQLCHAR       empname[STR_LEN] = "", job[STR_LEN];
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   197
  SQLLEN        enind, jind;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   198
  SQLUINTEGER   eno = 0;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   199
  SQLCHAR       SqlState[6], Msg[SQL_MAX_MESSAGE_LENGTH];
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   200
  SQLINTEGER    NativeError;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   201
  SQLSMALLINT   MsgLen;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   202
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   203
  retcode = SQLAllocEnv (&henv);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   204
  retcode = SQLSetEnvAttr (henv, SQL_ATTR_ODBC_VERSION, (void *)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   205
SQL_OV_ODBC3,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   206
              SQL_IS_INTEGER);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   207
  retcode = SQLAllocConnect (henv, &hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   208
  retcode = SQLConnect (hdbc, "plus1", SQL_NTS, "scott", SQL_NTS, "tiger",
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   209
              SQL_NTS);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   210
  if (retcode != SQL_SUCCESS)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   211
    {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   212
      if ((retcode = SQLGetDiagRec (SQL_HANDLE_DBC, hdbc, 1, SqlState,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   213
                       &NativeError, Msg, sizeof (Msg),
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   214
                       &MsgLen)) != SQL_NO_DATA)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   215
      printf ("SqlState = %s\n Message = %s\n", SqlState, Msg);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   216
      goto EXIT;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   217
    }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   218
  retcode = SQLAllocHandle (SQL_HANDLE_STMT, hdbc, &hstmt);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   219
  SQLBindCol (hstmt, 1, SQL_C_CHAR, empname, sizeof (empname), &enind);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   220
  SQLBindCol (hstmt, 2, SQL_C_ULONG, &eno, 0, &jind);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   221
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   222
  SQLExecDirect (hstmt, "select ename, empno from emp", SQL_NTS);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   223
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   224
  while ((retcode = SQLFetch (hstmt)) != SQL_NO_DATA)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   225
    {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   226
      if (enind == SQL_NULL_DATA)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   227
        printf ("NULL  \n");
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   228
      else
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   229
        printf ("EMPNAME=%s ", empname);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   230
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   231
      if (jind == SQL_NULL_DATA)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   232
        printf ("NULL  \n");
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   233
      else
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   234
        printf ("EMPNO=%d\n", eno);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   235
    }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   236
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   237
EXIT:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   238
  SQLFreeStmt (hstmt, SQL_CLOSE);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   239
  SQLDisconnect (hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   240
  SQLFreeConnect (hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   241
  SQLFreeEnv (henv);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   242
  return 0;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   243
}
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   244
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   245
Compile this with:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   246
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   247
$ gcc -I/usr/include/odbc -m64 -o odbcselect odbcselect.c -lodbc
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   248
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   249
Set the same environment variables.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   250
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   251
Running the odbcselect program should give you something like:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   252
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   253
$ ./do_run.sh
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   254
+ ./odbcselect
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   255
+ TNS_ADMIN=/export/home/richb/userland/bugs/23210080/tianfang
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   256
+ TWO_TASK=plus1
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   257
+ LD_LIBRARY_PATH_32=/usr/oracle/instantclient/12.1/lib
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   258
+ LD_LIBRARY_PATH_64=/usr/oracle/instantclient/12.1/lib/64
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   259
EMPNAME=SMITH EMPNO=7369
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   260
EMPNAME=ALLEN EMPNO=7499
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   261
EMPNAME=WARD EMPNO=7521
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   262
EMPNAME=JONES EMPNO=7566
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   263
EMPNAME=MARTIN EMPNO=7654
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   264
EMPNAME=BLAKE EMPNO=7698
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   265
EMPNAME=CLARK EMPNO=7782
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   266
EMPNAME=SCOTT EMPNO=7788
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   267
EMPNAME=KING EMPNO=7839
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   268
EMPNAME=TURNER EMPNO=7844
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   269
EMPNAME=ADAMS EMPNO=7876
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   270
EMPNAME=JAMES EMPNO=7900
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   271
EMPNAME=FORD EMPNO=7902
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   272
EMPNAME=MILLER EMPNO=7934
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   273
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   274
----
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   275
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   276
One more test using the same database and setup...
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   277
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   278
Create a file called stmt_cache.c containing the following:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   279
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   280
$ cat stmt_cache.c
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   281
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   282
/* Copyright (c) 2005, 2006, Oracle. All rights reserved.  */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   283
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   284
/*
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   285
   NAME
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   286
     stmt_cache.c - Statement caching demo
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   287
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   288
   DESCRIPTION
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   289
     Run this demo in following modes and compare the result
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   290
     1. Statement caching enabled
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   291
        Make sure following options are added in odbc.ini file
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   292
            StatementCache=T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   293
            CacheBufferSize=20
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   294
     2. Statement caching disabled
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   295
        To disable statement caching adjust 'StatementCache' to false
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   296
              StatementCache=F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   297
*/
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   298
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   299
#include <stdio.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   300
#include <stdlib.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   301
#include <string.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   302
#include <time.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   303
#include <sql.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   304
#include <sqlext.h>
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   305
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   306
#define QUERYLEN  500
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   307
#define NUM_STMTS 500
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   308
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   309
SQLHSTMT hstmt[NUM_STMTS];
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   310
char *sqlquery[NUM_STMTS];
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   311
SQLHENV m_henv;               /* environment handle */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   312
SQLHDBC m_hdbc = NULL;        /* connection handle */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   313
int retCode;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   314
SQLCHAR SqlState[6], Msg[SQL_MAX_MESSAGE_LENGTH];
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   315
SQLINTEGER NativeError;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   316
SQLSMALLINT MsgLen;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   317
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   318
static void call_perf_test();
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   319
static void execute_query();
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   320
static void printSQLError (long , SQLHANDLE );
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   321
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   322
int
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   323
main()
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   324
{
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   325
    struct timeval tim;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   326
    double tot_time = 0.0, start_time = 0.0, end_time = 0.0;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   327
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   328
    if (!gettimeofday (&tim, NULL)) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   329
        start_time = (double)((tim.tv_sec * 1000000 ) + tim.tv_usec);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   330
    } else {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   331
        return -1;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   332
    }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   333
    call_perf_test();
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   334
    if (!gettimeofday (&tim, NULL)) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   335
        end_time = (double) ((tim.tv_sec * 1000000 ) + tim.tv_usec);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   336
    } else {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   337
        return -1;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   338
    }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   339
  tot_time = (double) (end_time - start_time) / 100000;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   340
  (void) printf ("\nTotal time taken is = %lf\n", tot_time);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   341
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   342
  return 0;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   343
}
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   344
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   345
void
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   346
call_perf_test()
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   347
{
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   348
    int count = 0;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   349
    char *buf1 = (char *) malloc(sizeof(char) * QUERYLEN);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   350
    char *buf2 = (char *) malloc(sizeof(char) * QUERYLEN);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   351
    sqlquery[0] =(char *) malloc(sizeof(char) * NUM_STMTS);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   352
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   353
    for (count=0; count < NUM_STMTS; count++) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   354
        sqlquery[count]=(char *)malloc(sizeof(char)*QUERYLEN);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   355
    }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   356
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   357
    retCode = SQLAllocEnv (&m_henv);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   358
    retCode = SQLSetEnvAttr (m_henv, SQL_ATTR_ODBC_VERSION,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   359
                             (void *) SQL_OV_ODBC3, SQL_IS_INTEGER);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   360
    retCode = SQLAllocConnect (m_henv, &m_hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   361
    retCode = SQLConnect (m_hdbc, "plus1", SQL_NTS,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   362
                          "scott", SQL_NTS, "tiger", SQL_NTS);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   363
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   364
    for (count = 0; count < NUM_STMTS-5; count++) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   365
        sprintf(buf1, "SELECT empno, ename, job, mgr, hiredate, sal, comm,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   366
deptno ");
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   367
        sprintf(buf2, " FROM emp");
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   368
        (void) strcat(buf1, buf2);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   369
        sprintf(sqlquery[count], "%s", buf1);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   370
    }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   371
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   372
    execute_query();
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   373
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   374
    retCode = SQLDisconnect (m_hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   375
    retCode = SQLFreeConnect (m_hdbc);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   376
    retCode = SQLFreeEnv (m_henv);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   377
}
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   378
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   379
void
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   380
execute_query()
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   381
{
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   382
    int count = 0;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   383
    for (count=0; count < NUM_STMTS - 5; count++) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   384
        retCode = SQLAllocHandle (SQL_HANDLE_STMT, m_hdbc,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   385
                                  (SQLHANDLE) &hstmt[count]);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   386
        if (retCode != SQL_SUCCESS) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   387
            printSQLError(3, hstmt[count]);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   388
        }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   389
        retCode = SQLPrepare(hstmt[count], (SQLCHAR *) sqlquery[count],
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   390
SQL_NTS);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   391
        if (retCode != SQL_SUCCESS) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   392
            printSQLError(3, hstmt[count]);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   393
        }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   394
        retCode=SQLExecute(hstmt[count]);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   395
        if (retCode != SQL_SUCCESS) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   396
            printSQLError(3, hstmt[count]);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   397
        }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   398
        /*
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   399
         * 1. Driver keeps the statement handle back to cache if statement
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   400
         *    caching is enabled
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   401
         * 2. Driver frees the statement handle if statement caching is
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   402
disabled
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   403
         */
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   404
        retCode = SQLFreeStmt (hstmt[count], SQL_DROP);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   405
        if (retCode != SQL_SUCCESS) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   406
            printSQLError(3,hstmt[count]);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   407
        }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   408
    }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   409
}
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   410
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   411
void printSQLError (long handletype, SQLHANDLE handle)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   412
{
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   413
    SQLSMALLINT errRecNo = 1;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   414
    SQLSMALLINT arg_handleType;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   415
    SQLCHAR errSQLStateBuf[256];
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   416
    SQLINTEGER errCode = 0;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   417
    SQLCHAR errMsgBuf[256];
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   418
    SQLSMALLINT errMsgBufLen = 256;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   419
    SQLSMALLINT errInfoSize;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   420
    long retcode;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   421
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   422
    (void) memset (errSQLStateBuf, 0x00, sizeof (errSQLStateBuf));
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   423
    (void) memset (errMsgBuf, 0x00, sizeof (errMsgBuf));
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   424
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   425
    if (handletype == 1) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   426
        arg_handleType = SQL_HANDLE_ENV;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   427
    } else if (handletype == 2) {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   428
        arg_handleType = SQL_HANDLE_DBC;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   429
    } else {
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   430
        arg_handleType = SQL_HANDLE_STMT;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   431
    }
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   432
    retcode = SQLGetDiagRec (arg_handleType, handle, errRecNo,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   433
                             errSQLStateBuf, &errCode, errMsgBuf,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   434
errMsgBufLen,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   435
                             &errInfoSize);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   436
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   437
    if (SQL_NO_DATA_FOUND != retcode)
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   438
        (void) printf ("errCode:%d errSQLStateBuf:%s\n errMsg:%s\n", errCode,
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   439
                        errSQLStateBuf, errMsgBuf);
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   440
    errRecNo++;
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   441
}
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   442
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   443
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   444
Compile this with:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   445
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   446
$ gcc -I/usr/include/odbc -m64 -o stmt_cache stmt_cache.c -lodbc
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   447
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   448
There are two test runs.
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   449
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   450
The first one is with the following line in your ~/.odbc.ini file:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   451
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   452
StatementCache=F
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   453
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   454
Running this gives:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   455
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   456
$ ./do_run.sh
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   457
+ ./stmt_cache
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   458
+ TNS_ADMIN=/export/home/richb/userland/bugs/23210080/tianfang
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   459
+ TWO_TASK=plus1
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   460
+ LD_LIBRARY_PATH_32=/usr/oracle/instantclient/12.1/lib
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   461
+ LD_LIBRARY_PATH_64=/usr/oracle/instantclient/12.1/lib/64
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   462
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   463
Total time taken is = 390.039130
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   464
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   465
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   466
Now change that line in the ~/.odbc.ini file to:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   467
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   468
StatementCache=T
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   469
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   470
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   471
This test run gives:
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   472
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   473
$ ./do_run.sh
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   474
+ ./stmt_cache
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   475
+ TNS_ADMIN=/export/home/richb/userland/bugs/23210080/tianfang
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   476
+ TWO_TASK=plus1
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   477
+ LD_LIBRARY_PATH_32=/usr/oracle/instantclient/12.1/lib
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   478
+ LD_LIBRARY_PATH_64=/usr/oracle/instantclient/12.1/lib/64
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   479
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   480
Total time taken is = 383.461800
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   481
a092c6b08fcc PSARC 2016/644 unixODBC version 2.3.4
Rich Burridge <rich.burridge@oracle.com>
parents:
diff changeset
   482
----