// Copyright (c) 2000-2001 David Muse // See the file COPYING for more information #include "../../config.h" #include #include #include #ifdef RUDIMENTS_NAMESPACE using namespace rudiments; #endif extern "C" { #include } #ifndef HAVE_FREETDS_FUNCTION_DEFINITIONS #include #endif #define FETCH_AT_ONCE 1 #define MAX_SELECT_LIST_SIZE 256 #define MAX_ITEM_BUFFER_SIZE 2048 CS_CONTEXT *context; CS_LOCALE *locale; CS_CONNECTION *conn; CS_COMMAND *cmd; CS_INT results_type; CS_INT ncols; CS_DATAFMT column[MAX_SELECT_LIST_SIZE]; char data[MAX_SELECT_LIST_SIZE] [FETCH_AT_ONCE][MAX_ITEM_BUFFER_SIZE]; CS_INT datalength[MAX_SELECT_LIST_SIZE][FETCH_AT_ONCE]; CS_SMALLINT nullindicator[MAX_SELECT_LIST_SIZE][FETCH_AT_ONCE]; CS_INT rowcount; int main(int argc, char **argv) { if (argc<8) { printf("usage: freetdstest server port user password query iterations queriesperiteration\n"); exit(0); } char *server=argv[1]; char *port=argv[2]; char *user=argv[3]; char *password=argv[4]; char *query=argv[5]; int iterations=atoi(argv[6]); int queriesperiteration=atoi(argv[7]); environment env; env.setValue("DSQUERY",server); env.setValue("TDSPORT",port); env.setValue("DSLIB_PORT",port); // init the timer time_t starttime=time(NULL); clock(); for (int count=0; count-1 && datalength[col][row]) { printf("%s,", data[col][row]); } else { printf("NULL,"); } } printf("\n"); } } // cancel any extra result sets ct_cancel(NULL,cmd,CS_CANCEL_ALL); // clean up ct_cmd_drop(cmd); cs_loc_drop(context,locale); } // clean up ct_close(conn,CS_UNUSED); ct_con_drop(conn); ct_exit(context,CS_UNUSED); cs_ctx_drop(context); } printf("total system time used: %ld\n",clock()); printf("total real time: %ld\n",time(NULL)-starttime); }