Commit ddbef950 authored by unknown's avatar unknown

Merge neptunus.(none):/home/magnus/mysql-4.1

into neptunus.(none):/home/magnus/mysql-4.1-sql-bench


sql/ha_ndbcluster.cc:
  Auto merged
sql/ha_ndbcluster.h:
  Auto merged
parents 74a46d13 4960b897
......@@ -87,8 +87,8 @@ typedef struct st_mysql_field {
char *db; /* Database for table */
char *catalog; /* Catalog for table */
char *def; /* Default value (set by mysql_list_fields) */
unsigned long length; /* Width of column */
unsigned long max_length; /* Max width of selected set */
unsigned long length; /* Width of column (create length) */
unsigned long max_length; /* Max width for selected set */
unsigned int name_length;
unsigned int org_name_length;
unsigned int table_length;
......@@ -120,6 +120,7 @@ typedef unsigned long long my_ulonglong;
typedef struct st_mysql_rows {
struct st_mysql_rows *next; /* list of rows */
MYSQL_ROW data;
ulong length;
} MYSQL_ROWS;
typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */
......@@ -547,11 +548,14 @@ typedef struct st_mysql_bind
unsigned long offset; /* offset position for char/binary fetch */
unsigned long internal_length; /* Used if length is 0 */
unsigned int param_number; /* For null count and error messages */
unsigned int pack_length; /* Internal length for packed data */
my_bool is_unsigned; /* set if integer type is unsigned */
my_bool long_data_used; /* If used with mysql_send_long_data */
my_bool internal_is_null; /* Used if is_null is 0 */
void (*store_param_func)(NET *net, struct st_mysql_bind *param);
void (*fetch_result)(struct st_mysql_bind *, unsigned char **row);
void (*skip_result)(struct st_mysql_bind *, MYSQL_FIELD *,
unsigned char **row);
} MYSQL_BIND;
......
......@@ -85,6 +85,7 @@ my_bool net_flush(NET *net);
#define MAX_LONG_DATA_LENGTH 8192
#define unsigned_field(A) ((A)->flags & UNSIGNED_FLAG)
static void stmt_update_metadata(MYSQL_STMT *stmt, MYSQL_ROWS *data);
static void append_wild(char *to,char *end,const char *wild);
sig_handler pipe_sig_handler(int sig);
static ulong mysql_sub_escape_string(CHARSET_INFO *charset_info, char *to,
......@@ -2529,10 +2530,6 @@ my_bool STDCALL mysql_stmt_attr_set(MYSQL_STMT *stmt,
{
switch (attr_type) {
case STMT_ATTR_UPDATE_MAX_LENGTH:
/*
Do we need a flags variable for all attributes or a bool for each
attribute?
*/
stmt->update_max_length= value ? *(const my_bool*) value : 0;
break;
default:
......@@ -2549,7 +2546,7 @@ my_bool STDCALL mysql_stmt_attr_get(MYSQL_STMT *stmt,
switch (attr_type) {
case STMT_ATTR_UPDATE_MAX_LENGTH:
*(unsigned long *) value= stmt->update_max_length;
break;
break;
default:
return TRUE;
}
......@@ -3341,6 +3338,43 @@ static void fetch_result_str(MYSQL_BIND *param, uchar **row)
}
/*
functions to calculate max lengths for strings during
mysql_stmt_store_result()
*/
static void skip_result_fixed(MYSQL_BIND *param,
MYSQL_FIELD *field __attribute__((unused)),
uchar **row)
{
(*row)+= param->pack_length;
}
static void skip_result_with_length(MYSQL_BIND *param __attribute__((unused)),
MYSQL_FIELD *field __attribute__((unused)),
uchar **row)
{
ulong length= net_field_length(row);
(*row)+= length;
}
static void skip_result_string(MYSQL_BIND *param __attribute__((unused)),
MYSQL_FIELD *field,
uchar **row)
{
ulong length= net_field_length(row);
(*row)+= length;
if (field->max_length < length)
field->max_length= length;
}
/*
Setup the bind buffers for resultset processing
*/
......@@ -3348,6 +3382,7 @@ static void fetch_result_str(MYSQL_BIND *param, uchar **row)
my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
{
MYSQL_BIND *param, *end;
MYSQL_FIELD *field;
ulong bind_count;
uint param_count= 0;
DBUG_ENTER("mysql_stmt_bind_result");
......@@ -3370,7 +3405,9 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
memcpy((char*) stmt->bind, (char*) bind, sizeof(MYSQL_BIND) * bind_count);
for (param= stmt->bind, end= param+bind_count; param < end ; param++)
for (param= stmt->bind, end= param + bind_count, field= stmt->fields ;
param < end ;
param++, field++)
{
/*
Set param->is_null to point to a dummy variable if it's not set.
......@@ -3388,15 +3425,18 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
/* Setup data copy functions for the different supported types */
switch (param->buffer_type) {
case MYSQL_TYPE_NULL: /* for dummy binds */
*param->length= 0;
break;
case MYSQL_TYPE_TINY:
param->fetch_result= fetch_result_tinyint;
*param->length= 1;
break;
case MYSQL_TYPE_SHORT:
case MYSQL_TYPE_YEAR:
param->fetch_result= fetch_result_short;
*param->length= 2;
break;
case MYSQL_TYPE_INT24:
case MYSQL_TYPE_LONG:
param->fetch_result= fetch_result_int32;
*param->length= 4;
......@@ -3445,6 +3485,58 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
param->buffer_type, param_count);
DBUG_RETURN(1);
}
/* Setup skip_result functions (to calculate max_length) */
param->skip_result= skip_result_fixed;
switch (field->type) {
case MYSQL_TYPE_NULL: /* for dummy binds */
param->pack_length= 0;
break;
case MYSQL_TYPE_TINY:
param->pack_length= 1;
break;
case MYSQL_TYPE_YEAR:
case MYSQL_TYPE_SHORT:
param->pack_length= 2;
break;
case MYSQL_TYPE_INT24:
case MYSQL_TYPE_LONG:
param->pack_length= 4;
break;
case MYSQL_TYPE_LONGLONG:
param->pack_length= 8;
break;
case MYSQL_TYPE_FLOAT:
param->pack_length= 4;
break;
case MYSQL_TYPE_DOUBLE:
param->pack_length= 8;
break;
case MYSQL_TYPE_TIME:
case MYSQL_TYPE_DATE:
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_TIMESTAMP:
param->skip_result= skip_result_with_length;
break;
case MYSQL_TYPE_DECIMAL:
case MYSQL_TYPE_ENUM:
case MYSQL_TYPE_SET:
case MYSQL_TYPE_GEOMETRY:
case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB:
case MYSQL_TYPE_LONG_BLOB:
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_VAR_STRING:
case MYSQL_TYPE_STRING:
param->skip_result= skip_result_string;
break;
default:
strmov(stmt->sqlstate, unknown_sqlstate);
sprintf(stmt->last_error,
ER(stmt->last_errno= CR_UNSUPPORTED_PARAM_TYPE),
field->type, param_count);
DBUG_RETURN(1);
}
}
stmt->bind_result_done= TRUE;
DBUG_RETURN(0);
......@@ -3458,7 +3550,7 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
static int stmt_fetch_row(MYSQL_STMT *stmt, uchar *row)
{
MYSQL_BIND *bind, *end;
MYSQL_FIELD *field, *field_end;
MYSQL_FIELD *field;
uchar *null_ptr, bit;
/*
Precondition: if stmt->field_count is zero or row is NULL, read_row_*
......@@ -3478,10 +3570,8 @@ static int stmt_fetch_row(MYSQL_STMT *stmt, uchar *row)
bit= 4; /* first 2 bits are reserved */
/* Copy complete row to application buffers */
for (bind= stmt->bind, end= (MYSQL_BIND *) bind + stmt->field_count,
field= stmt->fields,
field_end= (MYSQL_FIELD *)stmt->fields+stmt->field_count;
bind < end && field < field_end;
for (bind= stmt->bind, end= bind + stmt->field_count, field= stmt->fields ;
bind < end ;
bind++, field++)
{
if (*null_ptr & bit)
......@@ -3514,6 +3604,7 @@ static int stmt_fetch_row(MYSQL_STMT *stmt, uchar *row)
return 0;
}
int cli_unbuffered_fetch(MYSQL *mysql, char **row)
{
if (packet_error == net_safe_read(mysql))
......@@ -3524,6 +3615,7 @@ int cli_unbuffered_fetch(MYSQL *mysql, char **row)
return 0;
}
/*
Fetch and return row data to bound buffers, if any
*/
......@@ -3620,6 +3712,28 @@ int cli_read_binary_rows(MYSQL_STMT *stmt)
mysql= mysql->last_used_con;
if (stmt->update_max_length && !stmt->bind_result_done)
{
/*
We must initalize the bind structure to be able to calculate
max_length
*/
MYSQL_BIND *bind, *end;
MYSQL_FIELD *field;
bzero((char*) stmt->bind, sizeof(*stmt->bind)* stmt->field_count);
for (bind= stmt->bind, end= bind + stmt->field_count, field= stmt->fields;
bind < end ;
bind++, field++)
{
bind->buffer_type= field->type;
bind->buffer_length=1;
}
mysql_stmt_bind_result(stmt, stmt->bind);
stmt->bind_result_done= 0; /* No normal bind done */
}
while ((pkt_len= net_safe_read(mysql)) != packet_error)
{
cp= net->read_pos;
......@@ -3629,13 +3743,16 @@ int cli_read_binary_rows(MYSQL_STMT *stmt)
sizeof(MYSQL_ROWS) + pkt_len - 1)))
{
set_stmt_error(stmt, CR_OUT_OF_MEMORY, unknown_sqlstate);
DBUG_RETURN(1);
goto err;
}
cur->data= (MYSQL_ROW) (cur+1);
*prev_ptr= cur;
prev_ptr= &cur->next;
memcpy((char *) cur->data, (char *) cp+1, pkt_len-1);
++result->rows;
cur->length= pkt_len; /* To allow us to do sanity checks */
result->rows++;
if (stmt->update_max_length)
stmt_update_metadata(stmt, cur);
}
else
{
......@@ -3647,6 +3764,8 @@ int cli_read_binary_rows(MYSQL_STMT *stmt)
}
}
set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate);
err:
DBUG_RETURN(1);
}
......@@ -3909,6 +4028,49 @@ const char *STDCALL mysql_stmt_error(MYSQL_STMT * stmt)
DBUG_RETURN(stmt->last_error);
}
/*
Update meta data for statement
SYNOPSIS
stmt_update_metadata()
stmt Statement handler
row Binary data
NOTES
Only updates MYSQL_FIELD->max_length for strings
*/
static void stmt_update_metadata(MYSQL_STMT *stmt, MYSQL_ROWS *data)
{
MYSQL_BIND *bind, *end;
MYSQL_FIELD *field;
uchar *null_ptr, bit;
uchar *row= (uchar*) data->data;
uchar *row_end= row + data->length;
null_ptr= row;
row+= (stmt->field_count+9)/8; /* skip null bits */
bit= 4; /* first 2 bits are reserved */
/* Go throw all fields and calculate metadata */
for (bind= stmt->bind, end= bind + stmt->field_count, field= stmt->fields ;
bind < end ;
bind++, field++)
{
if (!(*null_ptr & bit))
(*bind->skip_result)(bind, field, &row);
DBUG_ASSERT(row <= row_end);
if (!((bit<<=1) & 255))
{
bit= 1; /* To next byte */
null_ptr++;
}
}
}
/********************************************************************
Transactional APIs
*********************************************************************/
......
......@@ -22,9 +22,9 @@ done
stop_default_ndbcluster() {
if [ ! -f $pidfile ] ; then
exit 0
fi
#if [ ! -f $pidfile ] ; then
# exit 0
#fi
if [ ! -f $cfgfile ] ; then
echo "$cfgfile missing"
......@@ -43,8 +43,11 @@ echo "all stop" | $exec_mgmtclient
sleep 5
kill `cat $pidfile`
rm $pidfile
if [ -f $pidfile ] ; then
kill `cat $pidfile`
rm $pidfile
fi
}
stop_default_ndbcluster
......
......@@ -119,3 +119,72 @@ select * from t1 order by a;
a b c
4 5 12
drop table t1;
CREATE TABLE t1 (
a int unsigned NOT NULL PRIMARY KEY,
b int unsigned not null,
c int unsigned not null,
) engine = ndb;
create index a1 on t1 (b, c);
insert into t1 values (1, 2, 13);
insert into t1 values (2,3, 13);
insert into t1 values (3, 4, 12);
insert into t1 values (4, 5, 12);
insert into t1 values (5,6, 12);
insert into t1 values (6,7, 12);
insert into t1 values (7, 2, 1);
insert into t1 values (8,3, 6);
insert into t1 values (9, 4, 12);
insert into t1 values (14, 5, 4);
insert into t1 values (15,5,5);
insert into t1 values (16,5, 6);
insert into t1 values (17,4,4);
insert into t1 values (18,1, 7);
select * from t1 order by a;
a b c
1 2 13
2 3 13
3 4 12
4 5 12
5 6 12
6 7 12
7 2 1
8 3 6
9 4 12
14 5 4
15 5 5
16 5 6
17 4 4
18 1 7
select * from t1 where b<=5 order by a;
a b c
1 2 13
2 3 13
3 4 12
4 5 12
7 2 1
8 3 6
9 4 12
14 5 4
15 5 5
16 5 6
17 4 4
18 1 7
select * from t1 where b<=5 and c=0;
a b c
insert into t1 values (19,4, 0);
select * from t1 where b<=5 and c=0;
a b c
19 4 0
select * from t1 where b=4 and c<=5;
a b c
19 4 0
17 4 4
select * from t1 where b<=4 and c<=5 order by a;
a b c
7 2 1
17 4 4
19 4 0
select * from t1 where b<=5 and c=0 or b<=5 and c=2;
a b c
19 4 0
drop table t1;
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
pk1 INT NOT NULL PRIMARY KEY,
b INT NOT NULL,
c INT NOT NULL
) ENGINE=ndbcluster;
INSERT INTO t1 VALUES (0, 0, 0);
SELECT * FROM t1;
pk1 b c
0 0 0
INSERT INTO t1 VALUES
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),
(11,11,11),(12,12,12),(13,13,13),(14,14,14),(15,15,15),
(16,16,16),(17,17,17),(18,18,18),(19,19,19),(20,20,20),
(21,21,21),(22,22,22),(23,23,23),(24,24,24),(25,25,25),
(26,26,26),(27,27,27),(28,28,28),(29,29,29),(30,30,30),
(31,31,31),(32,32,32),(33,33,33),(34,34,34),(35,35,35),
(36,36,36),(37,37,37),(38,38,38),(39,39,39),(40,40,40),
(41,41,41),(42,42,42),(43,43,43),(44,44,44),(45,45,45),
(46,46,46),(47,47,47),(48,48,48),(49,49,49),(50,50,50),
(51,51,51),(52,52,52),(53,53,53),(54,54,54),(55,55,55),
(56,56,56),(57,57,57),(58,58,58),(59,59,59),(60,60,60),
(61,61,61),(62,62,62),(63,63,63),(64,64,64),(65,65,65),
(66,66,66),(67,67,67),(68,68,68),(69,69,69),(70,70,70),
(71,71,71),(72,72,72),(73,73,73),(74,74,74),(75,75,75),
(76,76,76),(77,77,77),(78,78,78),(79,79,79),(80,80,80),
(81,81,81),(82,82,82),(83,83,83),(84,84,84),(85,85,85),
(86,86,86),(87,87,87),(88,88,88),(89,89,89),(90,90,90),
(91,91,91),(92,92,92),(93,93,93),(94,94,94),(95,95,95),
(96,96,96),(97,97,97),(98,98,98),(99,99,99),(100,100,100),
(101,101,101),(102,102,102),(103,103,103),(104,104,104),(105,105,105),
(106,106,106),(107,107,107),(108,108,108),(109,109,109),(110,110,110),
(111,111,111),(112,112,112),(113,113,113),(114,114,114),(115,115,115),
(116,116,116),(117,117,117),(118,118,118),(119,119,119),(120,120,120),
(121,121,121),(122,122,122),(123,123,123),(124,124,124),(125,125,125),
(126,126,126),(127,127,127),(128,128,128),(129,129,129),(130,130,130),
(131,131,131),(132,132,132),(133,133,133),(134,134,134),(135,135,135),
(136,136,136),(137,137,137),(138,138,138),(139,139,139),(140,140,140),
(141,141,141),(142,142,142),(143,143,143),(144,144,144),(145,145,145),
(146,146,146),(147,147,147),(148,148,148),(149,149,149),(150,150,150),
(151,151,151),(152,152,152),(153,153,153),(154,154,154),(155,155,155),
(156,156,156),(157,157,157),(158,158,158),(159,159,159),(160,160,160),
(161,161,161),(162,162,162),(163,163,163),(164,164,164),(165,165,165),
(166,166,166),(167,167,167),(168,168,168),(169,169,169),(170,170,170),
(171,171,171),(172,172,172),(173,173,173),(174,174,174),(175,175,175),
(176,176,176),(177,177,177),(178,178,178),(179,179,179),(180,180,180),
(181,181,181),(182,182,182),(183,183,183),(184,184,184),(185,185,185),
(186,186,186),(187,187,187),(188,188,188),(189,189,189),(190,190,190),
(191,191,191),(192,192,192),(193,193,193),(194,194,194),(195,195,195),
(196,196,196),(197,197,197),(198,198,198),(199,199,199),(200,200,200),
(201,201,201),(202,202,202),(203,203,203),(204,204,204),(205,205,205),
(206,206,206),(207,207,207),(208,208,208),(209,209,209),(210,210,210),
(211,211,211),(212,212,212),(213,213,213),(214,214,214),(215,215,215),
(216,216,216),(217,217,217),(218,218,218),(219,219,219),(220,220,220),
(221,221,221),(222,222,222),(223,223,223),(224,224,224),(225,225,225),
(226,226,226),(227,227,227),(228,228,228),(229,229,229),(230,230,230),
(231,231,231),(232,232,232),(233,233,233),(234,234,234),(235,235,235),
(236,236,236),(237,237,237),(238,238,238),(239,239,239),(240,240,240),
(241,241,241),(242,242,242),(243,243,243),(244,244,244),(245,245,245),
(246,246,246),(247,247,247),(248,248,248),(249,249,249),(250,250,250),
(251,251,251),(252,252,252),(253,253,253),(254,254,254),(255,255,255),
(256,256,256),(257,257,257),(258,258,258),(259,259,259),(260,260,260),
(261,261,261),(262,262,262),(263,263,263),(264,264,264),(265,265,265),
(266,266,266),(267,267,267),(268,268,268),(269,269,269),(270,270,270),
(271,271,271),(272,272,272),(273,273,273),(274,274,274),(275,275,275),
(276,276,276),(277,277,277),(278,278,278),(279,279,279),(280,280,280),
(281,281,281),(282,282,282),(283,283,283),(284,284,284),(285,285,285),
(286,286,286),(287,287,287),(288,288,288),(289,289,289),(290,290,290),
(291,291,291),(292,292,292),(293,293,293),(294,294,294),(295,295,295),
(296,296,296),(297,297,297),(298,298,298),(299,299,299),(300,300,300),
(301,301,301),(302,302,302),(303,303,303),(304,304,304),(305,305,305),
(306,306,306),(307,307,307),(308,308,308),(309,309,309),(310,310,310),
(311,311,311),(312,312,312),(313,313,313),(314,314,314),(315,315,315),
(316,316,316),(317,317,317),(318,318,318),(319,319,319),(320,320,320),
(321,321,321),(322,322,322),(323,323,323),(324,324,324),(325,325,325),
(326,326,326),(327,327,327),(328,328,328),(329,329,329),(330,330,330),
(331,331,331),(332,332,332),(333,333,333),(334,334,334),(335,335,335),
(336,336,336),(337,337,337),(338,338,338),(339,339,339),(340,340,340),
(341,341,341),(342,342,342),(343,343,343),(344,344,344),(345,345,345),
(346,346,346),(347,347,347),(348,348,348),(349,349,349),(350,350,350),
(351,351,351),(352,352,352),(353,353,353),(354,354,354),(355,355,355),
(356,356,356),(357,357,357),(358,358,358),(359,359,359),(360,360,360),
(361,361,361),(362,362,362),(363,363,363),(364,364,364),(365,365,365),
(366,366,366),(367,367,367),(368,368,368),(369,369,369),(370,370,370),
(371,371,371),(372,372,372),(373,373,373),(374,374,374),(375,375,375),
(376,376,376),(377,377,377),(378,378,378),(379,379,379),(380,380,380),
(381,381,381),(382,382,382),(383,383,383),(384,384,384),(385,385,385),
(386,386,386),(387,387,387),(388,388,388),(389,389,389),(390,390,390),
(391,391,391),(392,392,392),(393,393,393),(394,394,394),(395,395,395),
(396,396,396),(397,397,397),(398,398,398),(399,399,399),(400,400,400),
(401,401,401),(402,402,402),(403,403,403),(404,404,404),(405,405,405),
(406,406,406),(407,407,407),(408,408,408),(409,409,409),(410,410,410),
(411,411,411),(412,412,412),(413,413,413),(414,414,414),(415,415,415),
(416,416,416),(417,417,417),(418,418,418),(419,419,419),(420,420,420),
(421,421,421),(422,422,422),(423,423,423),(424,424,424),(425,425,425),
(426,426,426),(427,427,427),(428,428,428),(429,429,429),(430,430,430),
(431,431,431),(432,432,432),(433,433,433),(434,434,434),(435,435,435),
(436,436,436),(437,437,437),(438,438,438),(439,439,439),(440,440,440),
(441,441,441),(442,442,442),(443,443,443),(444,444,444),(445,445,445),
(446,446,446),(447,447,447),(448,448,448),(449,449,449),(450,450,450),
(451,451,451),(452,452,452),(453,453,453),(454,454,454),(455,455,455),
(456,456,456),(457,457,457),(458,458,458),(459,459,459),(460,460,460),
(461,461,461),(462,462,462),(463,463,463),(464,464,464),(465,465,465),
(466,466,466),(467,467,467),(468,468,468),(469,469,469),(470,470,470),
(471,471,471),(472,472,472),(473,473,473),(474,474,474),(475,475,475),
(476,476,476),(477,477,477),(478,478,478),(479,479,479),(480,480,480),
(481,481,481),(482,482,482),(483,483,483),(484,484,484),(485,485,485),
(486,486,486),(487,487,487),(488,488,488),(489,489,489),(490,490,490),
(491,491,491),(492,492,492),(493,493,493),(494,494,494),(495,495,495),
(496,496,496),(497,497,497),(498,498,498),(499,499,499),(500, 500, 500);
SELECT COUNT(*) FROM t1;
COUNT(*)
501
INSERT INTO t1 VALUES
(501,501,501),(502,502,502),(503,503,503),(504,504,504),(505,505,505),
(506,506,506),(507,507,507),(508,508,508),(509,509,509),(510,510,510),
(511,511,511),(512,512,512),(513,513,513),(514,514,514),(515,515,515),
(516,516,516),(517,517,517),(518,518,518),(519,519,519),(520,520,520),
(521,521,521),(522,522,522),(523,523,523),(524,524,524),(525,525,525),
(526,526,526),(527,527,527),(528,528,528),(529,529,529),(530,530,530),
(531,531,531),(532,532,532),(533,533,533),(534,534,534),(535,535,535),
(536,536,536),(537,537,537),(538,538,538),(539,539,539),(540,540,540),
(541,541,541),(542,542,542),(543,543,543),(544,544,544),(545,545,545),
(546,546,546),(547,547,547),(548,548,548),(549,549,549),(550,550,550),
(551,551,551),(552,552,552),(553,553,553),(554,554,554),(555,555,555),
(556,556,556),(557,557,557),(558,558,558),(559,559,559),(560,560,560),
(561,561,561),(562,562,562),(563,563,563),(564,564,564),(565,565,565),
(566,566,566),(567,567,567),(568,568,568),(569,569,569),(570,570,570),
(571,571,571),(572,572,572),(573,573,573),(574,574,574),(575,575,575),
(576,576,576),(577,577,577),(578,578,578),(579,579,579),(580,580,580),
(581,581,581),(582,582,582),(583,583,583),(584,584,584),(585,585,585),
(586,586,586),(587,587,587),(588,588,588),(589,589,589),(590,590,590),
(591,591,591),(592,592,592),(593,593,593),(594,594,594),(595,595,595),
(596,596,596),(597,597,597),(598,598,598),(599,599,599),(600,600,600),
(601,601,601),(602,602,602),(603,603,603),(604,604,604),(605,605,605),
(606,606,606),(607,607,607),(608,608,608),(609,609,609),(610,610,610),
(611,611,611),(612,612,612),(613,613,613),(614,614,614),(615,615,615),
(616,616,616),(617,617,617),(618,618,618),(619,619,619),(620,620,620),
(621,621,621),(622,622,622),(623,623,623),(624,624,624),(625,625,625),
(626,626,626),(627,627,627),(628,628,628),(629,629,629),(630,630,630),
(631,631,631),(632,632,632),(633,633,633),(634,634,634),(635,635,635),
(636,636,636),(637,637,637),(638,638,638),(639,639,639),(640,640,640),
(641,641,641),(642,642,642),(643,643,643),(644,644,644),(645,645,645),
(646,646,646),(647,647,647),(648,648,648),(649,649,649),(650,650,650),
(651,651,651),(652,652,652),(653,653,653),(654,654,654),(655,655,655),
(656,656,656),(657,657,657),(658,658,658),(659,659,659),(660,660,660),
(661,661,661),(662,662,662),(663,663,663),(664,664,664),(665,665,665),
(666,666,666),(667,667,667),(668,668,668),(669,669,669),(670,670,670),
(671,671,671),(672,672,672),(673,673,673),(674,674,674),(675,675,675),
(676,676,676),(677,677,677),(678,678,678),(679,679,679),(680,680,680),
(681,681,681),(682,682,682),(683,683,683),(684,684,684),(685,685,685),
(686,686,686),(687,687,687),(688,688,688),(689,689,689),(690,690,690),
(691,691,691),(692,692,692),(693,693,693),(694,694,694),(695,695,695),
(696,696,696),(697,697,697),(698,698,698),(699,699,699),(700,700,700),
(701,701,701),(702,702,702),(703,703,703),(704,704,704),(705,705,705),
(706,706,706),(707,707,707),(708,708,708),(709,709,709),(710,710,710),
(711,711,711),(712,712,712),(713,713,713),(714,714,714),(715,715,715),
(716,716,716),(717,717,717),(718,718,718),(719,719,719),(720,720,720),
(721,721,721),(722,722,722),(723,723,723),(724,724,724),(725,725,725),
(726,726,726),(727,727,727),(728,728,728),(729,729,729),(730,730,730),
(731,731,731),(732,732,732),(733,733,733),(734,734,734),(735,735,735),
(736,736,736),(737,737,737),(738,738,738),(739,739,739),(740,740,740),
(741,741,741),(742,742,742),(743,743,743),(744,744,744),(745,745,745),
(746,746,746),(747,747,747),(748,748,748),(749,749,749),(750,750,750),
(751,751,751),(752,752,752),(753,753,753),(754,754,754),(755,755,755),
(756,756,756),(757,757,757),(758,758,758),(759,759,759),(760,760,760),
(761,761,761),(762,762,762),(763,763,763),(764,764,764),(765,765,765),
(766,766,766),(767,767,767),(768,768,768),(769,769,769),(770,770,770),
(771,771,771),(772,772,772),(773,773,773),(774,774,774),(775,775,775),
(776,776,776),(777,777,777),(778,778,778),(779,779,779),(780,780,780),
(781,781,781),(782,782,782),(783,783,783),(784,784,784),(785,785,785),
(786,786,786),(787,787,787),(788,788,788),(789,789,789),(790,790,790),
(791,791,791),(792,792,792),(793,793,793),(794,794,794),(795,795,795),
(796,796,796),(797,797,797),(798,798,798),(799,799,799),(800,800,800),
(801,801,801),(802,802,802),(803,803,803),(804,804,804),(805,805,805),
(806,806,806),(807,807,807),(808,808,808),(809,809,809),(810,810,810),
(811,811,811),(812,812,812),(813,813,813),(814,814,814),(815,815,815),
(816,816,816),(817,817,817),(818,818,818),(819,819,819),(820,820,820),
(821,821,821),(822,822,822),(823,823,823),(824,824,824),(825,825,825),
(826,826,826),(827,827,827),(828,828,828),(829,829,829),(830,830,830),
(831,831,831),(832,832,832),(833,833,833),(834,834,834),(835,835,835),
(836,836,836),(837,837,837),(838,838,838),(839,839,839),(840,840,840),
(841,841,841),(842,842,842),(843,843,843),(844,844,844),(845,845,845),
(846,846,846),(847,847,847),(848,848,848),(849,849,849),(850,850,850),
(851,851,851),(852,852,852),(853,853,853),(854,854,854),(855,855,855),
(856,856,856),(857,857,857),(858,858,858),(859,859,859),(860,860,860),
(861,861,861),(862,862,862),(863,863,863),(864,864,864),(865,865,865),
(866,866,866),(867,867,867),(868,868,868),(869,869,869),(870,870,870),
(871,871,871),(872,872,872),(873,873,873),(874,874,874),(875,875,875),
(876,876,876),(877,877,877),(878,878,878),(879,879,879),(880,880,880),
(881,881,881),(882,882,882),(883,883,883),(884,884,884),(885,885,885),
(886,886,886),(887,887,887),(888,888,888),(889,889,889),(890,890,890),
(891,891,891),(892,892,892),(893,893,893),(894,894,894),(895,895,895),
(896,896,896),(897,897,897),(898,898,898),(899,899,899),(900,900,900),
(901,901,901),(902,902,902),(903,903,903),(904,904,904),(905,905,905),
(906,906,906),(907,907,907),(908,908,908),(909,909,909),(910,910,910),
(911,911,911),(912,912,912),(913,913,913),(914,914,914),(915,915,915),
(916,916,916),(917,917,917),(918,918,918),(919,919,919),(920,920,920),
(921,921,921),(922,922,922),(923,923,923),(924,924,924),(925,925,925),
(926,926,926),(927,927,927),(928,928,928),(929,929,929),(930,930,930),
(931,931,931),(932,932,932),(933,933,933),(934,934,934),(935,935,935),
(936,936,936),(937,937,937),(938,938,938),(939,939,939),(940,940,940),
(941,941,941),(942,942,942),(943,943,943),(944,944,944),(945,945,945),
(946,946,946),(947,947,947),(948,948,948),(949,949,949),(950,950,950),
(951,951,951),(952,952,952),(953,953,953),(954,954,954),(955,955,955),
(956,956,956),(957,957,957),(958,958,958),(959,959,959),(960,960,960),
(961,961,961),(962,962,962),(963,963,963),(964,964,964),(965,965,965),
(966,966,966),(967,967,967),(968,968,968),(969,969,969),(970,970,970),
(971,971,971),(972,972,972),(973,973,973),(974,974,974),(975,975,975),
(976,976,976),(977,977,977),(978,978,978),(979,979,979),(980,980,980),
(981,981,981),(982,982,982),(983,983,983),(984,984,984),(985,985,985),
(986,986,986),(987,987,987),(988,988,988),(989,989,989),(990,990,990),
(991,991,991),(992,992,992),(993,993,993),(994,994,994),(995,995,995),
(996,996,996),(997,997,997),(998,998,998),(999,999,999),(1000,1000,1000),
(1001,1001,1001),(1002,1002,1002),(1003,1003,1003),(1004,1004,1004),(1005,1005,1005),
(1006,1006,1006),(1007,1007,1007),(1008,1008,1008),(1009,1009,1009),(1010,1010,1010),
(1011,1011,1011),(1012,1012,1012),(1013,1013,1013),(1014,1014,1014),(1015,1015,1015),
(1016,1016,1016),(1017,1017,1017),(1018,1018,1018),(1019,1019,1019),(1020,1020,1020),
(1021,1021,1021),(1022,1022,1022),(1023,1023,1023),(1024,1024,1024),(1025,1025,1025),
(1026,1026,1026),(1027,1027,1027),(1028,1028,1028),(1029,1029,1029),(1030,1030,1030),
(1031,1031,1031),(1032,1032,1032),(1033,1033,1033),(1034,1034,1034),(1035,1035,1035),
(1036,1036,1036),(1037,1037,1037),(1038,1038,1038),(1039,1039,1039),(1040,1040,1040),
(1041,1041,1041),(1042,1042,1042),(1043,1043,1043),(1044,1044,1044),(1045,1045,1045),
(1046,1046,1046),(1047,1047,1047),(1048,1048,1048),(1049,1049,1049),(1050,1050,1050),
(1051,1051,1051),(1052,1052,1052),(1053,1053,1053),(1054,1054,1054),(1055,1055,1055),
(1056,1056,1056),(1057,1057,1057),(1058,1058,1058),(1059,1059,1059),(1060,1060,1060),
(1061,1061,1061),(1062,1062,1062),(1063,1063,1063),(1064,1064,1064),(1065,1065,1065),
(1066,1066,1066),(1067,1067,1067),(1068,1068,1068),(1069,1069,1069),(1070,1070,1070),
(1071,1071,1071),(1072,1072,1072),(1073,1073,1073),(1074,1074,1074),(1075,1075,1075),
(1076,1076,1076),(1077,1077,1077),(1078,1078,1078),(1079,1079,1079),(1080,1080,1080),
(1081,1081,1081),(1082,1082,1082),(1083,1083,1083),(1084,1084,1084),(1085,1085,1085),
(1086,1086,1086),(1087,1087,1087),(1088,1088,1088),(1089,1089,1089),(1090,1090,1090),
(1091,1091,1091),(1092,1092,1092),(1093,1093,1093),(1094,1094,1094),(1095,1095,1095),
(1096,1096,1096),(1097,1097,1097),(1098,1098,1098),(1099,1099,1099),(1100,1100,1100),
(1101,1101,1101),(1102,1102,1102),(1103,1103,1103),(1104,1104,1104),(1105,1105,1105),
(1106,1106,1106),(1107,1107,1107),(1108,1108,1108),(1109,1109,1109),(1110,1110,1110),
(1111,1111,1111),(1112,1112,1112),(1113,1113,1113),(1114,1114,1114),(1115,1115,1115),
(1116,1116,1116),(1117,1117,1117),(1118,1118,1118),(1119,1119,1119),(1120,1120,1120),
(1121,1121,1121),(1122,1122,1122),(1123,1123,1123),(1124,1124,1124),(1125,1125,1125),
(1126,1126,1126),(1127,1127,1127),(1128,1128,1128),(1129,1129,1129),(1130,1130,1130),
(1131,1131,1131),(1132,1132,1132),(1133,1133,1133),(1134,1134,1134),(1135,1135,1135),
(1136,1136,1136),(1137,1137,1137),(1138,1138,1138),(1139,1139,1139),(1140,1140,1140),
(1141,1141,1141),(1142,1142,1142),(1143,1143,1143),(1144,1144,1144),(1145,1145,1145),
(1146,1146,1146),(1147,1147,1147),(1148,1148,1148),(1149,1149,1149),(1150,1150,1150),
(1151,1151,1151),(1152,1152,1152),(1153,1153,1153),(1154,1154,1154),(1155,1155,1155),
(1156,1156,1156),(1157,1157,1157),(1158,1158,1158),(1159,1159,1159),(1160,1160,1160),
(1161,1161,1161),(1162,1162,1162),(1163,1163,1163),(1164,1164,1164),(1165,1165,1165),
(1166,1166,1166),(1167,1167,1167),(1168,1168,1168),(1169,1169,1169),(1170,1170,1170),
(1171,1171,1171),(1172,1172,1172),(1173,1173,1173),(1174,1174,1174),(1175,1175,1175),
(1176,1176,1176),(1177,1177,1177),(1178,1178,1178),(1179,1179,1179),(1180,1180,1180),
(1181,1181,1181),(1182,1182,1182),(1183,1183,1183),(1184,1184,1184),(1185,1185,1185),
(1186,1186,1186),(1187,1187,1187),(1188,1188,1188),(1189,1189,1189),(1190,1190,1190),
(1191,1191,1191),(1192,1192,1192),(1193,1193,1193),(1194,1194,1194),(1195,1195,1195),
(1196,1196,1196),(1197,1197,1197),(1198,1198,1198),(1199,1199,1199),(1200,1200,1200),
(1201,1201,1201),(1202,1202,1202),(1203,1203,1203),(1204,1204,1204),(1205,1205,1205),
(1206,1206,1206),(1207,1207,1207),(1208,1208,1208),(1209,1209,1209),(1210,1210,1210),
(1211,1211,1211),(1212,1212,1212),(1213,1213,1213),(1214,1214,1214),(1215,1215,1215),
(1216,1216,1216),(1217,1217,1217),(1218,1218,1218),(1219,1219,1219),(1220,1220,1220),
(1221,1221,1221),(1222,1222,1222),(1223,1223,1223),(1224,1224,1224),(1225,1225,1225),
(1226,1226,1226),(1227,1227,1227),(1228,1228,1228),(1229,1229,1229),(1230,1230,1230),
(1231,1231,1231),(1232,1232,1232),(1233,1233,1233),(1234,1234,1234),(1235,1235,1235),
(1236,1236,1236),(1237,1237,1237),(1238,1238,1238),(1239,1239,1239),(1240,1240,1240),
(1241,1241,1241),(1242,1242,1242),(1243,1243,1243),(1244,1244,1244),(1245,1245,1245),
(1246,1246,1246),(1247,1247,1247),(1248,1248,1248),(1249,1249,1249),(1250,1250,1250),
(1251,1251,1251),(1252,1252,1252),(1253,1253,1253),(1254,1254,1254),(1255,1255,1255),
(1256,1256,1256),(1257,1257,1257),(1258,1258,1258),(1259,1259,1259),(1260,1260,1260),
(1261,1261,1261),(1262,1262,1262),(1263,1263,1263),(1264,1264,1264),(1265,1265,1265),
(1266,1266,1266),(1267,1267,1267),(1268,1268,1268),(1269,1269,1269),(1270,1270,1270),
(1271,1271,1271),(1272,1272,1272),(1273,1273,1273),(1274,1274,1274),(1275,1275,1275),
(1276,1276,1276),(1277,1277,1277),(1278,1278,1278),(1279,1279,1279),(1280,1280,1280),
(1281,1281,1281),(1282,1282,1282),(1283,1283,1283),(1284,1284,1284),(1285,1285,1285),
(1286,1286,1286),(1287,1287,1287),(1288,1288,1288),(1289,1289,1289),(1290,1290,1290),
(1291,1291,1291),(1292,1292,1292),(1293,1293,1293),(1294,1294,1294),(1295,1295,1295),
(1296,1296,1296),(1297,1297,1297),(1298,1298,1298),(1299,1299,1299),(1300,1300,1300),
(1301,1301,1301),(1302,1302,1302),(1303,1303,1303),(1304,1304,1304),(1305,1305,1305),
(1306,1306,1306),(1307,1307,1307),(1308,1308,1308),(1309,1309,1309),(1310,1310,1310),
(1311,1311,1311),(1312,1312,1312),(1313,1313,1313),(1314,1314,1314),(1315,1315,1315),
(1316,1316,1316),(1317,1317,1317),(1318,1318,1318),(1319,1319,1319),(1320,1320,1320),
(1321,1321,1321),(1322,1322,1322),(1323,1323,1323),(1324,1324,1324),(1325,1325,1325),
(1326,1326,1326),(1327,1327,1327),(1328,1328,1328),(1329,1329,1329),(1330,1330,1330),
(1331,1331,1331),(1332,1332,1332),(1333,1333,1333),(1334,1334,1334),(1335,1335,1335),
(1336,1336,1336),(1337,1337,1337),(1338,1338,1338),(1339,1339,1339),(1340,1340,1340),
(1341,1341,1341),(1342,1342,1342),(1343,1343,1343),(1344,1344,1344),(1345,1345,1345),
(1346,1346,1346),(1347,1347,1347),(1348,1348,1348),(1349,1349,1349),(1350,1350,1350),
(1351,1351,1351),(1352,1352,1352),(1353,1353,1353),(1354,1354,1354),(1355,1355,1355),
(1356,1356,1356),(1357,1357,1357),(1358,1358,1358),(1359,1359,1359),(1360,1360,1360),
(1361,1361,1361),(1362,1362,1362),(1363,1363,1363),(1364,1364,1364),(1365,1365,1365),
(1366,1366,1366),(1367,1367,1367),(1368,1368,1368),(1369,1369,1369),(1370,1370,1370),
(1371,1371,1371),(1372,1372,1372),(1373,1373,1373),(1374,1374,1374),(1375,1375,1375),
(1376,1376,1376),(1377,1377,1377),(1378,1378,1378),(1379,1379,1379),(1380,1380,1380),
(1381,1381,1381),(1382,1382,1382),(1383,1383,1383),(1384,1384,1384),(1385,1385,1385),
(1386,1386,1386),(1387,1387,1387),(1388,1388,1388),(1389,1389,1389),(1390,1390,1390),
(1391,1391,1391),(1392,1392,1392),(1393,1393,1393),(1394,1394,1394),(1395,1395,1395),
(1396,1396,1396),(1397,1397,1397),(1398,1398,1398),(1399,1399,1399),(1400,1400,1400),
(1401,1401,1401),(1402,1402,1402),(1403,1403,1403),(1404,1404,1404),(1405,1405,1405),
(1406,1406,1406),(1407,1407,1407),(1408,1408,1408),(1409,1409,1409),(1410,1410,1410),
(1411,1411,1411),(1412,1412,1412),(1413,1413,1413),(1414,1414,1414),(1415,1415,1415),
(1416,1416,1416),(1417,1417,1417),(1418,1418,1418),(1419,1419,1419),(1420,1420,1420),
(1421,1421,1421),(1422,1422,1422),(1423,1423,1423),(1424,1424,1424),(1425,1425,1425),
(1426,1426,1426),(1427,1427,1427),(1428,1428,1428),(1429,1429,1429),(1430,1430,1430),
(1431,1431,1431),(1432,1432,1432),(1433,1433,1433),(1434,1434,1434),(1435,1435,1435),
(1436,1436,1436),(1437,1437,1437),(1438,1438,1438),(1439,1439,1439),(1440,1440,1440),
(1441,1441,1441),(1442,1442,1442),(1443,1443,1443),(1444,1444,1444),(1445,1445,1445),
(1446,1446,1446),(1447,1447,1447),(1448,1448,1448),(1449,1449,1449),(1450,1450,1450),
(1451,1451,1451),(1452,1452,1452),(1453,1453,1453),(1454,1454,1454),(1455,1455,1455),
(1456,1456,1456),(1457,1457,1457),(1458,1458,1458),(1459,1459,1459),(1460,1460,1460),
(1461,1461,1461),(1462,1462,1462),(1463,1463,1463),(1464,1464,1464),(1465,1465,1465),
(1466,1466,1466),(1467,1467,1467),(1468,1468,1468),(1469,1469,1469),(1470,1470,1470),
(1471,1471,1471),(1472,1472,1472),(1473,1473,1473),(1474,1474,1474),(1475,1475,1475),
(1476,1476,1476),(1477,1477,1477),(1478,1478,1478),(1479,1479,1479),(1480,1480,1480),
(1481,1481,1481),(1482,1482,1482),(1483,1483,1483),(1484,1484,1484),(1485,1485,1485),
(1486,1486,1486),(1487,1487,1487),(1488,1488,1488),(1489,1489,1489),(1490,1490,1490),
(1491,1491,1491),(1492,1492,1492),(1493,1493,1493),(1494,1494,1494),(1495,1495,1495),
(1496,1496,1496),(1497,1497,1497),(1498,1498,1498),(1499,1499,1499),(1500,1500,1500),
(1501,1501,1501),(1502,1502,1502),(1503,1503,1503),(1504,1504,1504),(1505,1505,1505),
(1506,1506,1506),(1507,1507,1507),(1508,1508,1508),(1509,1509,1509),(1510,1510,1510),
(1511,1511,1511),(1512,1512,1512),(1513,1513,1513),(1514,1514,1514),(1515,1515,1515),
(1516,1516,1516),(1517,1517,1517),(1518,1518,1518),(1519,1519,1519),(1520,1520,1520),
(1521,1521,1521),(1522,1522,1522),(1523,1523,1523),(1524,1524,1524),(1525,1525,1525),
(1526,1526,1526),(1527,1527,1527),(1528,1528,1528),(1529,1529,1529),(1530,1530,1530),
(1531,1531,1531),(1532,1532,1532),(1533,1533,1533),(1534,1534,1534),(1535,1535,1535),
(1536,1536,1536),(1537,1537,1537),(1538,1538,1538),(1539,1539,1539),(1540,1540,1540),
(1541,1541,1541),(1542,1542,1542),(1543,1543,1543),(1544,1544,1544),(1545,1545,1545),
(1546,1546,1546),(1547,1547,1547),(1548,1548,1548),(1549,1549,1549),(1550,1550,1550),
(1551,1551,1551),(1552,1552,1552),(1553,1553,1553),(1554,1554,1554),(1555,1555,1555),
(1556,1556,1556),(1557,1557,1557),(1558,1558,1558),(1559,1559,1559),(1560,1560,1560),
(1561,1561,1561),(1562,1562,1562),(1563,1563,1563),(1564,1564,1564),(1565,1565,1565),
(1566,1566,1566),(1567,1567,1567),(1568,1568,1568),(1569,1569,1569),(1570,1570,1570),
(1571,1571,1571),(1572,1572,1572),(1573,1573,1573),(1574,1574,1574),(1575,1575,1575),
(1576,1576,1576),(1577,1577,1577),(1578,1578,1578),(1579,1579,1579),(1580,1580,1580),
(1581,1581,1581),(1582,1582,1582),(1583,1583,1583),(1584,1584,1584),(1585,1585,1585),
(1586,1586,1586),(1587,1587,1587),(1588,1588,1588),(1589,1589,1589),(1590,1590,1590),
(1591,1591,1591),(1592,1592,1592),(1593,1593,1593),(1594,1594,1594),(1595,1595,1595),
(1596,1596,1596),(1597,1597,1597),(1598,1598,1598),(1599,1599,1599),(1600,1600,1600),
(1601,1601,1601),(1602,1602,1602),(1603,1603,1603),(1604,1604,1604),(1605,1605,1605),
(1606,1606,1606),(1607,1607,1607),(1608,1608,1608),(1609,1609,1609),(1610,1610,1610),
(1611,1611,1611),(1612,1612,1612),(1613,1613,1613),(1614,1614,1614),(1615,1615,1615),
(1616,1616,1616),(1617,1617,1617),(1618,1618,1618),(1619,1619,1619),(1620,1620,1620),
(1621,1621,1621),(1622,1622,1622),(1623,1623,1623),(1624,1624,1624),(1625,1625,1625),
(1626,1626,1626),(1627,1627,1627),(1628,1628,1628),(1629,1629,1629),(1630,1630,1630),
(1631,1631,1631),(1632,1632,1632),(1633,1633,1633),(1634,1634,1634),(1635,1635,1635),
(1636,1636,1636),(1637,1637,1637),(1638,1638,1638),(1639,1639,1639),(1640,1640,1640),
(1641,1641,1641),(1642,1642,1642),(1643,1643,1643),(1644,1644,1644),(1645,1645,1645),
(1646,1646,1646),(1647,1647,1647),(1648,1648,1648),(1649,1649,1649),(1650,1650,1650),
(1651,1651,1651),(1652,1652,1652),(1653,1653,1653),(1654,1654,1654),(1655,1655,1655),
(1656,1656,1656),(1657,1657,1657),(1658,1658,1658),(1659,1659,1659),(1660,1660,1660),
(1661,1661,1661),(1662,1662,1662),(1663,1663,1663),(1664,1664,1664),(1665,1665,1665),
(1666,1666,1666),(1667,1667,1667),(1668,1668,1668),(1669,1669,1669),(1670,1670,1670),
(1671,1671,1671),(1672,1672,1672),(1673,1673,1673),(1674,1674,1674),(1675,1675,1675),
(1676,1676,1676),(1677,1677,1677),(1678,1678,1678),(1679,1679,1679),(1680,1680,1680),
(1681,1681,1681),(1682,1682,1682),(1683,1683,1683),(1684,1684,1684),(1685,1685,1685),
(1686,1686,1686),(1687,1687,1687),(1688,1688,1688),(1689,1689,1689),(1690,1690,1690),
(1691,1691,1691),(1692,1692,1692),(1693,1693,1693),(1694,1694,1694),(1695,1695,1695),
(1696,1696,1696),(1697,1697,1697),(1698,1698,1698),(1699,1699,1699),(1700,1700,1700),
(1701,1701,1701),(1702,1702,1702),(1703,1703,1703),(1704,1704,1704),(1705,1705,1705),
(1706,1706,1706),(1707,1707,1707),(1708,1708,1708),(1709,1709,1709),(1710,1710,1710),
(1711,1711,1711),(1712,1712,1712),(1713,1713,1713),(1714,1714,1714),(1715,1715,1715),
(1716,1716,1716),(1717,1717,1717),(1718,1718,1718),(1719,1719,1719),(1720,1720,1720),
(1721,1721,1721),(1722,1722,1722),(1723,1723,1723),(1724,1724,1724),(1725,1725,1725),
(1726,1726,1726),(1727,1727,1727),(1728,1728,1728),(1729,1729,1729),(1730,1730,1730),
(1731,1731,1731),(1732,1732,1732),(1733,1733,1733),(1734,1734,1734),(1735,1735,1735),
(1736,1736,1736),(1737,1737,1737),(1738,1738,1738),(1739,1739,1739),(1740,1740,1740),
(1741,1741,1741),(1742,1742,1742),(1743,1743,1743),(1744,1744,1744),(1745,1745,1745),
(1746,1746,1746),(1747,1747,1747),(1748,1748,1748),(1749,1749,1749),(1750,1750,1750),
(1751,1751,1751),(1752,1752,1752),(1753,1753,1753),(1754,1754,1754),(1755,1755,1755),
(1756,1756,1756),(1757,1757,1757),(1758,1758,1758),(1759,1759,1759),(1760,1760,1760),
(1761,1761,1761),(1762,1762,1762),(1763,1763,1763),(1764,1764,1764),(1765,1765,1765),
(1766,1766,1766),(1767,1767,1767),(1768,1768,1768),(1769,1769,1769),(1770,1770,1770),
(1771,1771,1771),(1772,1772,1772),(1773,1773,1773),(1774,1774,1774),(1775,1775,1775),
(1776,1776,1776),(1777,1777,1777),(1778,1778,1778),(1779,1779,1779),(1780,1780,1780),
(1781,1781,1781),(1782,1782,1782),(1783,1783,1783),(1784,1784,1784),(1785,1785,1785),
(1786,1786,1786),(1787,1787,1787),(1788,1788,1788),(1789,1789,1789),(1790,1790,1790),
(1791,1791,1791),(1792,1792,1792),(1793,1793,1793),(1794,1794,1794),(1795,1795,1795),
(1796,1796,1796),(1797,1797,1797),(1798,1798,1798),(1799,1799,1799),(1800,1800,1800),
(1801,1801,1801),(1802,1802,1802),(1803,1803,1803),(1804,1804,1804),(1805,1805,1805),
(1806,1806,1806),(1807,1807,1807),(1808,1808,1808),(1809,1809,1809),(1810,1810,1810),
(1811,1811,1811),(1812,1812,1812),(1813,1813,1813),(1814,1814,1814),(1815,1815,1815),
(1816,1816,1816),(1817,1817,1817),(1818,1818,1818),(1819,1819,1819),(1820,1820,1820),
(1821,1821,1821),(1822,1822,1822),(1823,1823,1823),(1824,1824,1824),(1825,1825,1825),
(1826,1826,1826),(1827,1827,1827),(1828,1828,1828),(1829,1829,1829),(1830,1830,1830),
(1831,1831,1831),(1832,1832,1832),(1833,1833,1833),(1834,1834,1834),(1835,1835,1835),
(1836,1836,1836),(1837,1837,1837),(1838,1838,1838),(1839,1839,1839),(1840,1840,1840),
(1841,1841,1841),(1842,1842,1842),(1843,1843,1843),(1844,1844,1844),(1845,1845,1845),
(1846,1846,1846),(1847,1847,1847),(1848,1848,1848),(1849,1849,1849),(1850,1850,1850),
(1851,1851,1851),(1852,1852,1852),(1853,1853,1853),(1854,1854,1854),(1855,1855,1855),
(1856,1856,1856),(1857,1857,1857),(1858,1858,1858),(1859,1859,1859),(1860,1860,1860),
(1861,1861,1861),(1862,1862,1862),(1863,1863,1863),(1864,1864,1864),(1865,1865,1865),
(1866,1866,1866),(1867,1867,1867),(1868,1868,1868),(1869,1869,1869),(1870,1870,1870),
(1871,1871,1871),(1872,1872,1872),(1873,1873,1873),(1874,1874,1874),(1875,1875,1875),
(1876,1876,1876),(1877,1877,1877),(1878,1878,1878),(1879,1879,1879),(1880,1880,1880),
(1881,1881,1881),(1882,1882,1882),(1883,1883,1883),(1884,1884,1884),(1885,1885,1885),
(1886,1886,1886),(1887,1887,1887),(1888,1888,1888),(1889,1889,1889),(1890,1890,1890),
(1891,1891,1891),(1892,1892,1892),(1893,1893,1893),(1894,1894,1894),(1895,1895,1895),
(1896,1896,1896),(1897,1897,1897),(1898,1898,1898),(1899,1899,1899),(1900,1900,1900),
(1901,1901,1901),(1902,1902,1902),(1903,1903,1903),(1904,1904,1904),(1905,1905,1905),
(1906,1906,1906),(1907,1907,1907),(1908,1908,1908),(1909,1909,1909),(1910,1910,1910),
(1911,1911,1911),(1912,1912,1912),(1913,1913,1913),(1914,1914,1914),(1915,1915,1915),
(1916,1916,1916),(1917,1917,1917),(1918,1918,1918),(1919,1919,1919),(1920,1920,1920),
(1921,1921,1921),(1922,1922,1922),(1923,1923,1923),(1924,1924,1924),(1925,1925,1925),
(1926,1926,1926),(1927,1927,1927),(1928,1928,1928),(1929,1929,1929),(1930,1930,1930),
(1931,1931,1931),(1932,1932,1932),(1933,1933,1933),(1934,1934,1934),(1935,1935,1935),
(1936,1936,1936),(1937,1937,1937),(1938,1938,1938),(1939,1939,1939),(1940,1940,1940),
(1941,1941,1941),(1942,1942,1942),(1943,1943,1943),(1944,1944,1944),(1945,1945,1945),
(1946,1946,1946),(1947,1947,1947),(1948,1948,1948),(1949,1949,1949),(1950,1950,1950),
(1951,1951,1951),(1952,1952,1952),(1953,1953,1953),(1954,1954,1954),(1955,1955,1955),
(1956,1956,1956),(1957,1957,1957),(1958,1958,1958),(1959,1959,1959),(1960,1960,1960),
(1961,1961,1961),(1962,1962,1962),(1963,1963,1963),(1964,1964,1964),(1965,1965,1965),
(1966,1966,1966),(1967,1967,1967),(1968,1968,1968),(1969,1969,1969),(1970,1970,1970),
(1971,1971,1971),(1972,1972,1972),(1973,1973,1973),(1974,1974,1974),(1975,1975,1975),
(1976,1976,1976),(1977,1977,1977),(1978,1978,1978),(1979,1979,1979),(1980,1980,1980),
(1981,1981,1981),(1982,1982,1982),(1983,1983,1983),(1984,1984,1984),(1985,1985,1985),
(1986,1986,1986),(1987,1987,1987),(1988,1988,1988),(1989,1989,1989),(1990,1990,1990),
(1991,1991,1991),(1992,1992,1992),(1993,1993,1993),(1994,1994,1994),(1995,1995,1995),
(1996,1996,1996),(1997,1997,1997),(1998,1998,1998),(1999,1999,1999);
SELECT COUNT(*) FROM t1;
COUNT(*)
2000
DROP TABLE t1;
......@@ -32,7 +32,7 @@ select * from t1 where b <= 4 order by b;
# Update using ordered index scan
#
# MASV update t1 set c = 3 where b = 3;
update t1 set c = 3 where b = 3;
select * from t1 order by a;
update t1 set c = 10 where b >= 6;
select * from t1 order by a;
......@@ -59,7 +59,7 @@ CREATE TABLE t1 (
insert t1 values(1, 2, 13), (2,3, 13), (3, 4, 12), (4, 5, 12), (5,6, 12), (6,7, 12);
# MASV delete from t1 where b = 3;
delete from t1 where b = 3;
select * from t1 order by a;
delete from t1 where b >= 6;
select * from t1 order by a;
......@@ -97,11 +97,16 @@ insert into t1 values (14, 5, 4);
insert into t1 values (15,5,5);
insert into t1 values (16,5, 6);
insert into t1 values (17,4,4);
insert into t1 values (18,1, 7);
select * from t1 order by a;
select * from t1 where b<=5;
#select * from t1 where b<=5 and c=0;
#select * from t1 where b=4 and c<=5;
select * from t1 where b<=4 and c<=5;
# MASV select * from t1 where b<=5 and c=0 or b<=5 and c=2;
select * from t1 where b<=5 order by a;
select * from t1 where b<=5 and c=0;
insert into t1 values (19,4, 0);
select * from t1 where b<=5 and c=0;
select * from t1 where b=4 and c<=5;
select * from t1 where b<=4 and c<=5 order by a;
select * from t1 where b<=5 and c=0 or b<=5 and c=2;
drop table t1;
-- source include/have_ndb.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
#
# Basic test of INSERT in NDB
#
#
# Create a normal table with primary key
#
CREATE TABLE t1 (
pk1 INT NOT NULL PRIMARY KEY,
b INT NOT NULL,
c INT NOT NULL
) ENGINE=ndbcluster;
INSERT INTO t1 VALUES (0, 0, 0);
SELECT * FROM t1;
INSERT INTO t1 VALUES
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10),
(11,11,11),(12,12,12),(13,13,13),(14,14,14),(15,15,15),
(16,16,16),(17,17,17),(18,18,18),(19,19,19),(20,20,20),
(21,21,21),(22,22,22),(23,23,23),(24,24,24),(25,25,25),
(26,26,26),(27,27,27),(28,28,28),(29,29,29),(30,30,30),
(31,31,31),(32,32,32),(33,33,33),(34,34,34),(35,35,35),
(36,36,36),(37,37,37),(38,38,38),(39,39,39),(40,40,40),
(41,41,41),(42,42,42),(43,43,43),(44,44,44),(45,45,45),
(46,46,46),(47,47,47),(48,48,48),(49,49,49),(50,50,50),
(51,51,51),(52,52,52),(53,53,53),(54,54,54),(55,55,55),
(56,56,56),(57,57,57),(58,58,58),(59,59,59),(60,60,60),
(61,61,61),(62,62,62),(63,63,63),(64,64,64),(65,65,65),
(66,66,66),(67,67,67),(68,68,68),(69,69,69),(70,70,70),
(71,71,71),(72,72,72),(73,73,73),(74,74,74),(75,75,75),
(76,76,76),(77,77,77),(78,78,78),(79,79,79),(80,80,80),
(81,81,81),(82,82,82),(83,83,83),(84,84,84),(85,85,85),
(86,86,86),(87,87,87),(88,88,88),(89,89,89),(90,90,90),
(91,91,91),(92,92,92),(93,93,93),(94,94,94),(95,95,95),
(96,96,96),(97,97,97),(98,98,98),(99,99,99),(100,100,100),
(101,101,101),(102,102,102),(103,103,103),(104,104,104),(105,105,105),
(106,106,106),(107,107,107),(108,108,108),(109,109,109),(110,110,110),
(111,111,111),(112,112,112),(113,113,113),(114,114,114),(115,115,115),
(116,116,116),(117,117,117),(118,118,118),(119,119,119),(120,120,120),
(121,121,121),(122,122,122),(123,123,123),(124,124,124),(125,125,125),
(126,126,126),(127,127,127),(128,128,128),(129,129,129),(130,130,130),
(131,131,131),(132,132,132),(133,133,133),(134,134,134),(135,135,135),
(136,136,136),(137,137,137),(138,138,138),(139,139,139),(140,140,140),
(141,141,141),(142,142,142),(143,143,143),(144,144,144),(145,145,145),
(146,146,146),(147,147,147),(148,148,148),(149,149,149),(150,150,150),
(151,151,151),(152,152,152),(153,153,153),(154,154,154),(155,155,155),
(156,156,156),(157,157,157),(158,158,158),(159,159,159),(160,160,160),
(161,161,161),(162,162,162),(163,163,163),(164,164,164),(165,165,165),
(166,166,166),(167,167,167),(168,168,168),(169,169,169),(170,170,170),
(171,171,171),(172,172,172),(173,173,173),(174,174,174),(175,175,175),
(176,176,176),(177,177,177),(178,178,178),(179,179,179),(180,180,180),
(181,181,181),(182,182,182),(183,183,183),(184,184,184),(185,185,185),
(186,186,186),(187,187,187),(188,188,188),(189,189,189),(190,190,190),
(191,191,191),(192,192,192),(193,193,193),(194,194,194),(195,195,195),
(196,196,196),(197,197,197),(198,198,198),(199,199,199),(200,200,200),
(201,201,201),(202,202,202),(203,203,203),(204,204,204),(205,205,205),
(206,206,206),(207,207,207),(208,208,208),(209,209,209),(210,210,210),
(211,211,211),(212,212,212),(213,213,213),(214,214,214),(215,215,215),
(216,216,216),(217,217,217),(218,218,218),(219,219,219),(220,220,220),
(221,221,221),(222,222,222),(223,223,223),(224,224,224),(225,225,225),
(226,226,226),(227,227,227),(228,228,228),(229,229,229),(230,230,230),
(231,231,231),(232,232,232),(233,233,233),(234,234,234),(235,235,235),
(236,236,236),(237,237,237),(238,238,238),(239,239,239),(240,240,240),
(241,241,241),(242,242,242),(243,243,243),(244,244,244),(245,245,245),
(246,246,246),(247,247,247),(248,248,248),(249,249,249),(250,250,250),
(251,251,251),(252,252,252),(253,253,253),(254,254,254),(255,255,255),
(256,256,256),(257,257,257),(258,258,258),(259,259,259),(260,260,260),
(261,261,261),(262,262,262),(263,263,263),(264,264,264),(265,265,265),
(266,266,266),(267,267,267),(268,268,268),(269,269,269),(270,270,270),
(271,271,271),(272,272,272),(273,273,273),(274,274,274),(275,275,275),
(276,276,276),(277,277,277),(278,278,278),(279,279,279),(280,280,280),
(281,281,281),(282,282,282),(283,283,283),(284,284,284),(285,285,285),
(286,286,286),(287,287,287),(288,288,288),(289,289,289),(290,290,290),
(291,291,291),(292,292,292),(293,293,293),(294,294,294),(295,295,295),
(296,296,296),(297,297,297),(298,298,298),(299,299,299),(300,300,300),
(301,301,301),(302,302,302),(303,303,303),(304,304,304),(305,305,305),
(306,306,306),(307,307,307),(308,308,308),(309,309,309),(310,310,310),
(311,311,311),(312,312,312),(313,313,313),(314,314,314),(315,315,315),
(316,316,316),(317,317,317),(318,318,318),(319,319,319),(320,320,320),
(321,321,321),(322,322,322),(323,323,323),(324,324,324),(325,325,325),
(326,326,326),(327,327,327),(328,328,328),(329,329,329),(330,330,330),
(331,331,331),(332,332,332),(333,333,333),(334,334,334),(335,335,335),
(336,336,336),(337,337,337),(338,338,338),(339,339,339),(340,340,340),
(341,341,341),(342,342,342),(343,343,343),(344,344,344),(345,345,345),
(346,346,346),(347,347,347),(348,348,348),(349,349,349),(350,350,350),
(351,351,351),(352,352,352),(353,353,353),(354,354,354),(355,355,355),
(356,356,356),(357,357,357),(358,358,358),(359,359,359),(360,360,360),
(361,361,361),(362,362,362),(363,363,363),(364,364,364),(365,365,365),
(366,366,366),(367,367,367),(368,368,368),(369,369,369),(370,370,370),
(371,371,371),(372,372,372),(373,373,373),(374,374,374),(375,375,375),
(376,376,376),(377,377,377),(378,378,378),(379,379,379),(380,380,380),
(381,381,381),(382,382,382),(383,383,383),(384,384,384),(385,385,385),
(386,386,386),(387,387,387),(388,388,388),(389,389,389),(390,390,390),
(391,391,391),(392,392,392),(393,393,393),(394,394,394),(395,395,395),
(396,396,396),(397,397,397),(398,398,398),(399,399,399),(400,400,400),
(401,401,401),(402,402,402),(403,403,403),(404,404,404),(405,405,405),
(406,406,406),(407,407,407),(408,408,408),(409,409,409),(410,410,410),
(411,411,411),(412,412,412),(413,413,413),(414,414,414),(415,415,415),
(416,416,416),(417,417,417),(418,418,418),(419,419,419),(420,420,420),
(421,421,421),(422,422,422),(423,423,423),(424,424,424),(425,425,425),
(426,426,426),(427,427,427),(428,428,428),(429,429,429),(430,430,430),
(431,431,431),(432,432,432),(433,433,433),(434,434,434),(435,435,435),
(436,436,436),(437,437,437),(438,438,438),(439,439,439),(440,440,440),
(441,441,441),(442,442,442),(443,443,443),(444,444,444),(445,445,445),
(446,446,446),(447,447,447),(448,448,448),(449,449,449),(450,450,450),
(451,451,451),(452,452,452),(453,453,453),(454,454,454),(455,455,455),
(456,456,456),(457,457,457),(458,458,458),(459,459,459),(460,460,460),
(461,461,461),(462,462,462),(463,463,463),(464,464,464),(465,465,465),
(466,466,466),(467,467,467),(468,468,468),(469,469,469),(470,470,470),
(471,471,471),(472,472,472),(473,473,473),(474,474,474),(475,475,475),
(476,476,476),(477,477,477),(478,478,478),(479,479,479),(480,480,480),
(481,481,481),(482,482,482),(483,483,483),(484,484,484),(485,485,485),
(486,486,486),(487,487,487),(488,488,488),(489,489,489),(490,490,490),
(491,491,491),(492,492,492),(493,493,493),(494,494,494),(495,495,495),
(496,496,496),(497,497,497),(498,498,498),(499,499,499),(500, 500, 500);
SELECT COUNT(*) FROM t1;
INSERT INTO t1 VALUES
(501,501,501),(502,502,502),(503,503,503),(504,504,504),(505,505,505),
(506,506,506),(507,507,507),(508,508,508),(509,509,509),(510,510,510),
(511,511,511),(512,512,512),(513,513,513),(514,514,514),(515,515,515),
(516,516,516),(517,517,517),(518,518,518),(519,519,519),(520,520,520),
(521,521,521),(522,522,522),(523,523,523),(524,524,524),(525,525,525),
(526,526,526),(527,527,527),(528,528,528),(529,529,529),(530,530,530),
(531,531,531),(532,532,532),(533,533,533),(534,534,534),(535,535,535),
(536,536,536),(537,537,537),(538,538,538),(539,539,539),(540,540,540),
(541,541,541),(542,542,542),(543,543,543),(544,544,544),(545,545,545),
(546,546,546),(547,547,547),(548,548,548),(549,549,549),(550,550,550),
(551,551,551),(552,552,552),(553,553,553),(554,554,554),(555,555,555),
(556,556,556),(557,557,557),(558,558,558),(559,559,559),(560,560,560),
(561,561,561),(562,562,562),(563,563,563),(564,564,564),(565,565,565),
(566,566,566),(567,567,567),(568,568,568),(569,569,569),(570,570,570),
(571,571,571),(572,572,572),(573,573,573),(574,574,574),(575,575,575),
(576,576,576),(577,577,577),(578,578,578),(579,579,579),(580,580,580),
(581,581,581),(582,582,582),(583,583,583),(584,584,584),(585,585,585),
(586,586,586),(587,587,587),(588,588,588),(589,589,589),(590,590,590),
(591,591,591),(592,592,592),(593,593,593),(594,594,594),(595,595,595),
(596,596,596),(597,597,597),(598,598,598),(599,599,599),(600,600,600),
(601,601,601),(602,602,602),(603,603,603),(604,604,604),(605,605,605),
(606,606,606),(607,607,607),(608,608,608),(609,609,609),(610,610,610),
(611,611,611),(612,612,612),(613,613,613),(614,614,614),(615,615,615),
(616,616,616),(617,617,617),(618,618,618),(619,619,619),(620,620,620),
(621,621,621),(622,622,622),(623,623,623),(624,624,624),(625,625,625),
(626,626,626),(627,627,627),(628,628,628),(629,629,629),(630,630,630),
(631,631,631),(632,632,632),(633,633,633),(634,634,634),(635,635,635),
(636,636,636),(637,637,637),(638,638,638),(639,639,639),(640,640,640),
(641,641,641),(642,642,642),(643,643,643),(644,644,644),(645,645,645),
(646,646,646),(647,647,647),(648,648,648),(649,649,649),(650,650,650),
(651,651,651),(652,652,652),(653,653,653),(654,654,654),(655,655,655),
(656,656,656),(657,657,657),(658,658,658),(659,659,659),(660,660,660),
(661,661,661),(662,662,662),(663,663,663),(664,664,664),(665,665,665),
(666,666,666),(667,667,667),(668,668,668),(669,669,669),(670,670,670),
(671,671,671),(672,672,672),(673,673,673),(674,674,674),(675,675,675),
(676,676,676),(677,677,677),(678,678,678),(679,679,679),(680,680,680),
(681,681,681),(682,682,682),(683,683,683),(684,684,684),(685,685,685),
(686,686,686),(687,687,687),(688,688,688),(689,689,689),(690,690,690),
(691,691,691),(692,692,692),(693,693,693),(694,694,694),(695,695,695),
(696,696,696),(697,697,697),(698,698,698),(699,699,699),(700,700,700),
(701,701,701),(702,702,702),(703,703,703),(704,704,704),(705,705,705),
(706,706,706),(707,707,707),(708,708,708),(709,709,709),(710,710,710),
(711,711,711),(712,712,712),(713,713,713),(714,714,714),(715,715,715),
(716,716,716),(717,717,717),(718,718,718),(719,719,719),(720,720,720),
(721,721,721),(722,722,722),(723,723,723),(724,724,724),(725,725,725),
(726,726,726),(727,727,727),(728,728,728),(729,729,729),(730,730,730),
(731,731,731),(732,732,732),(733,733,733),(734,734,734),(735,735,735),
(736,736,736),(737,737,737),(738,738,738),(739,739,739),(740,740,740),
(741,741,741),(742,742,742),(743,743,743),(744,744,744),(745,745,745),
(746,746,746),(747,747,747),(748,748,748),(749,749,749),(750,750,750),
(751,751,751),(752,752,752),(753,753,753),(754,754,754),(755,755,755),
(756,756,756),(757,757,757),(758,758,758),(759,759,759),(760,760,760),
(761,761,761),(762,762,762),(763,763,763),(764,764,764),(765,765,765),
(766,766,766),(767,767,767),(768,768,768),(769,769,769),(770,770,770),
(771,771,771),(772,772,772),(773,773,773),(774,774,774),(775,775,775),
(776,776,776),(777,777,777),(778,778,778),(779,779,779),(780,780,780),
(781,781,781),(782,782,782),(783,783,783),(784,784,784),(785,785,785),
(786,786,786),(787,787,787),(788,788,788),(789,789,789),(790,790,790),
(791,791,791),(792,792,792),(793,793,793),(794,794,794),(795,795,795),
(796,796,796),(797,797,797),(798,798,798),(799,799,799),(800,800,800),
(801,801,801),(802,802,802),(803,803,803),(804,804,804),(805,805,805),
(806,806,806),(807,807,807),(808,808,808),(809,809,809),(810,810,810),
(811,811,811),(812,812,812),(813,813,813),(814,814,814),(815,815,815),
(816,816,816),(817,817,817),(818,818,818),(819,819,819),(820,820,820),
(821,821,821),(822,822,822),(823,823,823),(824,824,824),(825,825,825),
(826,826,826),(827,827,827),(828,828,828),(829,829,829),(830,830,830),
(831,831,831),(832,832,832),(833,833,833),(834,834,834),(835,835,835),
(836,836,836),(837,837,837),(838,838,838),(839,839,839),(840,840,840),
(841,841,841),(842,842,842),(843,843,843),(844,844,844),(845,845,845),
(846,846,846),(847,847,847),(848,848,848),(849,849,849),(850,850,850),
(851,851,851),(852,852,852),(853,853,853),(854,854,854),(855,855,855),
(856,856,856),(857,857,857),(858,858,858),(859,859,859),(860,860,860),
(861,861,861),(862,862,862),(863,863,863),(864,864,864),(865,865,865),
(866,866,866),(867,867,867),(868,868,868),(869,869,869),(870,870,870),
(871,871,871),(872,872,872),(873,873,873),(874,874,874),(875,875,875),
(876,876,876),(877,877,877),(878,878,878),(879,879,879),(880,880,880),
(881,881,881),(882,882,882),(883,883,883),(884,884,884),(885,885,885),
(886,886,886),(887,887,887),(888,888,888),(889,889,889),(890,890,890),
(891,891,891),(892,892,892),(893,893,893),(894,894,894),(895,895,895),
(896,896,896),(897,897,897),(898,898,898),(899,899,899),(900,900,900),
(901,901,901),(902,902,902),(903,903,903),(904,904,904),(905,905,905),
(906,906,906),(907,907,907),(908,908,908),(909,909,909),(910,910,910),
(911,911,911),(912,912,912),(913,913,913),(914,914,914),(915,915,915),
(916,916,916),(917,917,917),(918,918,918),(919,919,919),(920,920,920),
(921,921,921),(922,922,922),(923,923,923),(924,924,924),(925,925,925),
(926,926,926),(927,927,927),(928,928,928),(929,929,929),(930,930,930),
(931,931,931),(932,932,932),(933,933,933),(934,934,934),(935,935,935),
(936,936,936),(937,937,937),(938,938,938),(939,939,939),(940,940,940),
(941,941,941),(942,942,942),(943,943,943),(944,944,944),(945,945,945),
(946,946,946),(947,947,947),(948,948,948),(949,949,949),(950,950,950),
(951,951,951),(952,952,952),(953,953,953),(954,954,954),(955,955,955),
(956,956,956),(957,957,957),(958,958,958),(959,959,959),(960,960,960),
(961,961,961),(962,962,962),(963,963,963),(964,964,964),(965,965,965),
(966,966,966),(967,967,967),(968,968,968),(969,969,969),(970,970,970),
(971,971,971),(972,972,972),(973,973,973),(974,974,974),(975,975,975),
(976,976,976),(977,977,977),(978,978,978),(979,979,979),(980,980,980),
(981,981,981),(982,982,982),(983,983,983),(984,984,984),(985,985,985),
(986,986,986),(987,987,987),(988,988,988),(989,989,989),(990,990,990),
(991,991,991),(992,992,992),(993,993,993),(994,994,994),(995,995,995),
(996,996,996),(997,997,997),(998,998,998),(999,999,999),(1000,1000,1000),
(1001,1001,1001),(1002,1002,1002),(1003,1003,1003),(1004,1004,1004),(1005,1005,1005),
(1006,1006,1006),(1007,1007,1007),(1008,1008,1008),(1009,1009,1009),(1010,1010,1010),
(1011,1011,1011),(1012,1012,1012),(1013,1013,1013),(1014,1014,1014),(1015,1015,1015),
(1016,1016,1016),(1017,1017,1017),(1018,1018,1018),(1019,1019,1019),(1020,1020,1020),
(1021,1021,1021),(1022,1022,1022),(1023,1023,1023),(1024,1024,1024),(1025,1025,1025),
(1026,1026,1026),(1027,1027,1027),(1028,1028,1028),(1029,1029,1029),(1030,1030,1030),
(1031,1031,1031),(1032,1032,1032),(1033,1033,1033),(1034,1034,1034),(1035,1035,1035),
(1036,1036,1036),(1037,1037,1037),(1038,1038,1038),(1039,1039,1039),(1040,1040,1040),
(1041,1041,1041),(1042,1042,1042),(1043,1043,1043),(1044,1044,1044),(1045,1045,1045),
(1046,1046,1046),(1047,1047,1047),(1048,1048,1048),(1049,1049,1049),(1050,1050,1050),
(1051,1051,1051),(1052,1052,1052),(1053,1053,1053),(1054,1054,1054),(1055,1055,1055),
(1056,1056,1056),(1057,1057,1057),(1058,1058,1058),(1059,1059,1059),(1060,1060,1060),
(1061,1061,1061),(1062,1062,1062),(1063,1063,1063),(1064,1064,1064),(1065,1065,1065),
(1066,1066,1066),(1067,1067,1067),(1068,1068,1068),(1069,1069,1069),(1070,1070,1070),
(1071,1071,1071),(1072,1072,1072),(1073,1073,1073),(1074,1074,1074),(1075,1075,1075),
(1076,1076,1076),(1077,1077,1077),(1078,1078,1078),(1079,1079,1079),(1080,1080,1080),
(1081,1081,1081),(1082,1082,1082),(1083,1083,1083),(1084,1084,1084),(1085,1085,1085),
(1086,1086,1086),(1087,1087,1087),(1088,1088,1088),(1089,1089,1089),(1090,1090,1090),
(1091,1091,1091),(1092,1092,1092),(1093,1093,1093),(1094,1094,1094),(1095,1095,1095),
(1096,1096,1096),(1097,1097,1097),(1098,1098,1098),(1099,1099,1099),(1100,1100,1100),
(1101,1101,1101),(1102,1102,1102),(1103,1103,1103),(1104,1104,1104),(1105,1105,1105),
(1106,1106,1106),(1107,1107,1107),(1108,1108,1108),(1109,1109,1109),(1110,1110,1110),
(1111,1111,1111),(1112,1112,1112),(1113,1113,1113),(1114,1114,1114),(1115,1115,1115),
(1116,1116,1116),(1117,1117,1117),(1118,1118,1118),(1119,1119,1119),(1120,1120,1120),
(1121,1121,1121),(1122,1122,1122),(1123,1123,1123),(1124,1124,1124),(1125,1125,1125),
(1126,1126,1126),(1127,1127,1127),(1128,1128,1128),(1129,1129,1129),(1130,1130,1130),
(1131,1131,1131),(1132,1132,1132),(1133,1133,1133),(1134,1134,1134),(1135,1135,1135),
(1136,1136,1136),(1137,1137,1137),(1138,1138,1138),(1139,1139,1139),(1140,1140,1140),
(1141,1141,1141),(1142,1142,1142),(1143,1143,1143),(1144,1144,1144),(1145,1145,1145),
(1146,1146,1146),(1147,1147,1147),(1148,1148,1148),(1149,1149,1149),(1150,1150,1150),
(1151,1151,1151),(1152,1152,1152),(1153,1153,1153),(1154,1154,1154),(1155,1155,1155),
(1156,1156,1156),(1157,1157,1157),(1158,1158,1158),(1159,1159,1159),(1160,1160,1160),
(1161,1161,1161),(1162,1162,1162),(1163,1163,1163),(1164,1164,1164),(1165,1165,1165),
(1166,1166,1166),(1167,1167,1167),(1168,1168,1168),(1169,1169,1169),(1170,1170,1170),
(1171,1171,1171),(1172,1172,1172),(1173,1173,1173),(1174,1174,1174),(1175,1175,1175),
(1176,1176,1176),(1177,1177,1177),(1178,1178,1178),(1179,1179,1179),(1180,1180,1180),
(1181,1181,1181),(1182,1182,1182),(1183,1183,1183),(1184,1184,1184),(1185,1185,1185),
(1186,1186,1186),(1187,1187,1187),(1188,1188,1188),(1189,1189,1189),(1190,1190,1190),
(1191,1191,1191),(1192,1192,1192),(1193,1193,1193),(1194,1194,1194),(1195,1195,1195),
(1196,1196,1196),(1197,1197,1197),(1198,1198,1198),(1199,1199,1199),(1200,1200,1200),
(1201,1201,1201),(1202,1202,1202),(1203,1203,1203),(1204,1204,1204),(1205,1205,1205),
(1206,1206,1206),(1207,1207,1207),(1208,1208,1208),(1209,1209,1209),(1210,1210,1210),
(1211,1211,1211),(1212,1212,1212),(1213,1213,1213),(1214,1214,1214),(1215,1215,1215),
(1216,1216,1216),(1217,1217,1217),(1218,1218,1218),(1219,1219,1219),(1220,1220,1220),
(1221,1221,1221),(1222,1222,1222),(1223,1223,1223),(1224,1224,1224),(1225,1225,1225),
(1226,1226,1226),(1227,1227,1227),(1228,1228,1228),(1229,1229,1229),(1230,1230,1230),
(1231,1231,1231),(1232,1232,1232),(1233,1233,1233),(1234,1234,1234),(1235,1235,1235),
(1236,1236,1236),(1237,1237,1237),(1238,1238,1238),(1239,1239,1239),(1240,1240,1240),
(1241,1241,1241),(1242,1242,1242),(1243,1243,1243),(1244,1244,1244),(1245,1245,1245),
(1246,1246,1246),(1247,1247,1247),(1248,1248,1248),(1249,1249,1249),(1250,1250,1250),
(1251,1251,1251),(1252,1252,1252),(1253,1253,1253),(1254,1254,1254),(1255,1255,1255),
(1256,1256,1256),(1257,1257,1257),(1258,1258,1258),(1259,1259,1259),(1260,1260,1260),
(1261,1261,1261),(1262,1262,1262),(1263,1263,1263),(1264,1264,1264),(1265,1265,1265),
(1266,1266,1266),(1267,1267,1267),(1268,1268,1268),(1269,1269,1269),(1270,1270,1270),
(1271,1271,1271),(1272,1272,1272),(1273,1273,1273),(1274,1274,1274),(1275,1275,1275),
(1276,1276,1276),(1277,1277,1277),(1278,1278,1278),(1279,1279,1279),(1280,1280,1280),
(1281,1281,1281),(1282,1282,1282),(1283,1283,1283),(1284,1284,1284),(1285,1285,1285),
(1286,1286,1286),(1287,1287,1287),(1288,1288,1288),(1289,1289,1289),(1290,1290,1290),
(1291,1291,1291),(1292,1292,1292),(1293,1293,1293),(1294,1294,1294),(1295,1295,1295),
(1296,1296,1296),(1297,1297,1297),(1298,1298,1298),(1299,1299,1299),(1300,1300,1300),
(1301,1301,1301),(1302,1302,1302),(1303,1303,1303),(1304,1304,1304),(1305,1305,1305),
(1306,1306,1306),(1307,1307,1307),(1308,1308,1308),(1309,1309,1309),(1310,1310,1310),
(1311,1311,1311),(1312,1312,1312),(1313,1313,1313),(1314,1314,1314),(1315,1315,1315),
(1316,1316,1316),(1317,1317,1317),(1318,1318,1318),(1319,1319,1319),(1320,1320,1320),
(1321,1321,1321),(1322,1322,1322),(1323,1323,1323),(1324,1324,1324),(1325,1325,1325),
(1326,1326,1326),(1327,1327,1327),(1328,1328,1328),(1329,1329,1329),(1330,1330,1330),
(1331,1331,1331),(1332,1332,1332),(1333,1333,1333),(1334,1334,1334),(1335,1335,1335),
(1336,1336,1336),(1337,1337,1337),(1338,1338,1338),(1339,1339,1339),(1340,1340,1340),
(1341,1341,1341),(1342,1342,1342),(1343,1343,1343),(1344,1344,1344),(1345,1345,1345),
(1346,1346,1346),(1347,1347,1347),(1348,1348,1348),(1349,1349,1349),(1350,1350,1350),
(1351,1351,1351),(1352,1352,1352),(1353,1353,1353),(1354,1354,1354),(1355,1355,1355),
(1356,1356,1356),(1357,1357,1357),(1358,1358,1358),(1359,1359,1359),(1360,1360,1360),
(1361,1361,1361),(1362,1362,1362),(1363,1363,1363),(1364,1364,1364),(1365,1365,1365),
(1366,1366,1366),(1367,1367,1367),(1368,1368,1368),(1369,1369,1369),(1370,1370,1370),
(1371,1371,1371),(1372,1372,1372),(1373,1373,1373),(1374,1374,1374),(1375,1375,1375),
(1376,1376,1376),(1377,1377,1377),(1378,1378,1378),(1379,1379,1379),(1380,1380,1380),
(1381,1381,1381),(1382,1382,1382),(1383,1383,1383),(1384,1384,1384),(1385,1385,1385),
(1386,1386,1386),(1387,1387,1387),(1388,1388,1388),(1389,1389,1389),(1390,1390,1390),
(1391,1391,1391),(1392,1392,1392),(1393,1393,1393),(1394,1394,1394),(1395,1395,1395),
(1396,1396,1396),(1397,1397,1397),(1398,1398,1398),(1399,1399,1399),(1400,1400,1400),
(1401,1401,1401),(1402,1402,1402),(1403,1403,1403),(1404,1404,1404),(1405,1405,1405),
(1406,1406,1406),(1407,1407,1407),(1408,1408,1408),(1409,1409,1409),(1410,1410,1410),
(1411,1411,1411),(1412,1412,1412),(1413,1413,1413),(1414,1414,1414),(1415,1415,1415),
(1416,1416,1416),(1417,1417,1417),(1418,1418,1418),(1419,1419,1419),(1420,1420,1420),
(1421,1421,1421),(1422,1422,1422),(1423,1423,1423),(1424,1424,1424),(1425,1425,1425),
(1426,1426,1426),(1427,1427,1427),(1428,1428,1428),(1429,1429,1429),(1430,1430,1430),
(1431,1431,1431),(1432,1432,1432),(1433,1433,1433),(1434,1434,1434),(1435,1435,1435),
(1436,1436,1436),(1437,1437,1437),(1438,1438,1438),(1439,1439,1439),(1440,1440,1440),
(1441,1441,1441),(1442,1442,1442),(1443,1443,1443),(1444,1444,1444),(1445,1445,1445),
(1446,1446,1446),(1447,1447,1447),(1448,1448,1448),(1449,1449,1449),(1450,1450,1450),
(1451,1451,1451),(1452,1452,1452),(1453,1453,1453),(1454,1454,1454),(1455,1455,1455),
(1456,1456,1456),(1457,1457,1457),(1458,1458,1458),(1459,1459,1459),(1460,1460,1460),
(1461,1461,1461),(1462,1462,1462),(1463,1463,1463),(1464,1464,1464),(1465,1465,1465),
(1466,1466,1466),(1467,1467,1467),(1468,1468,1468),(1469,1469,1469),(1470,1470,1470),
(1471,1471,1471),(1472,1472,1472),(1473,1473,1473),(1474,1474,1474),(1475,1475,1475),
(1476,1476,1476),(1477,1477,1477),(1478,1478,1478),(1479,1479,1479),(1480,1480,1480),
(1481,1481,1481),(1482,1482,1482),(1483,1483,1483),(1484,1484,1484),(1485,1485,1485),
(1486,1486,1486),(1487,1487,1487),(1488,1488,1488),(1489,1489,1489),(1490,1490,1490),
(1491,1491,1491),(1492,1492,1492),(1493,1493,1493),(1494,1494,1494),(1495,1495,1495),
(1496,1496,1496),(1497,1497,1497),(1498,1498,1498),(1499,1499,1499),(1500,1500,1500),
(1501,1501,1501),(1502,1502,1502),(1503,1503,1503),(1504,1504,1504),(1505,1505,1505),
(1506,1506,1506),(1507,1507,1507),(1508,1508,1508),(1509,1509,1509),(1510,1510,1510),
(1511,1511,1511),(1512,1512,1512),(1513,1513,1513),(1514,1514,1514),(1515,1515,1515),
(1516,1516,1516),(1517,1517,1517),(1518,1518,1518),(1519,1519,1519),(1520,1520,1520),
(1521,1521,1521),(1522,1522,1522),(1523,1523,1523),(1524,1524,1524),(1525,1525,1525),
(1526,1526,1526),(1527,1527,1527),(1528,1528,1528),(1529,1529,1529),(1530,1530,1530),
(1531,1531,1531),(1532,1532,1532),(1533,1533,1533),(1534,1534,1534),(1535,1535,1535),
(1536,1536,1536),(1537,1537,1537),(1538,1538,1538),(1539,1539,1539),(1540,1540,1540),
(1541,1541,1541),(1542,1542,1542),(1543,1543,1543),(1544,1544,1544),(1545,1545,1545),
(1546,1546,1546),(1547,1547,1547),(1548,1548,1548),(1549,1549,1549),(1550,1550,1550),
(1551,1551,1551),(1552,1552,1552),(1553,1553,1553),(1554,1554,1554),(1555,1555,1555),
(1556,1556,1556),(1557,1557,1557),(1558,1558,1558),(1559,1559,1559),(1560,1560,1560),
(1561,1561,1561),(1562,1562,1562),(1563,1563,1563),(1564,1564,1564),(1565,1565,1565),
(1566,1566,1566),(1567,1567,1567),(1568,1568,1568),(1569,1569,1569),(1570,1570,1570),
(1571,1571,1571),(1572,1572,1572),(1573,1573,1573),(1574,1574,1574),(1575,1575,1575),
(1576,1576,1576),(1577,1577,1577),(1578,1578,1578),(1579,1579,1579),(1580,1580,1580),
(1581,1581,1581),(1582,1582,1582),(1583,1583,1583),(1584,1584,1584),(1585,1585,1585),
(1586,1586,1586),(1587,1587,1587),(1588,1588,1588),(1589,1589,1589),(1590,1590,1590),
(1591,1591,1591),(1592,1592,1592),(1593,1593,1593),(1594,1594,1594),(1595,1595,1595),
(1596,1596,1596),(1597,1597,1597),(1598,1598,1598),(1599,1599,1599),(1600,1600,1600),
(1601,1601,1601),(1602,1602,1602),(1603,1603,1603),(1604,1604,1604),(1605,1605,1605),
(1606,1606,1606),(1607,1607,1607),(1608,1608,1608),(1609,1609,1609),(1610,1610,1610),
(1611,1611,1611),(1612,1612,1612),(1613,1613,1613),(1614,1614,1614),(1615,1615,1615),
(1616,1616,1616),(1617,1617,1617),(1618,1618,1618),(1619,1619,1619),(1620,1620,1620),
(1621,1621,1621),(1622,1622,1622),(1623,1623,1623),(1624,1624,1624),(1625,1625,1625),
(1626,1626,1626),(1627,1627,1627),(1628,1628,1628),(1629,1629,1629),(1630,1630,1630),
(1631,1631,1631),(1632,1632,1632),(1633,1633,1633),(1634,1634,1634),(1635,1635,1635),
(1636,1636,1636),(1637,1637,1637),(1638,1638,1638),(1639,1639,1639),(1640,1640,1640),
(1641,1641,1641),(1642,1642,1642),(1643,1643,1643),(1644,1644,1644),(1645,1645,1645),
(1646,1646,1646),(1647,1647,1647),(1648,1648,1648),(1649,1649,1649),(1650,1650,1650),
(1651,1651,1651),(1652,1652,1652),(1653,1653,1653),(1654,1654,1654),(1655,1655,1655),
(1656,1656,1656),(1657,1657,1657),(1658,1658,1658),(1659,1659,1659),(1660,1660,1660),
(1661,1661,1661),(1662,1662,1662),(1663,1663,1663),(1664,1664,1664),(1665,1665,1665),
(1666,1666,1666),(1667,1667,1667),(1668,1668,1668),(1669,1669,1669),(1670,1670,1670),
(1671,1671,1671),(1672,1672,1672),(1673,1673,1673),(1674,1674,1674),(1675,1675,1675),
(1676,1676,1676),(1677,1677,1677),(1678,1678,1678),(1679,1679,1679),(1680,1680,1680),
(1681,1681,1681),(1682,1682,1682),(1683,1683,1683),(1684,1684,1684),(1685,1685,1685),
(1686,1686,1686),(1687,1687,1687),(1688,1688,1688),(1689,1689,1689),(1690,1690,1690),
(1691,1691,1691),(1692,1692,1692),(1693,1693,1693),(1694,1694,1694),(1695,1695,1695),
(1696,1696,1696),(1697,1697,1697),(1698,1698,1698),(1699,1699,1699),(1700,1700,1700),
(1701,1701,1701),(1702,1702,1702),(1703,1703,1703),(1704,1704,1704),(1705,1705,1705),
(1706,1706,1706),(1707,1707,1707),(1708,1708,1708),(1709,1709,1709),(1710,1710,1710),
(1711,1711,1711),(1712,1712,1712),(1713,1713,1713),(1714,1714,1714),(1715,1715,1715),
(1716,1716,1716),(1717,1717,1717),(1718,1718,1718),(1719,1719,1719),(1720,1720,1720),
(1721,1721,1721),(1722,1722,1722),(1723,1723,1723),(1724,1724,1724),(1725,1725,1725),
(1726,1726,1726),(1727,1727,1727),(1728,1728,1728),(1729,1729,1729),(1730,1730,1730),
(1731,1731,1731),(1732,1732,1732),(1733,1733,1733),(1734,1734,1734),(1735,1735,1735),
(1736,1736,1736),(1737,1737,1737),(1738,1738,1738),(1739,1739,1739),(1740,1740,1740),
(1741,1741,1741),(1742,1742,1742),(1743,1743,1743),(1744,1744,1744),(1745,1745,1745),
(1746,1746,1746),(1747,1747,1747),(1748,1748,1748),(1749,1749,1749),(1750,1750,1750),
(1751,1751,1751),(1752,1752,1752),(1753,1753,1753),(1754,1754,1754),(1755,1755,1755),
(1756,1756,1756),(1757,1757,1757),(1758,1758,1758),(1759,1759,1759),(1760,1760,1760),
(1761,1761,1761),(1762,1762,1762),(1763,1763,1763),(1764,1764,1764),(1765,1765,1765),
(1766,1766,1766),(1767,1767,1767),(1768,1768,1768),(1769,1769,1769),(1770,1770,1770),
(1771,1771,1771),(1772,1772,1772),(1773,1773,1773),(1774,1774,1774),(1775,1775,1775),
(1776,1776,1776),(1777,1777,1777),(1778,1778,1778),(1779,1779,1779),(1780,1780,1780),
(1781,1781,1781),(1782,1782,1782),(1783,1783,1783),(1784,1784,1784),(1785,1785,1785),
(1786,1786,1786),(1787,1787,1787),(1788,1788,1788),(1789,1789,1789),(1790,1790,1790),
(1791,1791,1791),(1792,1792,1792),(1793,1793,1793),(1794,1794,1794),(1795,1795,1795),
(1796,1796,1796),(1797,1797,1797),(1798,1798,1798),(1799,1799,1799),(1800,1800,1800),
(1801,1801,1801),(1802,1802,1802),(1803,1803,1803),(1804,1804,1804),(1805,1805,1805),
(1806,1806,1806),(1807,1807,1807),(1808,1808,1808),(1809,1809,1809),(1810,1810,1810),
(1811,1811,1811),(1812,1812,1812),(1813,1813,1813),(1814,1814,1814),(1815,1815,1815),
(1816,1816,1816),(1817,1817,1817),(1818,1818,1818),(1819,1819,1819),(1820,1820,1820),
(1821,1821,1821),(1822,1822,1822),(1823,1823,1823),(1824,1824,1824),(1825,1825,1825),
(1826,1826,1826),(1827,1827,1827),(1828,1828,1828),(1829,1829,1829),(1830,1830,1830),
(1831,1831,1831),(1832,1832,1832),(1833,1833,1833),(1834,1834,1834),(1835,1835,1835),
(1836,1836,1836),(1837,1837,1837),(1838,1838,1838),(1839,1839,1839),(1840,1840,1840),
(1841,1841,1841),(1842,1842,1842),(1843,1843,1843),(1844,1844,1844),(1845,1845,1845),
(1846,1846,1846),(1847,1847,1847),(1848,1848,1848),(1849,1849,1849),(1850,1850,1850),
(1851,1851,1851),(1852,1852,1852),(1853,1853,1853),(1854,1854,1854),(1855,1855,1855),
(1856,1856,1856),(1857,1857,1857),(1858,1858,1858),(1859,1859,1859),(1860,1860,1860),
(1861,1861,1861),(1862,1862,1862),(1863,1863,1863),(1864,1864,1864),(1865,1865,1865),
(1866,1866,1866),(1867,1867,1867),(1868,1868,1868),(1869,1869,1869),(1870,1870,1870),
(1871,1871,1871),(1872,1872,1872),(1873,1873,1873),(1874,1874,1874),(1875,1875,1875),
(1876,1876,1876),(1877,1877,1877),(1878,1878,1878),(1879,1879,1879),(1880,1880,1880),
(1881,1881,1881),(1882,1882,1882),(1883,1883,1883),(1884,1884,1884),(1885,1885,1885),
(1886,1886,1886),(1887,1887,1887),(1888,1888,1888),(1889,1889,1889),(1890,1890,1890),
(1891,1891,1891),(1892,1892,1892),(1893,1893,1893),(1894,1894,1894),(1895,1895,1895),
(1896,1896,1896),(1897,1897,1897),(1898,1898,1898),(1899,1899,1899),(1900,1900,1900),
(1901,1901,1901),(1902,1902,1902),(1903,1903,1903),(1904,1904,1904),(1905,1905,1905),
(1906,1906,1906),(1907,1907,1907),(1908,1908,1908),(1909,1909,1909),(1910,1910,1910),
(1911,1911,1911),(1912,1912,1912),(1913,1913,1913),(1914,1914,1914),(1915,1915,1915),
(1916,1916,1916),(1917,1917,1917),(1918,1918,1918),(1919,1919,1919),(1920,1920,1920),
(1921,1921,1921),(1922,1922,1922),(1923,1923,1923),(1924,1924,1924),(1925,1925,1925),
(1926,1926,1926),(1927,1927,1927),(1928,1928,1928),(1929,1929,1929),(1930,1930,1930),
(1931,1931,1931),(1932,1932,1932),(1933,1933,1933),(1934,1934,1934),(1935,1935,1935),
(1936,1936,1936),(1937,1937,1937),(1938,1938,1938),(1939,1939,1939),(1940,1940,1940),
(1941,1941,1941),(1942,1942,1942),(1943,1943,1943),(1944,1944,1944),(1945,1945,1945),
(1946,1946,1946),(1947,1947,1947),(1948,1948,1948),(1949,1949,1949),(1950,1950,1950),
(1951,1951,1951),(1952,1952,1952),(1953,1953,1953),(1954,1954,1954),(1955,1955,1955),
(1956,1956,1956),(1957,1957,1957),(1958,1958,1958),(1959,1959,1959),(1960,1960,1960),
(1961,1961,1961),(1962,1962,1962),(1963,1963,1963),(1964,1964,1964),(1965,1965,1965),
(1966,1966,1966),(1967,1967,1967),(1968,1968,1968),(1969,1969,1969),(1970,1970,1970),
(1971,1971,1971),(1972,1972,1972),(1973,1973,1973),(1974,1974,1974),(1975,1975,1975),
(1976,1976,1976),(1977,1977,1977),(1978,1978,1978),(1979,1979,1979),(1980,1980,1980),
(1981,1981,1981),(1982,1982,1982),(1983,1983,1983),(1984,1984,1984),(1985,1985,1985),
(1986,1986,1986),(1987,1987,1987),(1988,1988,1988),(1989,1989,1989),(1990,1990,1990),
(1991,1991,1991),(1992,1992,1992),(1993,1993,1993),(1994,1994,1994),(1995,1995,1995),
(1996,1996,1996),(1997,1997,1997),(1998,1998,1998),(1999,1999,1999);
SELECT COUNT(*) FROM t1;
DROP TABLE t1;
......@@ -45,6 +45,7 @@ use strict;
use Getopt::Long;
my $insert_portion_size= 15;
my $maximum_line_length= 2040;
my $error_prefix= "---- help parsing errors :";
my $path_to_lex_file= "../sql/lex.h";
......@@ -166,6 +167,7 @@ sub add_description
print_error "double description for $topic_name\n";
}
$topics{$topic_name}->{description}= $description;
$topics{$topic_name}->{line_of_description}= $cur_line;
add_topic_to_category($topic_name);
}
......@@ -515,21 +517,52 @@ if (scalar(@topic_names))
{
my $header= "insert into help_topic ".
"(help_topic_id,help_category_id,name,description,example) values ";
my $line_accumulator= $header;
my $lines_in_accumulator= 0;
my $actual_max_line_length= $maximum_line_length-2; # for ";\n"
my $topic_name;
my $count= 0;
foreach $topic_name (@topic_names)
{
print_insert_header($count,$header);
my $topic= $topics{$topic_name};
print "($count,";
print "$topic->{category}->{__id__},";
print "\"$topic_name\",";
print "\"$topic->{description}\",";
print "\"$topic->{example}\")";
my $line= "($count,";
$line.= "$topic->{category}->{__id__},";
$line.= "\"$topic_name\",";
$line.= "\"$topic->{description}\",";
$line.= "\"$topic->{example}\")";
if ($lines_in_accumulator <= $insert_portion_size &&
length($line) + length($line_accumulator) < $actual_max_line_length)
{
if ($lines_in_accumulator ne 0)
{
$line_accumulator.= ",";
}
$line_accumulator.= $line;
$lines_in_accumulator++;
}
else
{
if (length($line) + length($header) >= $actual_max_line_length)
{
$cur_line= $topics{$topic_name}->{line_of_description};
print_error "too long record for topic \"$topic_name\" \n".
" please decrease its description or example!\n";
}
else
{
print "$line_accumulator;\n";
$line_accumulator= $header.$line;
$lines_in_accumulator= 1;
}
}
$topics{$topic_name}->{__id__}= $count;
$count++;
}
printf ";\n\n";
if ($lines_in_accumulator ne 0)
{
print "$line_accumulator;\n";
}
printf "\n";
}
my @keywords_names= keys(%keywords);
......
......@@ -200,15 +200,28 @@ if test "$in_rpm" -eq 0 -a "$windows" -eq 0
then
echo "Installing all prepared tables"
fi
if (
$scriptdir/mysql_create_system_tables $create_option $mdata $hostname $windows
if test -n "$fill_help_tables"
then
cat $fill_help_tables
fi
) | eval "$mysqld $defaults $mysqld_opt --bootstrap --skip-grant-tables \
--basedir=$basedir --datadir=$ldata --skip-innodb --skip-bdb $args"
mysqld_install_cmd_line="$mysqld $defaults $mysqld_opt --bootstrap \
--skip-grant-tables --basedir=$basedir --datadir=$ldata --skip-innodb \
--skip-bdb $args"
if $scriptdir/mysql_create_system_tables $create_option $mdata $hostname $windows \
| eval "$mysqld_install_cmd_line"
then
if test -n "$fill_help_tables"
then
if test "$in_rpm" -eq 0 -a "$windows" -eq 0
then
echo "Fill help tables"
fi
if ! (echo "use mysql;
"
cat $fill_help_tables) | eval "$mysqld_install_cmd_line"
then
echo ""
echo "WARNING: HELP FILES ARE NOT COMPLETELY INSTALLED!"
echo "The \"HELP\" command might not work properly"
echo ""
fi
fi
if test "$in_rpm" = 0 -a "$windows" = 0
then
echo ""
......@@ -250,7 +263,7 @@ then
fi
exit 0
else
echo "Installation of grant tables failed!"
echo "Installation of system tables failed!"
echo
echo "Examine the logs in $ldata for more information."
echo "You can also try to start the mysqld daemon with:"
......
......@@ -682,25 +682,80 @@ inline int ha_ndbcluster::next_result(byte *buf)
}
/*
Set bounds for a ordered index scan, use key_range
*/
int ha_ndbcluster::set_bounds(NdbOperation *op,
const key_range *key,
int bound)
{
uint i, tot_len;
byte *key_ptr;
KEY* key_info= table->key_info + active_index;
KEY_PART_INFO* key_part= key_info->key_part;
KEY_PART_INFO* end= key_part+key_info->key_parts;
DBUG_ENTER("set_bounds");
DBUG_PRINT("enter", ("bound: %d", bound));
DBUG_PRINT("enter", ("key_parts: %d", key_info->key_parts));
DBUG_PRINT("enter", ("key->length: %d", key->length));
DBUG_PRINT("enter", ("key->flag: %d", key->flag));
// Set bounds using key data
tot_len= 0;
key_ptr= (byte *) key->key;
for (; key_part != end; key_part++)
{
Field* field= key_part->field;
uint32 field_len= field->pack_length();
tot_len+= field_len;
const char* bounds[]= {"LE", "LT", "GE", "GT", "EQ"};
DBUG_ASSERT(bound >= 0 && bound <= 4);
DBUG_PRINT("info", ("Set Bound%s on %s",
bounds[bound],
field->field_name));
DBUG_DUMP("key", (char*)key_ptr, field_len);
if (op->setBound(field->field_name,
bound,
key_ptr,
field_len) != 0)
ERR_RETURN(op->getNdbError());
key_ptr+= field_len;
if (tot_len >= key->length)
break;
/*
Only one bound which is not EQ can be set
so if this bound was not EQ, bail out and make
a best effort attempt
*/
if (bound != NdbOperation::BoundEQ)
break;
}
DBUG_RETURN(0);
}
/*
Read record(s) from NDB using ordered index scan
*/
int ha_ndbcluster::ordered_index_scan(const byte *key, uint key_len,
byte *buf,
enum ha_rkey_function find_flag)
int ha_ndbcluster::ordered_index_scan(const key_range *start_key,
const key_range *end_key,
bool sorted, byte* buf)
{
uint no_fields= table->fields;
uint tot_len, i;
uint i;
NdbConnection *trans= m_active_trans;
NdbResultSet *cursor= m_active_cursor;
NdbScanOperation *op;
const char *bound_str= NULL;
const char *index_name;
NdbOperation::BoundType bound_type = NdbOperation::BoundEQ;
bool can_be_handled_by_ndb= FALSE;
byte *key_ptr;
KEY *key_info;
THD* thd = current_thd;
DBUG_ENTER("ordered_index_scan");
DBUG_PRINT("enter", ("index: %u", active_index));
......@@ -712,77 +767,27 @@ int ha_ndbcluster::ordered_index_scan(const byte *key, uint key_len,
if (!(cursor= op->readTuples(parallelism)))
ERR_RETURN(trans->getNdbError());
m_active_cursor= cursor;
switch (find_flag) {
case HA_READ_KEY_EXACT: /* Find first record else error */
bound_str= "HA_READ_KEY_EXACT";
bound_type= NdbOperation::BoundEQ;
can_be_handled_by_ndb= TRUE;
break;
case HA_READ_KEY_OR_NEXT: /* Record or next record */
bound_str= "HA_READ_KEY_OR_NEXT";
bound_type= NdbOperation::BoundLE;
can_be_handled_by_ndb= TRUE;
break;
case HA_READ_KEY_OR_PREV: /* Record or previous */
bound_str= "HA_READ_KEY_OR_PREV";
bound_type= NdbOperation::BoundGE;
can_be_handled_by_ndb= TRUE;
break;
case HA_READ_AFTER_KEY: /* Find next rec. after key-record */
bound_str= "HA_READ_AFTER_KEY";
bound_type= NdbOperation::BoundLT;
can_be_handled_by_ndb= TRUE;
break;
case HA_READ_BEFORE_KEY: /* Find next rec. before key-record */
bound_str= "HA_READ_BEFORE_KEY";
bound_type= NdbOperation::BoundGT;
can_be_handled_by_ndb= TRUE;
break;
case HA_READ_PREFIX: /* Key which as same prefix */
bound_str= "HA_READ_PREFIX";
break;
case HA_READ_PREFIX_LAST: /* Last key with the same prefix */
bound_str= "HA_READ_PREFIX_LAST";
break;
case HA_READ_PREFIX_LAST_OR_PREV:
/* Last or prev key with the same prefix */
bound_str= "HA_READ_PREFIX_LAST_OR_PREV";
break;
default:
bound_str= "UNKNOWN";
break;
}
DBUG_PRINT("info", ("find_flag: %s, bound_type: %d,"
"can_be_handled_by_ndb: %d",
bound_str, bound_type, can_be_handled_by_ndb));
if (!can_be_handled_by_ndb)
if (start_key &&
set_bounds(op, start_key,
(start_key->flag == HA_READ_KEY_EXACT) ?
NdbOperation::BoundEQ :
(start_key->flag == HA_READ_AFTER_KEY) ?
NdbOperation::BoundLT :
NdbOperation::BoundLE))
DBUG_RETURN(1);
if (end_key &&
(start_key && start_key->flag != HA_READ_KEY_EXACT) &&
// MASV Is it a bug that end_key is not 0
// if start flag is HA_READ_KEY_EXACT
// Set bounds using key data
tot_len= 0;
key_ptr= (byte *) key;
key_info= table->key_info + active_index;
for (i= 0; i < key_info->key_parts; i++)
{
Field* field= key_info->key_part[i].field;
uint32 field_len= field->pack_length();
DBUG_PRINT("info", ("Set index bound on %s",
field->field_name));
DBUG_DUMP("key", (char*)key_ptr, field_len);
if (op->setBound(field->field_name,
bound_type,
key_ptr,
field_len) != 0)
ERR_RETURN(op->getNdbError());
key_ptr+= field_len;
tot_len+= field_len;
if (tot_len >= key_len)
break;
}
set_bounds(op, end_key,
(end_key->flag == HA_READ_AFTER_KEY) ?
NdbOperation::BoundGE :
NdbOperation::BoundGT))
DBUG_RETURN(1);
// Define attributes to read
for (i= 0; i < no_fields; i++)
{
......@@ -1428,9 +1433,13 @@ int ha_ndbcluster::index_read(byte *buf,
#endif
error= unique_index_read(key, key_len, buf);
break;
case ORDERED_INDEX:
error= ordered_index_scan(key, key_len, buf, find_flag);
key_range start_key;
start_key.key= key;
start_key.length= key_len;
start_key.flag= find_flag;
error= ordered_index_scan(&start_key, 0, false, buf);
break;
default:
......@@ -1491,6 +1500,44 @@ int ha_ndbcluster::index_last(byte *buf)
}
int ha_ndbcluster::read_range_first(const key_range *start_key,
const key_range *end_key,
bool sorted)
{
int error= 1;
DBUG_ENTER("ha_ndbcluster::read_range_first");
switch (get_index_type(active_index)){
case PRIMARY_KEY_INDEX:
error= pk_read(start_key->key, start_key->length,
table->record[0]);
break;
case UNIQUE_INDEX:
error= unique_index_read(start_key->key, start_key->length,
table->record[0]);
break;
case ORDERED_INDEX:
// Start the ordered index scan and fetch the first row
error= ordered_index_scan(start_key, end_key, sorted,
table->record[0]);
break;
default:
case UNDEFINED_INDEX:
break;
}
DBUG_RETURN(error);
}
int ha_ndbcluster::read_range_next(bool eq_range)
{
DBUG_ENTER("ha_ndbcluster::read_range_next");
DBUG_RETURN(next_result(table->record[0]));
}
int ha_ndbcluster::rnd_init(bool scan)
{
NdbResultSet *cursor= m_active_cursor;
......
......@@ -76,6 +76,11 @@ class ha_ndbcluster: public handler
int rnd_next(byte *buf);
int rnd_pos(byte *buf, byte *pos);
void position(const byte *record);
int read_range_first(const key_range *start_key,
const key_range *end_key,
bool sorted);
int read_range_next(bool eq_range);
void info(uint);
int extra(enum ha_extra_function operation);
......@@ -150,9 +155,9 @@ class ha_ndbcluster: public handler
byte *buf);
int unique_index_read(const byte *key, uint key_len,
byte *buf);
int ordered_index_scan(const byte *key, uint key_len,
byte *buf,
enum ha_rkey_function find_flag);
int ordered_index_scan(const key_range *start_key,
const key_range *end_key,
bool sorted, byte* buf);
int full_table_scan(byte * buf);
int next_result(byte *buf);
#if 0
......@@ -175,6 +180,8 @@ class ha_ndbcluster: public handler
int get_ndb_value(NdbOperation*, uint fieldnr, byte *field_ptr);
int set_primary_key(NdbOperation *op, const byte *key);
int set_primary_key(NdbOperation *op);
int set_bounds(NdbOperation *ndb_op, const key_range *key,
int bound);
int key_cmp(uint keynr, const byte * old_row, const byte * new_row);
void print_results();
......
......@@ -1095,6 +1095,12 @@ extern "C" pthread_handler_decl(handle_bootstrap,arg)
while (fgets(buff, thd->net.max_packet, file))
{
uint length=(uint) strlen(buff);
if (buff[length-1]!='\n' && !feof(file))
{
send_error(thd,ER_NET_PACKET_TOO_LARGE, NullS);
thd->is_fatal_error= 1;
break;
}
while (length && (my_isspace(thd->charset(), buff[length-1]) ||
buff[length-1] == ';'))
length--;
......
......@@ -56,6 +56,8 @@ static unsigned int iter_count= 0;
static time_t start_time, end_time;
static double total_time;
const char *default_dbug_option="d:t:o,/tmp/client_test.trace";
#define myheader(str) \
{ \
fprintf(stdout,"\n\n#####################################\n"); \
......@@ -91,28 +93,28 @@ if (r) \
assert(r != 0); \
}
#define mystmt(stmt,r) \
#define check_execute(stmt,r) \
{ \
if (r) \
mysterror(stmt,NULL); \
assert(r == 0);\
}
#define mystmt_r(stmt,r) \
#define check_execute_r(stmt,r) \
{ \
if (r) \
mysterror(stmt,NULL); \
assert(r != 0);\
}
#define mystmt_init(stmt) \
#define check_stmt(stmt) \
{ \
if ( stmt == 0) \
myerror(NULL); \
assert(stmt != 0); \
}
#define mystmt_init_r(stmt) \
#define check_stmt_r(stmt) \
{ \
if (stmt == 0) \
myerror(NULL);\
......@@ -430,10 +432,10 @@ uint my_process_stmt_result(MYSQL_STMT *stmt)
my_print_result_metadata(result);
rc= mysql_bind_result(stmt,buffer);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc= mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
mysql_field_seek(result, 0);
while (mysql_fetch(stmt) == 0)
......@@ -481,10 +483,10 @@ uint my_stmt_result(const char *buff)
fprintf(stdout,"\n\n %s", buff);
stmt= mysql_simple_prepare(mysql,buff);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
row_count= my_process_stmt_result(stmt);
mysql_stmt_close(stmt);
......@@ -520,9 +522,12 @@ static void verify_col_data(const char *table, const char *col,
fprintf(stdout,"\n *** ERROR: FAILED TO GET THE RESULT ***");
exit(1);
}
fprintf(stdout,"\n obtained: `%s` (expected: `%s`)",
row[field], exp_data);
assert(strcmp(row[field],exp_data) == 0);
if (strcmp(row[field],exp_data))
{
fprintf(stdout,"\n obtained: `%s` (expected: `%s`)",
row[field], exp_data);
assert(0);
}
mysql_free_result(result);
}
......@@ -620,7 +625,7 @@ static void execute_prepare_query(const char *query, ulonglong exp_count)
int rc;
stmt= mysql_simple_prepare(mysql,query);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
myquery(rc);
......@@ -928,7 +933,7 @@ static void test_prepare_simple()
/* insert */
strmov(query,"INSERT INTO test_prepare_simple VALUES(?,?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
mysql_stmt_close(stmt);
......@@ -936,7 +941,7 @@ static void test_prepare_simple()
/* update */
strmov(query,"UPDATE test_prepare_simple SET id=? WHERE id=? AND name= ?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,3);
mysql_stmt_close(stmt);
......@@ -944,18 +949,18 @@ static void test_prepare_simple()
/* delete */
strmov(query,"DELETE FROM test_prepare_simple WHERE id=10");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
/* delete */
strmov(query,"DELETE FROM test_prepare_simple WHERE id=?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,1);
......@@ -964,7 +969,7 @@ static void test_prepare_simple()
/* select */
strmov(query,"SELECT * FROM test_prepare_simple WHERE id=? AND name= ?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -1002,7 +1007,7 @@ static void test_prepare_field_result()
strmov(query,"SELECT int_c,var_c,date_c as date,ts_c,char_c FROM \
test_prepare_field_result as t1 WHERE int_c=?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,1);
......@@ -1050,11 +1055,11 @@ static void test_prepare_syntax()
strmov(query,"INSERT INTO test_prepare_syntax VALUES(?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init_r(stmt);
check_stmt_r(stmt);
strmov(query,"SELECT id,name FROM test_prepare_syntax WHERE id=? AND WHERE");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init_r(stmt);
check_stmt_r(stmt);
/* now fetch the results ..*/
rc = mysql_commit(mysql);
......@@ -1100,7 +1105,7 @@ static void test_prepare()
/* insert by prepare */
strxmov(query,"INSERT INTO my_prepare VALUES(?,?,?,?,?,?,?)",NullS);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,7);
......@@ -1135,7 +1140,7 @@ static void test_prepare()
}
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
int_data = 320;
small_data = 1867;
......@@ -1148,7 +1153,7 @@ static void test_prepare()
{
length[1]= my_sprintf(str_data,(str_data, "MySQL%d",int_data));
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
int_data += 25;
small_data += 10;
big_data += 100;
......@@ -1166,14 +1171,14 @@ static void test_prepare()
assert(tiny_data == (char) my_stmt_result("SELECT * FROM my_prepare"));
stmt = mysql_simple_prepare(mysql,"SELECT * FROM my_prepare");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
/* get the result */
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
o_int_data = 320;
o_small_data = 1867;
......@@ -1187,7 +1192,7 @@ static void test_prepare()
len = my_sprintf(data, (data, "MySQL%d",o_int_data));
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n");
......@@ -1271,7 +1276,7 @@ static void test_double_compare()
strmov(query, "UPDATE test_double_compare SET col1=100 WHERE col1 = ? AND col2 = ? AND COL3 = ?");
stmt = mysql_simple_prepare(mysql,query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,3);
......@@ -1301,10 +1306,10 @@ static void test_double_compare()
strmov(real_data,"10.2");
double_data = 34.5;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_affected_rows(0);
......@@ -1352,11 +1357,11 @@ static void test_null()
/* insert by prepare, wrong column name */
strmov(query,"INSERT INTO test_null(col3,col2) VALUES(?,?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init_r(stmt);
check_stmt_r(stmt);
strmov(query,"INSERT INTO test_null(col1,col2) VALUES(?,?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -1367,13 +1372,13 @@ static void test_null()
bind[1]=bind[0];
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
/* now, execute the prepared statement to insert 10 records.. */
for (nData=0; nData<10; nData++)
{
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
/* Re-bind with MYSQL_TYPE_NULL */
......@@ -1382,12 +1387,12 @@ static void test_null()
bind[1]= bind[0];
rc = mysql_bind_param(stmt,bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
for (nData=0; nData<10; nData++)
{
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
mysql_stmt_close(stmt);
......@@ -1408,13 +1413,13 @@ static void test_null()
bind[1].is_null= &is_null[1];
stmt = mysql_simple_prepare(mysql,"SELECT * FROM test_null");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc= 0;
is_null[0]= is_null[1]= 0;
......@@ -1481,15 +1486,15 @@ static void test_ps_null_param()
{
strmov(query, *cur_query);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,1);
rc = mysql_bind_param(stmt,&in_bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc= mysql_bind_result(stmt,&out_bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc= mysql_fetch(stmt);
assert(rc != MYSQL_NO_DATA);
assert(out_is_null);
......@@ -1551,13 +1556,13 @@ static void test_fetch_null()
assert(3 == my_stmt_result(query));
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc= 0;
while (mysql_fetch(stmt) != MYSQL_NO_DATA)
......@@ -1590,12 +1595,12 @@ static void test_select_version()
myheader("test_select_version");
stmt = mysql_simple_prepare(mysql, "SELECT @@version");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
my_process_stmt_result(stmt);
mysql_stmt_close(stmt);
......@@ -1612,14 +1617,14 @@ static void test_select_show_table()
myheader("test_select_show_table");
stmt = mysql_simple_prepare(mysql, "SHOW TABLES FROM mysql");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
for (i= 1; i < 3; i++)
{
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
my_process_stmt_result(stmt);
......@@ -1707,10 +1712,10 @@ static void test_select_prepare()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"SELECT * FROM test_select");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
mysql_stmt_close(stmt);
......@@ -1737,10 +1742,10 @@ static void test_select_prepare()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"SELECT * FROM test_select");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
mysql_stmt_close(stmt);
......@@ -1792,7 +1797,7 @@ static void test_select()
strmov(query,"SELECT * FROM test_select WHERE id=? AND name=?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -1813,10 +1818,10 @@ static void test_select()
bind[0].is_null= 0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(my_process_stmt_result(stmt) == 1);
......@@ -1851,7 +1856,7 @@ session_id char(9) NOT NULL, \
strmov(query,"SELECT * FROM test_select WHERE session_id = ?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,1);
......@@ -1864,10 +1869,10 @@ session_id char(9) NOT NULL, \
bind[0].is_null=0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(my_process_stmt_result(stmt) == 1);
......@@ -1880,10 +1885,10 @@ session_id char(9) NOT NULL, \
bind[0].is_null=0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(my_process_stmt_result(stmt) == 0);
......@@ -1896,10 +1901,10 @@ session_id char(9) NOT NULL, \
bind[0].is_null=0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(my_process_stmt_result(stmt) == 1);
......@@ -1929,7 +1934,7 @@ static void test_bug1180()
strmov(query,"SELECT * FROM test_select WHERE ?=\"1111\" and session_id = \"abc\"");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,1);
......@@ -1942,10 +1947,10 @@ static void test_bug1180()
bind[0].is_null=0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(my_process_stmt_result(stmt) == 0);
......@@ -1958,10 +1963,10 @@ static void test_bug1180()
bind[0].is_null=0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(my_process_stmt_result(stmt) == 1);
......@@ -1974,10 +1979,10 @@ static void test_bug1180()
bind[0].is_null=0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(my_process_stmt_result(stmt) == 0);
......@@ -2009,7 +2014,7 @@ static void test_bug1644()
strmov(query, "INSERT INTO foo_dfr VALUES (?,?,?,? )");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt, 4);
......@@ -2025,20 +2030,20 @@ static void test_bug1644()
}
rc= mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
isnull= 1;
for (i = 0 ; i < 4 ; i++)
bind[i].is_null= &isnull;
rc= mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
isnull= 0;
num= 88;
......@@ -2046,10 +2051,10 @@ static void test_bug1644()
bind[i].is_null= &isnull;
rc= mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
......@@ -2107,43 +2112,43 @@ static void test_select_show()
myquery(rc);
stmt = mysql_simple_prepare(mysql, "show columns from test_show");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
my_process_stmt_result(stmt);
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "show tables from mysql like ?");
mystmt_init_r(stmt);
check_stmt_r(stmt);
strxmov(query,"show tables from ", current_db, " like \'test_show\'", NullS);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
my_process_stmt_result(stmt);
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "describe test_show");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
my_process_stmt_result(stmt);
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "show keys from test_show");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(1 == my_process_stmt_result(stmt));
mysql_stmt_close(stmt);
......@@ -2192,7 +2197,7 @@ static void test_simple_update()
/* insert by prepare */
strmov(query,"UPDATE test_update SET col2=? WHERE col1=?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -2211,10 +2216,10 @@ static void test_simple_update()
bind[1].is_null= 0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_affected_rows(1);
mysql_stmt_close(stmt);
......@@ -2267,11 +2272,11 @@ static void test_long_data()
strmov(query,"INSERT INTO test_long_data(col1,col2) VALUES(?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init_r(stmt);
check_stmt_r(stmt);
strmov(query,"INSERT INTO test_long_data(col1,col2,col3) VALUES(?,?,?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,3);
......@@ -2288,7 +2293,7 @@ static void test_long_data()
bind[2]=bind[1];
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
int_data= 999;
data = (char *)"Michael";
......@@ -2297,14 +2302,14 @@ static void test_long_data()
rc = mysql_send_long_data(stmt,1,data,strlen(data));
data = (char *)" 'Monty' Widenius";
rc = mysql_send_long_data(stmt,1,data,strlen(data));
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_send_long_data(stmt,2,"Venu (venu@mysql.com)",4);
mystmt(stmt, rc);
check_execute(stmt, rc);
/* execute */
rc = mysql_execute(stmt);
fprintf(stdout," mysql_execute() returned %d\n",rc);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_commit(mysql);
myquery(rc);
......@@ -2359,7 +2364,7 @@ static void test_long_data_str()
strmov(query,"INSERT INTO test_long_data_str VALUES(?,?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -2378,7 +2383,7 @@ static void test_long_data_str()
bind[1].is_null= &is_null[1];
is_null[1]=0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
length = 40;
strmov(data,"MySQL AB");
......@@ -2387,12 +2392,12 @@ static void test_long_data_str()
for(i=0; i < 4; i++)
{
rc = mysql_send_long_data(stmt,1,(char *)data,5);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
/* execute */
rc = mysql_execute(stmt);
fprintf(stdout," mysql_execute() returned %d\n",rc);
mystmt(stmt,rc);
check_execute(stmt,rc);
mysql_stmt_close(stmt);
......@@ -2416,6 +2421,9 @@ static void test_long_data_str()
while (i--)
strxmov(data,data,"MySQL",NullS);
verify_col_data("test_long_data_str","longstr", data);
rc = mysql_query(mysql,"DROP TABLE test_long_data_str");
myquery(rc);
}
......@@ -2428,8 +2436,11 @@ static void test_long_data_str1()
int rc, i;
char data[255];
long length, length1;
ulong max_blob_length, blob_length;
my_bool true_value;
MYSQL_RES *result;
MYSQL_BIND bind[2];
MYSQL_FIELD *field;
myheader("test_long_data_str1");
......@@ -2450,7 +2461,7 @@ static void test_long_data_str1()
strmov(query,"INSERT INTO test_long_data_str VALUES(?,?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -2465,23 +2476,23 @@ static void test_long_data_str1()
bind[1].buffer_type=FIELD_TYPE_BLOB;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
length = my_sprintf(data, (data, "MySQL AB"));
/* supply data in pieces */
for (i=0; i < 3; i++)
{
rc = mysql_send_long_data(stmt,0,data,length);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_send_long_data(stmt,1,data,2);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
/* execute */
rc = mysql_execute(stmt);
fprintf(stdout," mysql_execute() returned %d\n",rc);
mystmt(stmt,rc);
check_execute(stmt,rc);
mysql_stmt_close(stmt);
......@@ -2494,6 +2505,11 @@ static void test_long_data_str1()
/* get the result */
result = mysql_store_result(mysql);
mysql_field_seek(result, 1);
field= mysql_fetch_field(result);
max_blob_length= field->max_length;
mytest(result);
assert(1 == my_process_result_set(result));
......@@ -2504,6 +2520,68 @@ static void test_long_data_str1()
my_sprintf(data,(data,"%d",i*2));
verify_col_data("test_long_data_str","length(blb)",data);
/* Test length of field->max_length */
stmt= mysql_simple_prepare(mysql, "SELECT * from test_long_data_str");
check_stmt(stmt);
verify_param_count(stmt,0);
rc = mysql_execute(stmt);
check_execute(stmt,rc);
rc= mysql_stmt_store_result(stmt);
check_execute(stmt,rc);
result= mysql_get_metadata(stmt);
field= mysql_fetch_fields(result);
/* First test what happens if STMT_ATTR_UPDATE_MAX_LENGTH is not used */
DBUG_ASSERT(field->max_length == 0);
mysql_free_result(result);
/* Enable updating of field->max_length */
true_value= 1;
mysql_stmt_attr_set(stmt, STMT_ATTR_UPDATE_MAX_LENGTH, (void*) &true_value);
rc = mysql_execute(stmt);
check_execute(stmt,rc);
rc= mysql_stmt_store_result(stmt);
check_execute(stmt,rc);
result= mysql_get_metadata(stmt);
field= mysql_fetch_fields(result);
DBUG_ASSERT(field->max_length == max_blob_length);
/* Fetch results into a data buffer that is smaller than data */
bzero((char*) bind, sizeof(*bind));
bind[0].buffer_type= MYSQL_TYPE_BLOB;
bind[0].buffer= (char *) &data; /* this buffer won't be altered */
bind[0].buffer_length= 16;
bind[0].length= &blob_length;
rc= mysql_bind_result(stmt,bind);
data[16]= 0;
DBUG_ASSERT((mysql_fetch(stmt) == 0));
DBUG_ASSERT(strlen(data) == 16);
DBUG_ASSERT(blob_length == max_blob_length);
/* Fetch all data */
bzero((char*) (bind+1), sizeof(*bind));
bind[1].buffer_type= MYSQL_TYPE_BLOB;
bind[1].buffer= (char *) &data; /* this buffer won't be altered */
bind[1].buffer_length= sizeof(data);
bind[1].length= &blob_length;
bzero(data, sizeof(data));
mysql_stmt_fetch_column(stmt, bind+1, 0, 0);
DBUG_ASSERT(strlen(data) == max_blob_length);
mysql_free_result(result);
mysql_stmt_close(stmt);
/* Drop created table */
rc = mysql_query(mysql,"DROP TABLE test_long_data_str");
myquery(rc);
}
......@@ -2539,7 +2617,7 @@ static void test_long_data_bin()
strmov(query,"INSERT INTO test_long_data_bin VALUES(?,?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -2555,7 +2633,7 @@ static void test_long_data_bin()
bind[1].length= 0; /* Will not be used */
bind[1].is_null= 0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
length = 10;
strmov(data,"MySQL AB");
......@@ -2566,13 +2644,13 @@ static void test_long_data_bin()
for (i=0; i < 100; i++)
{
rc = mysql_send_long_data(stmt,1,(char *)data,4);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
}
/* execute */
rc = mysql_execute(stmt);
fprintf(stdout," mysql_execute() returned %d\n",rc);
mystmt(stmt,rc);
check_execute(stmt,rc);
mysql_stmt_close(stmt);
......@@ -2634,7 +2712,7 @@ static void test_simple_delete()
/* insert by prepare */
strmov(query,"DELETE FROM test_simple_delete WHERE col1=? AND col2=? AND col3=100");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -2654,10 +2732,10 @@ static void test_simple_delete()
bind[0].is_null= 0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_affected_rows(1);
......@@ -2714,7 +2792,7 @@ static void test_update()
strmov(query,"INSERT INTO test_update(col2,col3) VALUES(?,?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -2733,18 +2811,18 @@ static void test_update()
bind[1].is_null= 0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
nData=100;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_affected_rows(1);
mysql_stmt_close(stmt);
strmov(query,"UPDATE test_update SET col2=? WHERE col3=?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
nData=100;
......@@ -2761,10 +2839,10 @@ static void test_update()
bind[1].is_null= 0;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_affected_rows(1);
mysql_stmt_close(stmt);
......@@ -2810,12 +2888,12 @@ static void test_prepare_noparam()
/* insert by prepare */
strmov(query,"INSERT INTO my_prepare VALUES(10,'venu')");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
......@@ -2889,16 +2967,16 @@ static void test_bind_result()
bind[1].is_null= &is_null[1];
stmt = mysql_simple_prepare(mysql, "SELECT * FROM test_bind_result");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 1: %d,%s(%lu)",nData, szData, length1);
assert(nData == 10);
......@@ -2906,7 +2984,7 @@ static void test_bind_result()
assert(length1 == 4);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 2: %d,%s(%lu)",nData, szData, length1);
assert(nData == 20);
......@@ -2915,7 +2993,7 @@ static void test_bind_result()
length=99;
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
if (is_null[0])
fprintf(stdout,"\n row 3: NULL,%s(%lu)", szData, length1);
......@@ -3010,16 +3088,16 @@ static void test_bind_result_ext()
bind[7].buffer_length= sizeof(bData);
stmt = mysql_simple_prepare(mysql, "select * from test_bind_result");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n data (tiny) : %d", t_data);
fprintf(stdout, "\n data (short) : %d", s_data);
......@@ -3137,16 +3215,16 @@ static void test_bind_result_ext1()
}
stmt = mysql_simple_prepare(mysql, "select * from test_bind_result");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n data (tiny) : %s(%lu)", t_data, length[0]);
fprintf(stdout, "\n data (short) : %f(%lu)", s_data, length[1]);
......@@ -3197,7 +3275,7 @@ static void bind_fetch(int row_count)
my_bool is_null[7];
stmt = mysql_simple_prepare(mysql,"INSERT INTO test_bind_fetch VALUES(?,?,?,?,?,?,?)");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt, 7);
......@@ -3209,7 +3287,7 @@ static void bind_fetch(int row_count)
bind[i].is_null= 0;
}
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
while (count--)
{
......@@ -3220,7 +3298,7 @@ static void bind_fetch(int row_count)
rc+= 12;
}
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
rc = mysql_commit(mysql);
......@@ -3257,18 +3335,18 @@ static void bind_fetch(int row_count)
bind[6].buffer_length= sizeof(s_data);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
while (row_count--)
{
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n");
fprintf(stdout, "\n tiny : %ld(%lu)", data[0], length[0]);
......@@ -3402,17 +3480,17 @@ static void test_fetch_date()
assert(1 == my_stmt_result("SELECT * FROM test_bind_result"));
stmt = mysql_simple_prepare(mysql, "SELECT * FROM test_bind_result");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
ts_4[0]='\0';
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n date : %s(%lu)", date, d_length);
fprintf(stdout, "\n time : %s(%lu)", time, t_length);
......@@ -3730,7 +3808,7 @@ static void test_prepare_ext()
/* insert by prepare - all integers */
strmov(query,(char *)"INSERT INTO test_prepare_ext(c1,c2,c3,c4,c5,c6) VALUES(?,?,?,?,?,?)");
stmt = mysql_simple_prepare(mysql,query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,6);
......@@ -3766,7 +3844,7 @@ static void test_prepare_ext()
}
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
/*
* integer to integer
......@@ -3774,7 +3852,7 @@ static void test_prepare_ext()
for (nData=0; nData<10; nData++, tData++, sData++,bData++)
{
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
mysql_stmt_close(stmt);
......@@ -3783,11 +3861,11 @@ static void test_prepare_ext()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"SELECT c1,c2,c3,c4,c5,c6 FROM test_prepare_ext");
mystmt_init(stmt);
check_stmt(stmt);
/* get the result */
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(nData == (int)my_process_stmt_result(stmt));
......@@ -3929,7 +4007,7 @@ static void test_insert()
/* insert by prepare */
stmt = mysql_simple_prepare(mysql, "INSERT INTO test_prep_insert VALUES(?,?)");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -3947,14 +4025,14 @@ static void test_insert()
bind[1].length= &length;
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
/* now, execute the prepared statement to insert 10 records.. */
for (tiny_data=0; tiny_data < 3; tiny_data++)
{
length = my_sprintf(str_data, (str_data, "MySQL%d",tiny_data));
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
mysql_stmt_close(stmt);
......@@ -4001,7 +4079,7 @@ static void test_prepare_resultset()
myquery(rc);
stmt = mysql_simple_prepare(mysql, "SELECT * FROM test_prepare_resultset");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
......@@ -4114,25 +4192,25 @@ static void test_stmt_close()
strmov(query,"DO \"nothing\"");
stmt1= mysql_simple_prepare(lmysql, query);
mystmt_init(stmt1);
check_stmt(stmt1);
verify_param_count(stmt1, 0);
strmov(query,"INSERT INTO test_stmt_close(id) VALUES(?)");
stmt_x= mysql_simple_prepare(mysql, query);
mystmt_init(stmt_x);
check_stmt(stmt_x);
verify_param_count(stmt_x, 1);
strmov(query,"UPDATE test_stmt_close SET id=? WHERE id=?");
stmt3= mysql_simple_prepare(lmysql, query);
mystmt_init(stmt3);
check_stmt(stmt3);
verify_param_count(stmt3, 2);
strmov(query,"SELECT * FROM test_stmt_close WHERE id=?");
stmt2= mysql_simple_prepare(lmysql, query);
mystmt_init(stmt2);
check_stmt(stmt2);
verify_param_count(stmt2, 1);
......@@ -4160,10 +4238,10 @@ static void test_stmt_close()
bind[0].is_null=0;
rc = mysql_bind_param(stmt_x, bind);
mystmt(stmt_x, rc);
check_execute(stmt_x, rc);
rc = mysql_execute(stmt_x);
mystmt(stmt_x, rc);
check_execute(stmt_x, rc);
verify_st_affected_rows(stmt_x, 1);
......@@ -4199,7 +4277,7 @@ static void test_set_variable()
mysql_autocommit(mysql, TRUE);
stmt1 = mysql_simple_prepare(mysql, "show variables like 'max_error_count'");
mystmt_init(stmt1);
check_stmt(stmt1);
get_bind[0].buffer_type= MYSQL_TYPE_STRING;
get_bind[0].buffer= (char *)var;
......@@ -4214,13 +4292,13 @@ static void test_set_variable()
get_bind[1].length= 0;
rc = mysql_execute(stmt1);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
rc = mysql_bind_result(stmt1, get_bind);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
rc = mysql_fetch(stmt1);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
fprintf(stdout, "\n max_error_count(default): %d", get_count);
def_count= get_count;
......@@ -4230,7 +4308,7 @@ static void test_set_variable()
assert(rc == MYSQL_NO_DATA);
stmt = mysql_simple_prepare(mysql, "set max_error_count=?");
mystmt_init(stmt);
check_stmt(stmt);
set_bind[0].buffer_type= MYSQL_TYPE_LONG;
set_bind[0].buffer= (char *)&set_count;
......@@ -4238,19 +4316,19 @@ static void test_set_variable()
set_bind[0].length= 0;
rc = mysql_bind_param(stmt, set_bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
set_count= 31;
rc= mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
mysql_commit(mysql);
rc = mysql_execute(stmt1);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
rc = mysql_fetch(stmt1);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
fprintf(stdout, "\n max_error_count : %d", get_count);
assert(get_count == set_count);
......@@ -4261,13 +4339,13 @@ static void test_set_variable()
/* restore back to default */
set_count= def_count;
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt1);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
rc = mysql_fetch(stmt1);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
fprintf(stdout, "\n max_error_count(default): %d", get_count);
assert(get_count == set_count);
......@@ -4305,7 +4383,7 @@ static void test_insert_meta()
strmov(query,"INSERT INTO test_prep_insert VALUES(10,'venu1','test')");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
......@@ -4316,7 +4394,7 @@ static void test_insert_meta()
strmov(query,"INSERT INTO test_prep_insert VALUES(?,'venu',?)");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -4368,7 +4446,7 @@ static void test_update_meta()
strmov(query,"UPDATE test_prep_update SET col1=10, col2='venu1' WHERE col3='test'");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
......@@ -4379,7 +4457,7 @@ static void test_update_meta()
strmov(query,"UPDATE test_prep_update SET col1=?, col2='venu' WHERE col3=?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -4435,7 +4513,7 @@ static void test_select_meta()
strmov(query,"SELECT * FROM test_prep_select WHERE col1=10");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,0);
......@@ -4444,7 +4522,7 @@ static void test_select_meta()
strmov(query,"SELECT col1, col3 from test_prep_select WHERE col1=? AND col3='test' AND col2= ?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,2);
......@@ -4579,10 +4657,10 @@ static void test_multi_stmt()
myquery(rc);
stmt = mysql_simple_prepare(mysql, "SELECT * FROM test_multi_table WHERE id = ?");
mystmt_init(stmt);
check_stmt(stmt);
stmt2 = mysql_simple_prepare(mysql, "UPDATE test_multi_table SET name='updated' WHERE id=10");
mystmt_init(stmt2);
check_stmt(stmt2);
verify_param_count(stmt,1);
......@@ -4601,18 +4679,18 @@ static void test_multi_stmt()
bind[1].is_null= &is_null[1];
rc = mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
id = 10;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
id = 999;
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n int_data: %d(%lu)", id, length[0]);
fprintf(stdout, "\n str_data: %s(%lu)", name, length[1]);
......@@ -4624,23 +4702,23 @@ static void test_multi_stmt()
/* alter the table schema now */
stmt1 = mysql_simple_prepare(mysql,"DELETE FROM test_multi_table WHERE id = ? AND name=?");
mystmt_init(stmt1);
check_stmt(stmt1);
verify_param_count(stmt1,2);
rc = mysql_bind_param(stmt1, bind);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
rc = mysql_execute(stmt2);
mystmt(stmt2, rc);
check_execute(stmt2, rc);
verify_st_affected_rows(stmt2, 1);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n int_data: %d(%lu)", id, length[0]);
fprintf(stdout, "\n str_data: %s(%lu)", name, length[1]);
......@@ -4651,14 +4729,14 @@ static void test_multi_stmt()
assert(rc == MYSQL_NO_DATA);
rc = mysql_execute(stmt1);
mystmt(stmt1, rc);
check_execute(stmt1, rc);
verify_st_affected_rows(stmt1, 1);
mysql_stmt_close(stmt1);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
assert(rc == MYSQL_NO_DATA);
......@@ -4850,7 +4928,7 @@ static void test_prepare_alter()
myquery(rc);
stmt = mysql_simple_prepare(mysql, "INSERT INTO test_prep_alter VALUES(?,'monty')");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,1);
......@@ -4862,18 +4940,18 @@ static void test_prepare_alter()
bind[0].is_null= &is_null;
rc = mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
id = 30; length= 0;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
if (thread_query((char *)"ALTER TABLE test_prep_alter change id id_new varchar(20)"))
exit(0);
is_null=1;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(4 == my_stmt_result("SELECT * FROM test_prep_alter"));
......@@ -5034,7 +5112,7 @@ static void test_prepare_multi_statements()
}
strmov(query, "select 1; select 'another value'");
stmt = mysql_simple_prepare(mysql_local,query);
mystmt_init_r(stmt);
check_stmt_r(stmt);
mysql_close(mysql_local);
}
......@@ -5089,19 +5167,19 @@ static void test_store_result()
length1= 0;
stmt = mysql_simple_prepare(mysql, "SELECT * FROM test_store_result");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 1: %ld,%s(%lu)", nData, szData, length1);
assert(nData == 10);
......@@ -5109,7 +5187,7 @@ static void test_store_result()
assert(length1 == 4);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 2: %ld,%s(%lu)",nData, szData, length1);
assert(nData == 20);
......@@ -5118,7 +5196,7 @@ static void test_store_result()
length=99;
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
if (is_null[0])
fprintf(stdout,"\n row 3: NULL,%s(%lu)", szData, length1);
......@@ -5130,13 +5208,13 @@ static void test_store_result()
assert(rc == MYSQL_NO_DATA);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 1: %ld,%s(%lu)",nData, szData, length1);
assert(nData == 10);
......@@ -5144,7 +5222,7 @@ static void test_store_result()
assert(length1 == 4);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 2: %ld,%s(%lu)",nData, szData, length1);
assert(nData == 20);
......@@ -5153,7 +5231,7 @@ static void test_store_result()
length=99;
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
if (is_null[0])
fprintf(stdout,"\n row 3: NULL,%s(%lu)", szData, length1);
......@@ -5200,13 +5278,13 @@ static void test_store_result1()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"SELECT * FROM test_store_result");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = 0;
while (mysql_fetch(stmt) != MYSQL_NO_DATA)
......@@ -5215,10 +5293,10 @@ static void test_store_result1()
assert(rc == 3);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = 0;
while (mysql_fetch(stmt) != MYSQL_NO_DATA)
......@@ -5271,24 +5349,24 @@ static void test_store_result2()
strmov((char *)query , "SELECT col1 FROM test_store_result where col1= ?");
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
nData = 10; length= 0;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
nData = 0;
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 1: %d",nData);
assert(nData == 10);
......@@ -5298,14 +5376,14 @@ static void test_store_result2()
nData = 20;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
nData = 0;
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 1: %d",nData);
assert(nData == 20);
......@@ -5363,23 +5441,23 @@ static void test_subselect()
bind[0].is_null= 0;
stmt = mysql_simple_prepare(mysql, "INSERT INTO test_sub2(id) SELECT * FROM test_sub1 WHERE id=?", 100);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
id = 2;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_st_affected_rows(stmt, 1);
id = 9;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_st_affected_rows(stmt, 0);
......@@ -5392,20 +5470,20 @@ static void test_subselect()
assert(1 == my_stmt_result("SELECT ROW(1,7) IN (select id, id1 from test_sub2 WHERE id1=7)"));
stmt = mysql_simple_prepare(mysql, query, 150);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_param(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_bind_result(stmt,bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
id = 7;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 1: %d",id);
assert(id == 1);
......@@ -5415,10 +5493,10 @@ static void test_subselect()
id= 8;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n row 1: %d",id);
assert(id == 0);
......@@ -5446,7 +5524,7 @@ static void test_bind_date_conv(uint row_count)
uint year, month, day, hour, minute, sec;
stmt = mysql_simple_prepare(mysql,"INSERT INTO test_date VALUES(?,?,?,?)");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt, 4);
......@@ -5475,7 +5553,7 @@ static void test_bind_date_conv(uint row_count)
}
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
for (count= 0; count < row_count; count++)
{
......@@ -5491,7 +5569,7 @@ static void test_bind_date_conv(uint row_count)
tm[i].second= sec+count;
}
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
rc = mysql_commit(mysql);
......@@ -5505,18 +5583,18 @@ static void test_bind_date_conv(uint row_count)
myquery(rc);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
for (count=0; count < row_count; count++)
{
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n");
for (i= 0; i < array_elements(bind); i++)
......@@ -5697,25 +5775,25 @@ static void test_pure_coverage()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"insert into test_pure(c67788) values(10)");
mystmt_init_r(stmt);
check_stmt_r(stmt);
/* Query without params and result should allow to bind 0 arrays */
stmt = mysql_simple_prepare(mysql,"insert into test_pure(c2) values(10)");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_param(stmt, (MYSQL_BIND*)0);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_bind_result(stmt, (MYSQL_BIND*)0);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql,"insert into test_pure(c2) values(?)");
mystmt_init(stmt);
check_stmt(stmt);
bind[0].length= &length;
bind[0].is_null= 0;
......@@ -5723,32 +5801,32 @@ static void test_pure_coverage()
bind[0].buffer_type= MYSQL_TYPE_GEOMETRY;
rc = mysql_bind_param(stmt, bind);
mystmt_r(stmt, rc); /* unsupported buffer type */
check_execute_r(stmt, rc); /* unsupported buffer type */
bind[0].buffer_type= MYSQL_TYPE_STRING;
rc = mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql,"select * from test_pure");
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
bind[0].buffer_type= MYSQL_TYPE_GEOMETRY;
rc = mysql_bind_result(stmt, bind);
mystmt_r(stmt, rc); /* unsupported buffer type */
check_execute_r(stmt, rc); /* unsupported buffer type */
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt_r(stmt, rc); /* commands out of sync */
check_execute_r(stmt, rc); /* commands out of sync */
mysql_stmt_close(stmt);
......@@ -5782,10 +5860,10 @@ static void test_buffers()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"select str from test_buffer");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
bzero(buffer, 20); /* Avoid overruns in printf() */
......@@ -5796,14 +5874,14 @@ static void test_buffers()
bind[0].buffer= (char *)buffer;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
buffer[1]='X';
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n data: %s (%lu)", buffer, length);
assert(buffer[0] == 'M');
assert(buffer[1] == 'X');
......@@ -5811,30 +5889,30 @@ static void test_buffers()
bind[0].buffer_length=8;
rc = mysql_bind_result(stmt, bind);/* re-bind */
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n data: %s (%lu)", buffer, length);
assert(strncmp(buffer,"Database",8) == 0);
assert(length == 8);
bind[0].buffer_length=12;
rc = mysql_bind_result(stmt, bind);/* re-bind */
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n data: %s (%lu)", buffer, length);
assert(strcmp(buffer,"Open-Source") == 0);
assert(length == 11);
bind[0].buffer_length=6;
rc = mysql_bind_result(stmt, bind);/* re-bind */
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n data: %s (%lu)", buffer, length);
assert(strncmp(buffer,"Popula",6) == 0);
assert(length == 7);
......@@ -5860,7 +5938,7 @@ static void test_open_direct()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"INSERT INTO test_open_direct values(10,'mysql')");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_query(mysql, "SELECT * FROM test_open_direct");
myquery(rc);
......@@ -5872,7 +5950,7 @@ static void test_open_direct()
mysql_free_result(result);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_st_affected_rows(stmt, 1);
......@@ -5886,7 +5964,7 @@ static void test_open_direct()
mysql_free_result(result);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
verify_st_affected_rows(stmt, 1);
......@@ -5903,41 +5981,41 @@ static void test_open_direct()
/* run a direct query in the middle of a fetch */
stmt= mysql_simple_prepare(mysql,"SELECT * FROM test_open_direct");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_query(mysql,"INSERT INTO test_open_direct(id) VALUES(20)");
myquery_r(rc);
rc = mysql_stmt_close(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_query(mysql,"INSERT INTO test_open_direct(id) VALUES(20)");
myquery(rc);
/* run a direct query with store result */
stmt= mysql_simple_prepare(mysql,"SELECT * FROM test_open_direct");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_query(mysql,"drop table test_open_direct");
myquery(rc);
rc = mysql_stmt_close(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
/*
......@@ -5954,10 +6032,10 @@ static void test_fetch_nobuffs()
stmt = mysql_simple_prepare(mysql,"SELECT DATABASE(), CURRENT_USER(), \
CURRENT_DATE(), CURRENT_TIME()");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = 0;
while (mysql_fetch(stmt) != MYSQL_NO_DATA)
......@@ -5977,10 +6055,10 @@ static void test_fetch_nobuffs()
bind[3].buffer= (char *)str[3];
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = 0;
while (mysql_fetch(stmt) != MYSQL_NO_DATA)
......@@ -6027,10 +6105,10 @@ static void test_ushort_bug()
stmt = mysql_simple_prepare(mysql,"SELECT * FROM test_ushort");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
bind[0].buffer_type= MYSQL_TYPE_SHORT;
bind[0].buffer= (char *)&short_value;
......@@ -6053,10 +6131,10 @@ static void test_ushort_bug()
bind[3].length= &t_length;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout,"\n ushort : %d (%ld)", short_value, s_length);
fprintf(stdout,"\n ulong : %ld (%ld)", long_value, l_length);
......@@ -6111,10 +6189,10 @@ static void test_sshort_bug()
stmt = mysql_simple_prepare(mysql,"SELECT * FROM test_sshort");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
bind[0].buffer_type= MYSQL_TYPE_SHORT;
bind[0].buffer= (char *)&short_value;
......@@ -6137,10 +6215,10 @@ static void test_sshort_bug()
bind[3].length= &t_length;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout,"\n sshort : %d (%ld)", short_value, s_length);
fprintf(stdout,"\n slong : %ld (%ld)", long_value, l_length);
......@@ -6195,10 +6273,10 @@ static void test_stiny_bug()
stmt = mysql_simple_prepare(mysql,"SELECT * FROM test_stiny");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
bind[0].buffer_type= MYSQL_TYPE_SHORT;
bind[0].buffer= (char *)&short_value;
......@@ -6221,10 +6299,10 @@ static void test_stiny_bug()
bind[3].length= &t_length;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout,"\n sshort : %d (%ld)", short_value, s_length);
fprintf(stdout,"\n slong : %ld (%ld)", long_value, l_length);
......@@ -6280,10 +6358,10 @@ static void test_field_misc()
mysql_free_result(result);
stmt = mysql_simple_prepare(mysql,"SELECT @@autocommit");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
result = mysql_get_metadata(stmt);
mytest(result);
......@@ -6300,10 +6378,10 @@ static void test_field_misc()
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "SELECT @@table_type");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= table_type;
......@@ -6312,10 +6390,10 @@ static void test_field_misc()
bind[0].buffer_length= NAME_LEN;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n default table type: %s(%ld)", table_type, type_length);
rc = mysql_fetch(stmt);
......@@ -6324,13 +6402,13 @@ static void test_field_misc()
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "SELECT @@table_type");
mystmt_init(stmt);
check_stmt(stmt);
result = mysql_get_metadata(stmt);
mytest(result);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
......@@ -6344,13 +6422,13 @@ static void test_field_misc()
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "SELECT @@max_error_count");
mystmt_init(stmt);
check_stmt(stmt);
result = mysql_get_metadata(stmt);
mytest(result);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
......@@ -6364,13 +6442,13 @@ static void test_field_misc()
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "SELECT @@max_allowed_packet");
mystmt_init(stmt);
check_stmt(stmt);
result = mysql_get_metadata(stmt);
mytest(result);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
......@@ -6384,13 +6462,13 @@ static void test_field_misc()
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "SELECT @@sql_warnings");
mystmt_init(stmt);
check_stmt(stmt);
result = mysql_get_metadata(stmt);
mytest(result);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
......@@ -6445,10 +6523,10 @@ static void test_set_option()
fprintf(stdout,"\n with SQL_SELECT_LIMIT=2 (prepare)");
stmt = mysql_simple_prepare(mysql, "SELECT * FROM test_limit");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(2 == my_process_stmt_result(stmt));
......@@ -6460,10 +6538,10 @@ static void test_set_option()
myquery(rc);
stmt = mysql_simple_prepare(mysql, "SELECT * FROM test_limit");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(4 == my_process_stmt_result(stmt));
......@@ -6544,7 +6622,7 @@ static void test_prepare_grant()
myquery_r(rc);
stmt= mysql_simple_prepare(mysql,"DELETE FROM test_grant");
mystmt_init_r(stmt);
check_stmt_r(stmt);
assert(4 == my_stmt_result("SELECT * FROM test_grant"));
......@@ -6590,10 +6668,10 @@ static void test_frm_bug()
myquery(rc);
stmt = mysql_simple_prepare(mysql, "show variables like 'datadir'");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= data_dir;
......@@ -6603,10 +6681,10 @@ static void test_frm_bug()
bind[1]=bind[0];
rc = mysql_bind_result(stmt,bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout,"\n data directory: %s", data_dir);
......@@ -6673,7 +6751,7 @@ static void test_decimal_bug()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"select c1 from test_decimal_bug where c1= ?");
mystmt_init(stmt);
check_stmt(stmt);
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= (char *)data;
......@@ -6683,18 +6761,18 @@ static void test_decimal_bug()
is_null= 0;
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
strcpy(data, "8.0");
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
data[0]=0;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n data: %s", data);
assert(strcmp(data, "8.00")==0);
......@@ -6704,14 +6782,14 @@ static void test_decimal_bug()
strcpy(data, "5.61");
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
data[0]=0;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n data: %s", data);
assert(strcmp(data, "5.61")==0);
......@@ -6721,21 +6799,21 @@ static void test_decimal_bug()
is_null= 1;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
assert(rc == MYSQL_NO_DATA);
strcpy(data, "10.22"); is_null= 0;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
data[0]=0;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n data: %s", data);
assert(strcmp(data, "10.22")==0);
......@@ -6769,10 +6847,10 @@ static void test_explain_bug()
myquery(rc);
stmt = mysql_simple_prepare(mysql, "explain test_explain");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert( 2 == my_process_stmt_result(stmt));
......@@ -6805,10 +6883,10 @@ static void test_explain_bug()
mysql_stmt_close(stmt);
stmt = mysql_simple_prepare(mysql, "explain select id, name FROM test_explain");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert( 1 == my_process_stmt_result(stmt));
......@@ -7060,7 +7138,7 @@ static void test_logs()
length= (ulong)(strmov((char *)data,"INSERT INTO test_logs VALUES(?,?)") - data);
stmt = mysql_prepare(mysql, data, length);
mystmt_init(stmt);
check_stmt(stmt);
bind[0].buffer_type= MYSQL_TYPE_SHORT;
bind[0].buffer= (char *)&id;
......@@ -7077,61 +7155,61 @@ static void test_logs()
length= (ulong)(strmov((char *)data,"MySQL - Open Source Database")- data);
rc = mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
strmov((char *)data, "'");
length= 1;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
strmov((char *)data, "\"");
length= 1;
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
length= (ulong)(strmov((char *)data, "my\'sql\'")-data);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
length= (ulong)(strmov((char *)data, "my\"sql\"")-data);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
length= (ulong)(strmov((char *)data,"INSERT INTO test_logs VALUES(20,'mysql')") - data);
stmt = mysql_prepare(mysql, data, length);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
length= (ulong)(strmov((char *)data, "SELECT * FROM test_logs WHERE id=?") - data);
stmt = mysql_prepare(mysql, data, length);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
bind[1].buffer_length= 255;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n id : %d", id);
fprintf(stdout, "\n name : %s(%ld)", data, length);
......@@ -7141,7 +7219,7 @@ static void test_logs()
assert(strcmp(data,"MySQL - Open Source")==0);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n name : %s(%ld)", data, length);
......@@ -7149,7 +7227,7 @@ static void test_logs()
assert(strcmp(data,"'")==0);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n name : %s(%ld)", data, length);
......@@ -7157,7 +7235,7 @@ static void test_logs()
assert(strcmp(data,"\"")==0);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n name : %s(%ld)", data, length);
......@@ -7165,7 +7243,7 @@ static void test_logs()
assert(strcmp(data,"my\'sql\'")==0);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n name : %s(%ld)", data, length);
......@@ -7216,29 +7294,29 @@ static void test_nstmts()
length = (long)(strmov(query, "insert into test_nstmts values(?)")-query);
stmt = mysql_prepare(mysql, query, length);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_param(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_close(stmt);
}
stmt = mysql_simple_prepare(mysql," select count(*) from test_nstmts");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
i = 0;
rc = mysql_bind_result(stmt, bind);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "\n total rows: %d", i);
assert( i == total_stmts);
......@@ -7275,7 +7353,7 @@ static void test_fetch_seek()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"select * from test_seek");
mystmt_init(stmt);
check_stmt(stmt);
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&c1;
......@@ -7294,16 +7372,16 @@ static void test_fetch_seek()
bind[2].buffer_length= sizeof(c3);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n row 0: %ld,%s,%s", c1,c2,c3);
......@@ -7312,32 +7390,32 @@ static void test_fetch_seek()
row = mysql_stmt_row_seek(stmt, row);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n row 2: %ld,%s,%s", c1,c2,c3);
row = mysql_stmt_row_seek(stmt, row);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n row 2: %ld,%s,%s", c1,c2,c3);
mysql_stmt_data_seek(stmt, 0);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n row 0: %ld,%s,%s", c1,c2,c3);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
assert(rc == MYSQL_NO_DATA);
......@@ -7370,7 +7448,7 @@ static void test_fetch_offset()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"select * from test_column");
mystmt_init(stmt);
check_stmt(stmt);
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= (char *)data;
......@@ -7379,43 +7457,43 @@ static void test_fetch_offset()
bind[0].length= &length;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt_r(stmt,rc);
check_execute_r(stmt,rc);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
data[0]= '\0';
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 1: %s (%ld)", data, length);
assert(strncmp(data,"abcd",4) == 0 && length == 10);
rc = mysql_fetch_column(stmt,bind,0,5);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 1: %s (%ld)", data, length);
assert(strncmp(data,"fg",2) == 0 && length == 10);
rc = mysql_fetch_column(stmt,bind,0,9);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 0: %s (%ld)", data, length);
assert(strncmp(data,"j",1) == 0 && length == 10);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
is_null= 0;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(is_null == 1);
......@@ -7423,7 +7501,7 @@ static void test_fetch_offset()
assert(rc == MYSQL_NO_DATA);
rc = mysql_fetch_column(stmt,bind,1,0);
mystmt_r(stmt,rc);
check_execute_r(stmt,rc);
mysql_stmt_close(stmt);
}
......@@ -7450,7 +7528,7 @@ static void test_fetch_column()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"select * from test_column order by c2 desc");
mystmt_init(stmt);
check_stmt(stmt);
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&bc1;
......@@ -7464,19 +7542,19 @@ static void test_fetch_column()
bind[1].length= &bl2;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch_column(stmt,bind,1,0); /* No-op at this point */
mystmt_r(stmt,rc);
check_execute_r(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n row 0: %d,%s", bc1,bc2);
......@@ -7488,13 +7566,13 @@ static void test_fetch_column()
bind[0].length= &l2;
rc = mysql_fetch_column(stmt,bind,1,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 1: %s(%ld)", c2, l2);
assert(strncmp(c2,"venu",4)==0 && l2 == 4);
c2[0]= '\0'; l2= 0;
rc = mysql_fetch_column(stmt,bind,1,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 1: %s(%ld)", c2, l2);
assert(strcmp(c2,"venu")==0 && l2 == 4);
......@@ -7506,12 +7584,12 @@ static void test_fetch_column()
bind[0].length= &l1;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 0: %d(%ld)", c1, l1);
assert(c1 == 1 && l1 == 4);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n row 1: %d,%s", bc1,bc2);
......@@ -7523,13 +7601,13 @@ static void test_fetch_column()
bind[0].length= &l2;
rc = mysql_fetch_column(stmt,bind,1,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 1: %s(%ld)", c2, l2);
assert(strncmp(c2,"mysq",4)==0 && l2 == 5);
c2[0]= '\0'; l2= 0;
rc = mysql_fetch_column(stmt,bind,1,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 1: %si(%ld)", c2, l2);
assert(strcmp(c2,"mysql")==0 && l2 == 5);
......@@ -7541,7 +7619,7 @@ static void test_fetch_column()
bind[0].length= &l1;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 0: %d(%ld)", c1, l1);
assert(c1 == 2 && l1 == 4);
......@@ -7549,7 +7627,7 @@ static void test_fetch_column()
assert(rc == MYSQL_NO_DATA);
rc = mysql_fetch_column(stmt,bind,1,0);
mystmt_r(stmt,rc);
check_execute_r(stmt,rc);
mysql_stmt_close(stmt);
}
......@@ -7634,10 +7712,10 @@ static void test_mem_overun()
assert(1 == my_process_result(mysql));
stmt = mysql_simple_prepare(mysql, "select * from t_mem_overun");
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
field_res = mysql_get_metadata(stmt);
mytest(field_res);
......@@ -7646,10 +7724,10 @@ static void test_mem_overun()
assert( 1000 == mysql_num_fields(field_res));
rc = mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
assert(rc == MYSQL_NO_DATA);
......@@ -7682,7 +7760,7 @@ static void test_free_result()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"select * from test_free_result");
mystmt_init(stmt);
check_stmt(stmt);
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&bc1;
......@@ -7691,13 +7769,13 @@ static void test_free_result()
bind[0].length= &bl1;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
c2[0]= '\0'; l2= 0;
bind[0].buffer_type= MYSQL_TYPE_STRING;
......@@ -7707,12 +7785,12 @@ static void test_free_result()
bind[0].length= &l2;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 0: %s(%ld)", c2, l2);
assert(strncmp(c2,"1",1)==0 && l2 == 1);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
c1= 0, l2= 0;
bind[0].buffer_type= MYSQL_TYPE_LONG;
......@@ -7722,7 +7800,7 @@ static void test_free_result()
bind[0].length= &l2;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 0: %d(%ld)", c1, l2);
assert(c1 == 2 && l2 == 4);
......@@ -7730,7 +7808,7 @@ static void test_free_result()
myquery_r(rc); /* error should be, COMMANDS OUT OF SYNC */
rc = mysql_stmt_free_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_query(mysql,"drop table test_free_result");
myquery(rc); /* should be successful */
......@@ -7761,7 +7839,7 @@ static void test_free_store_result()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"select * from test_free_result");
mystmt_init(stmt);
check_stmt(stmt);
bind[0].buffer_type= MYSQL_TYPE_LONG;
bind[0].buffer= (char *)&bc1;
......@@ -7770,16 +7848,16 @@ static void test_free_store_result()
bind[0].length= &bl1;
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_bind_result(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
c2[0]= '\0'; l2= 0;
bind[0].buffer_type= MYSQL_TYPE_STRING;
......@@ -7789,12 +7867,12 @@ static void test_free_store_result()
bind[0].length= &l2;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 1: %s(%ld)", c2, l2);
assert(strncmp(c2,"1",1)==0 && l2 == 1);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
c1= 0, l2= 0;
bind[0].buffer_type= MYSQL_TYPE_LONG;
......@@ -7804,12 +7882,12 @@ static void test_free_store_result()
bind[0].length= &l2;
rc = mysql_fetch_column(stmt,bind,0,0);
mystmt(stmt,rc);
check_execute(stmt,rc);
fprintf(stdout, "\n col 0: %d(%ld)", c1, l2);
assert(c1 == 2 && l2 == 4);
rc = mysql_stmt_free_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_query(mysql,"drop table test_free_result");
myquery(rc);
......@@ -7848,7 +7926,7 @@ static void test_sqlmode()
strcpy(query, "INSERT INTO test_piping VALUES(?||?)");
fprintf(stdout,"\n query: %s", query);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
fprintf(stdout,"\n total parameters: %ld", mysql_param_count(stmt));
......@@ -7865,11 +7943,11 @@ static void test_sqlmode()
bind[1].length= 0;
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
strcpy(c1,"My"); strcpy(c2, "SQL");
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
mysql_stmt_close(stmt);
verify_col_data("test_piping","name","MySQL");
......@@ -7880,7 +7958,7 @@ static void test_sqlmode()
strcpy(query, "SELECT connection_id ()");
fprintf(stdout,"\n query: %s", query);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init_r(stmt);
check_stmt_r(stmt);
/* ANSI */
strcpy(query,"SET SQL_MODE=\"ANSI\"");
......@@ -7891,15 +7969,15 @@ static void test_sqlmode()
strcpy(query, "INSERT INTO test_piping VALUES(?||?)");
fprintf(stdout,"\n query: %s", query);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
fprintf(stdout,"\n total parameters: %ld", mysql_param_count(stmt));
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
strcpy(c1,"My"); strcpy(c2, "SQL");
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
mysql_stmt_close(stmt);
verify_col_data("test_piping","name","MySQL");
......@@ -7908,13 +7986,13 @@ static void test_sqlmode()
strcpy(query, "SELECT connection_id ()");
fprintf(stdout,"\n query: %s", query);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
assert(rc == MYSQL_NO_DATA);
......@@ -7931,13 +8009,13 @@ static void test_sqlmode()
strcpy(query, "SELECT connection_id ()");
fprintf(stdout,"\n query: %s", query);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
assert(rc == MYSQL_NO_DATA);
......@@ -7972,7 +8050,7 @@ static void test_ts()
myquery(rc);
stmt = mysql_simple_prepare(mysql,"INSERT INTO test_ts VALUES(?,?,?),(?,?,?)");
mystmt_init(stmt);
check_stmt(stmt);
ts.year= 2003;
ts.month= 07;
......@@ -8000,10 +8078,10 @@ static void test_ts()
bind[5]= bind[4]= bind[3];
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
mysql_stmt_close(stmt);
......@@ -8012,13 +8090,13 @@ static void test_ts()
verify_col_data("test_ts","c","2003-07-12 21:07:46");
stmt = mysql_simple_prepare(mysql,"SELECT * FROM test_ts");
mystmt_init(stmt);
check_stmt(stmt);
prep_res = mysql_get_metadata(stmt);
mytest(prep_res);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert( 2== my_process_stmt_result(stmt));
field_count= mysql_num_fields(prep_res);
......@@ -8035,13 +8113,13 @@ static void test_ts()
fprintf(stdout,"\n %s", query);
stmt = mysql_prepare(mysql, query, length);
mystmt_init(stmt);
check_stmt(stmt);
rc = mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
while (mysql_fetch(stmt) == 0)
row_count++;
......@@ -8083,7 +8161,7 @@ static void test_bug1500()
myquery(rc);
stmt= mysql_simple_prepare(mysql,"SELECT i FROM test_bg1500 WHERE i IN (?,?,?)");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,3);
bind[0].buffer= (char *)int_data;
......@@ -8096,10 +8174,10 @@ static void test_bug1500()
bind[2].buffer= (char *)(int_data + 2);
rc= mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc= mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
......@@ -8121,7 +8199,7 @@ static void test_bug1500()
stmt= mysql_simple_prepare(mysql,
"SELECT s FROM test_bg1500 WHERE MATCH (s) AGAINST (?)");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,1);
......@@ -8133,10 +8211,10 @@ static void test_bug1500()
bind[0].length= 0;
rc= mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc= mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
......@@ -8149,7 +8227,7 @@ static void test_bug1500()
/* This should work too */
stmt= mysql_simple_prepare(mysql,
"SELECT s FROM test_bg1500 WHERE MATCH (s) AGAINST (CONCAT(?,'digger'))");
mystmt_init(stmt);
check_stmt(stmt);
verify_param_count(stmt,1);
......@@ -8161,10 +8239,10 @@ static void test_bug1500()
bind[0].length= 0;
rc= mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc= mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(1 == my_process_stmt_result(stmt));
......@@ -8186,7 +8264,7 @@ static void test_bug1946()
myquery(rc);
stmt = mysql_simple_prepare(mysql, query);
mystmt_init(stmt);
check_stmt(stmt);
rc= mysql_real_query(mysql, query, strlen(query));
assert(rc != 0);
fprintf(stdout, "Got error (as expected):\n");
......@@ -8246,11 +8324,11 @@ static void test_bug2247()
myquery(rc);
stmt= mysql_prepare(mysql, insert, strlen(insert));
mystmt_init(stmt);
check_stmt(stmt);
for (i= 0; i < NUM_ROWS; ++i)
{
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
}
exp_count= mysql_stmt_affected_rows(stmt);
assert(exp_count == 1);
......@@ -8278,12 +8356,12 @@ static void test_bug2247()
/* check that mysql_stmt_store_result modifies mysql_stmt_affected_rows */
stmt= mysql_prepare(mysql, select, strlen(select));
mystmt_init(stmt);
check_stmt(stmt);
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
rc= mysql_stmt_store_result(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
exp_count= mysql_stmt_affected_rows(stmt);
assert(exp_count == NUM_ROWS);
......@@ -8319,11 +8397,11 @@ static void test_subqueries()
myquery(rc);
stmt= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt);
check_stmt(stmt);
for (i= 0; i < 3; i++)
{
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(5 == my_process_stmt_result(stmt));
}
mysql_stmt_close(stmt);
......@@ -8368,9 +8446,9 @@ static void test_distinct()
for (i= 0; i < 3; i++)
{
stmt= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt);
check_stmt(stmt);
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(5 == my_process_stmt_result(stmt));
mysql_stmt_close(stmt);
}
......@@ -8399,23 +8477,23 @@ static void test_bug2248()
myquery(rc);
stmt= mysql_prepare(mysql, query1, strlen(query1));
mystmt_init(stmt);
check_stmt(stmt);
/* This should not hang */
rc= mysql_fetch(stmt);
mystmt_r(stmt,rc);
check_execute_r(stmt,rc);
/* And this too */
rc= mysql_stmt_store_result(stmt);
mystmt_r(stmt,rc);
check_execute_r(stmt,rc);
mysql_stmt_close(stmt);
stmt= mysql_prepare(mysql, query2, strlen(query2));
mystmt_init(stmt);
check_stmt(stmt);
rc= mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
/* This too should not hang but should return proper error */
rc= mysql_fetch(stmt);
......@@ -8423,11 +8501,11 @@ static void test_bug2248()
/* This too should not hang but should not bark */
rc= mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
/* This should return proper error */
rc= mysql_fetch(stmt);
mystmt_r(stmt,rc);
check_execute_r(stmt,rc);
assert(rc==MYSQL_NO_DATA);
mysql_stmt_close(stmt);
......@@ -8455,11 +8533,11 @@ static void test_subqueries_ref()
myquery(rc);
stmt= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt);
check_stmt(stmt);
for (i= 0; i < 3; i++)
{
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(1 == my_process_stmt_result(stmt));
}
mysql_stmt_close(stmt);
......@@ -8509,10 +8587,10 @@ static void test_union()
stmt= mysql_simple_prepare(mysql,
"SELECT t1.name FROM t1 UNION "
"SELECT t2.name FROM t2");
mystmt_init(stmt);
check_stmt(stmt);
rc= mysql_stmt_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
assert(20 == my_process_stmt_result(stmt));
mysql_stmt_close(stmt);
......@@ -8538,13 +8616,13 @@ static void test_bug3117()
myquery(rc);
stmt = mysql_simple_prepare(mysql, "SELECT LAST_INSERT_ID()");
mystmt_init(stmt);
check_stmt(stmt);
rc= mysql_query(mysql, "INSERT INTO t1 VALUES (NULL)");
myquery(rc);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
buffer.buffer_type= MYSQL_TYPE_LONGLONG;
buffer.buffer_length= sizeof(lii);
......@@ -8553,13 +8631,13 @@ static void test_bug3117()
buffer.is_null= &is_null;
rc= mysql_bind_result(stmt, &buffer);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc= mysql_stmt_store_result(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(is_null == 0 && lii == 1);
fprintf(stdout, "\n\tLAST_INSERT_ID() = 1 ok\n");
......@@ -8568,10 +8646,10 @@ static void test_bug3117()
myquery(rc);
rc = mysql_execute(stmt);
mystmt(stmt,rc);
check_execute(stmt,rc);
rc = mysql_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(is_null == 0 && lii == 2);
fprintf(stdout, "\tLAST_INSERT_ID() = 2 ok\n");
......@@ -8619,11 +8697,11 @@ static void test_join()
for (j= 0; j < 9; j++)
{
stmt= mysql_prepare(mysql, query[j], strlen(query[j]));
mystmt_init(stmt);
check_stmt(stmt);
for (i= 0; i < 3; i++)
{
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(5 == my_process_stmt_result(stmt));
}
mysql_stmt_close(stmt);
......@@ -8666,11 +8744,11 @@ static void test_selecttmp()
myquery(rc);
stmt= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt);
check_stmt(stmt);
for (i= 0; i < 3; i++)
{
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(3 == my_process_stmt_result(stmt));
}
mysql_stmt_close(stmt);
......@@ -8701,47 +8779,47 @@ static void test_create_drop()
query= (char*)"create table t1 (a int)";
stmt_create= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_create);
check_stmt(stmt_create);
query= (char*)"drop table t1";
stmt_drop= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_drop);
check_stmt(stmt_drop);
query= (char*)"select a in (select a from t2) from t1";
stmt_select= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_select);
check_stmt(stmt_select);
rc= mysql_query(mysql, "DROP TABLE t1");
myquery(rc);
query= (char*)"create table t1 select a from t2";
stmt_create_select= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_create_select);
check_stmt(stmt_create_select);
for (i= 0; i < 3; i++)
{
rc= mysql_execute(stmt_create);
mystmt(stmt_create, rc);
check_execute(stmt_create, rc);
fprintf(stdout, "created %i\n", i);
rc= mysql_execute(stmt_select);
mystmt(stmt_select, rc);
check_execute(stmt_select, rc);
assert(0 == my_process_stmt_result(stmt_select));
rc= mysql_execute(stmt_drop);
mystmt(stmt_drop, rc);
check_execute(stmt_drop, rc);
fprintf(stdout, "droped %i\n", i);
rc= mysql_execute(stmt_create_select);
mystmt(stmt_create, rc);
check_execute(stmt_create, rc);
fprintf(stdout, "created select %i\n", i);
rc= mysql_execute(stmt_select);
mystmt(stmt_select, rc);
check_execute(stmt_select, rc);
assert(3 == my_process_stmt_result(stmt_select));
rc= mysql_execute(stmt_drop);
mystmt(stmt_drop, rc);
check_execute(stmt_drop, rc);
fprintf(stdout, "droped %i\n", i);
}
......@@ -8766,31 +8844,31 @@ static void test_rename()
myquery(rc);
stmt= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt);
check_stmt(stmt);
rc= mysql_query(mysql,"create table t1 (a int)");
myquery(rc);
rc= mysql_execute(stmt);
mystmt_r(stmt, rc);
check_execute_r(stmt, rc);
fprintf(stdout, "rename without t3\n");
rc= mysql_query(mysql,"create table t3 (a int)");
myquery(rc);
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "rename with t3\n");
rc= mysql_execute(stmt);
mystmt_r(stmt, rc);
check_execute_r(stmt, rc);
fprintf(stdout, "rename renamed\n");
rc= mysql_query(mysql,"rename table t2 to t1, t4 to t3");
myquery(rc);
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
fprintf(stdout, "rename reverted\n");
mysql_stmt_close(stmt);
......@@ -8815,19 +8893,19 @@ static void test_do_set()
query= (char*)"do @var:=(1 in (select * from t1))";
stmt_do= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_do);
check_stmt(stmt_do);
query= (char*)"set @var=(1 in (select * from t1))";
stmt_set= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_set);
check_stmt(stmt_set);
for (i= 0; i < 3; i++)
{
rc= mysql_execute(stmt_do);
mystmt(stmt_do, rc);
check_execute(stmt_do, rc);
fprintf(stdout, "do %i\n", i);
rc= mysql_execute(stmt_set);
mystmt(stmt_set, rc);
check_execute(stmt_set, rc);
fprintf(stdout, "set %i\n", i);
}
......@@ -8867,39 +8945,39 @@ static void test_multi()
query= (char*)"delete t1,t2 from t1,t2 where t1.a=t2.a and t1.b=10";
stmt_delete= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_delete);
check_stmt(stmt_delete);
query= (char*)"update t1,t2 set t1.b=10,t2.b=10 where t1.a=t2.a and t1.b=?";
stmt_update= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_update);
check_stmt(stmt_update);
query= (char*)"select * from t1";
stmt_select1= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_select1);
check_stmt(stmt_select1);
query= (char*)"select * from t2";
stmt_select2= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_select2);
check_stmt(stmt_select2);
for(i= 0; i < 3; i++)
{
rc= mysql_bind_param(stmt_update, bind);
mystmt(stmt_update,rc);
check_execute(stmt_update,rc);
rc= mysql_execute(stmt_update);
mystmt(stmt_update, rc);
check_execute(stmt_update, rc);
fprintf(stdout, "update %ld\n", param);
rc= mysql_execute(stmt_delete);
mystmt(stmt_delete, rc);
check_execute(stmt_delete, rc);
fprintf(stdout, "delete %ld\n", param);
rc= mysql_execute(stmt_select1);
mystmt(stmt_select1, rc);
check_execute(stmt_select1, rc);
assert((uint)(3-param) == my_process_stmt_result(stmt_select1));
rc= mysql_execute(stmt_select2);
mystmt(stmt_select2, rc);
check_execute(stmt_select2, rc);
assert((uint)(3-param) == my_process_stmt_result(stmt_select2));
param++;
......@@ -8936,20 +9014,20 @@ static void test_insert_select()
query= (char*)"insert into t1 select a from t2";
stmt_insert= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_insert);
check_stmt(stmt_insert);
query= (char*)"select * from t1";
stmt_select= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_select);
check_stmt(stmt_select);
for(i= 0; i < 3; i++)
{
rc= mysql_execute(stmt_insert);
mystmt(stmt_insert, rc);
check_execute(stmt_insert, rc);
fprintf(stdout, "insert %u\n", i);
rc= mysql_execute(stmt_select);
mystmt(stmt_select, rc);
check_execute(stmt_select, rc);
assert((i+1) == my_process_stmt_result(stmt_select));
}
......@@ -8982,7 +9060,7 @@ static void test_bind_nagative()
query= (char*)"INSERT INTO t1 VALUES (?)";
stmt_insert= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt_insert);
check_stmt(stmt_insert);
/* bind parameters */
bind[0].buffer_type = FIELD_TYPE_LONG;
......@@ -8991,11 +9069,11 @@ static void test_bind_nagative()
bind[0].is_null = (char*)&my_null;
rc= mysql_bind_param(stmt_insert, bind);
mystmt(stmt_insert,rc);
check_execute(stmt_insert,rc);
my_val = -1;
rc= mysql_execute(stmt_insert);
mystmt(stmt_insert, rc);
check_execute(stmt_insert, rc);
mysql_stmt_close(stmt_insert);
rc= mysql_query(mysql,"drop table t1");
......@@ -9026,7 +9104,7 @@ TYPE=InnoDB DEFAULT CHARSET=utf8");
myquery(rc);
stmt= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt);
check_stmt(stmt);
bind[0].buffer_type = FIELD_TYPE_LONG;
bind[0].buffer = (char *)&my_val;
......@@ -9034,12 +9112,12 @@ TYPE=InnoDB DEFAULT CHARSET=utf8");
bind[0].is_null = (char*)&my_null;
my_val= 1;
rc= mysql_bind_param(stmt, bind);
mystmt(stmt,rc);
check_execute(stmt,rc);
for (i= 0; i < 3; i++)
{
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(1 == my_process_stmt_result(stmt));
}
mysql_stmt_close(stmt);
......@@ -9086,12 +9164,12 @@ static void test_xjoin()
myquery(rc);
stmt= mysql_prepare(mysql, query, strlen(query));
mystmt_init(stmt);
check_stmt(stmt);
for (i= 0; i < 3; i++)
{
rc= mysql_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(1 == my_process_stmt_result(stmt));
}
mysql_stmt_close(stmt);
......@@ -9185,13 +9263,12 @@ static void test_bug3035()
bind_array[7].is_unsigned= 1;
stmt= mysql_stmt_init(mysql);
mystmt_init(stmt);
check_stmt(stmt);
stmt_text= "INSERT INTO t1 (i8, ui8, i16, ui16, i32, ui32, i64, ui64) "
"VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
rc= mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_bind_param(stmt, bind_array);
......@@ -9205,7 +9282,7 @@ static void test_bug3035()
uint64_val= uint64_min;
rc= mysql_stmt_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
int8_val= int8_max;
uint8_val= uint8_max;
......@@ -9217,21 +9294,21 @@ static void test_bug3035()
uint64_val= uint64_max;
mysql_stmt_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
stmt_text= "SELECT i8, ui8, i16, ui16, i32, ui32, i64, ui64 "
"FROM t1 ORDER BY id ASC";
mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_execute(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
mysql_stmt_bind_result(stmt, bind_array);
rc= mysql_stmt_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(int8_val == int8_min);
assert(uint8_val == uint8_min);
......@@ -9243,7 +9320,7 @@ static void test_bug3035()
assert(uint64_val == uint64_min);
rc= mysql_stmt_fetch(stmt);
mystmt(stmt, rc);
check_execute(stmt, rc);
assert(int8_val == int8_max);
assert(uint8_val == uint8_max);
......@@ -9276,6 +9353,8 @@ static struct my_option client_test_long_options[] =
0, 0, 0, 0, 0},
{"database", 'D', "Database to use", (char **) &opt_db, (char **) &opt_db,
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"debug", '#', "Output debug log", (gptr*) &default_dbug_option,
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
{"host", 'h', "Connect to host", (char **) &opt_host, (char **) &opt_host, 0, GET_STR_ALLOC,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"password", 'p',
......@@ -9329,6 +9408,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
char *argument)
{
switch (optid) {
case '#':
DBUG_PUSH(argument ? argument : default_dbug_option);
break;
case 'p':
if (argument)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment