Commit ef4db137 authored by monty@mashka.mysql.fi's avatar monty@mashka.mysql.fi

Merge bk-internal.mysql.com:/home/bk/mysql-4.1

into mashka.mysql.fi:/home/my/mysql-4.1
parents f9f99378 7d091201
...@@ -22,17 +22,13 @@ ...@@ -22,17 +22,13 @@
#include <errno.h> #include <errno.h>
#include <screen.h> #include <screen.h>
#include <limits.h> #include <limits.h>
#include <nks/synch.h>
#include <nks/thread.h>
#include <signal.h> #include <signal.h>
#include <errno.h> #include <errno.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <nks/errno.h>
#include <sys/types.h> #include <sys/types.h>
#include <time.h> #include <time.h>
#include <sys/time.h> #include <sys/time.h>
#include <nks/time.h>
#include <pthread.h> #include <pthread.h>
#include <termios.h> #include <termios.h>
...@@ -48,6 +44,9 @@ ...@@ -48,6 +44,9 @@
#define HAVE_PTHREAD_YIELD_ZERO_ARG 1 #define HAVE_PTHREAD_YIELD_ZERO_ARG 1
#define HAVE_BROKEN_REALPATH 1 #define HAVE_BROKEN_REALPATH 1
/* include the old function apis */
#define USE_OLD_FUNCTIONS 1
/* no case sensitivity */ /* no case sensitivity */
#define FN_NO_CASE_SENCE 1 #define FN_NO_CASE_SENCE 1
......
...@@ -364,8 +364,10 @@ typedef struct st_sort_info ...@@ -364,8 +364,10 @@ typedef struct st_sort_info
SORT_FT_BUF *ft_buf; SORT_FT_BUF *ft_buf;
/* sync things */ /* sync things */
uint got_error, threads_running; uint got_error, threads_running;
#ifdef THREAD
pthread_mutex_t mutex; pthread_mutex_t mutex;
pthread_cond_t cond; pthread_cond_t cond;
#endif
} SORT_INFO; } SORT_INFO;
/* functions in mi_check */ /* functions in mi_check */
......
...@@ -2096,7 +2096,7 @@ err: ...@@ -2096,7 +2096,7 @@ err:
Threaded repair of table using sorting Threaded repair of table using sorting
SYNOPSIS SYNOPSIS
mi_repair_by_sort_parallel() mi_repair_parallel()
param Repair parameters param Repair parameters
info MyISAM handler to repair info MyISAM handler to repair
name Name of table (for warnings) name Name of table (for warnings)
...@@ -2115,6 +2115,9 @@ err: ...@@ -2115,6 +2115,9 @@ err:
int mi_repair_parallel(MI_CHECK *param, register MI_INFO *info, int mi_repair_parallel(MI_CHECK *param, register MI_INFO *info,
const char * name, int rep_quick) const char * name, int rep_quick)
{ {
#ifndef THREAD
return mi_repair_by_sort(param, info, name, rep_quick);
#else
int got_error; int got_error;
uint i,key, total_key_length, istep; uint i,key, total_key_length, istep;
ulong rec_length; ulong rec_length;
...@@ -2485,6 +2488,7 @@ err: ...@@ -2485,6 +2488,7 @@ err:
share->pack.header_length=0; share->pack.header_length=0;
} }
DBUG_RETURN(got_error); DBUG_RETURN(got_error);
#endif /* THREAD */
} }
/* Read next record and return next key */ /* Read next record and return next key */
......
...@@ -297,6 +297,7 @@ static ha_rows NEAR_F find_all_keys(MI_SORT_PARAM *info, uint keys, ...@@ -297,6 +297,7 @@ static ha_rows NEAR_F find_all_keys(MI_SORT_PARAM *info, uint keys,
} /* find_all_keys */ } /* find_all_keys */
#ifdef THREAD
/* Search after all keys and place them in a temp. file */ /* Search after all keys and place them in a temp. file */
pthread_handler_decl(thr_find_all_keys,arg) pthread_handler_decl(thr_find_all_keys,arg)
...@@ -590,6 +591,7 @@ int thr_write_keys(MI_SORT_PARAM *sort_param) ...@@ -590,6 +591,7 @@ int thr_write_keys(MI_SORT_PARAM *sort_param)
my_free((gptr) mergebuf,MYF(MY_ALLOW_ZERO_PTR)); my_free((gptr) mergebuf,MYF(MY_ALLOW_ZERO_PTR));
return got_error; return got_error;
} }
#endif /* THREAD */
/* Write all keys in memory to file for later merge */ /* Write all keys in memory to file for later merge */
......
drop table if exists t1; drop table if exists t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
ChargeID int(10) unsigned DEFAULT '0' NOT NULL auto_increment, ChargeID int(10) unsigned NOT NULL auto_increment,
ServiceID int(10) unsigned DEFAULT '0' NOT NULL, ServiceID int(10) unsigned DEFAULT '0' NOT NULL,
ChargeDate date DEFAULT '0000-00-00' NOT NULL, ChargeDate date DEFAULT '0000-00-00' NOT NULL,
ChargeAmount decimal(20,2) DEFAULT '0.00' NOT NULL, ChargeAmount decimal(20,2) DEFAULT '0.00' NOT NULL,
......
...@@ -13,7 +13,7 @@ INSERT INTO t1 VALUES (2,2,2,'','0000-00-00'); ...@@ -13,7 +13,7 @@ INSERT INTO t1 VALUES (2,2,2,'','0000-00-00');
INSERT INTO t1 VALUES (2,1,1,'','0000-00-00'); INSERT INTO t1 VALUES (2,1,1,'','0000-00-00');
INSERT INTO t1 VALUES (3,3,3,'','0000-00-00'); INSERT INTO t1 VALUES (3,3,3,'','0000-00-00');
CREATE TABLE t2 ( CREATE TABLE t2 (
userID int(10) unsigned DEFAULT '0' NOT NULL auto_increment, userID int(10) unsigned NOT NULL auto_increment,
niName char(15), niName char(15),
passwd char(8), passwd char(8),
mail char(50), mail char(50),
...@@ -53,7 +53,7 @@ userid MIN(t1.score+0.0) ...@@ -53,7 +53,7 @@ userid MIN(t1.score+0.0)
2 2.0 2 2.0
drop table t1,t2; drop table t1,t2;
CREATE TABLE t1 ( CREATE TABLE t1 (
PID int(10) unsigned DEFAULT '0' NOT NULL auto_increment, PID int(10) unsigned NOT NULL auto_increment,
payDate date DEFAULT '0000-00-00' NOT NULL, payDate date DEFAULT '0000-00-00' NOT NULL,
recDate datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, recDate datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
URID int(10) unsigned DEFAULT '0' NOT NULL, URID int(10) unsigned DEFAULT '0' NOT NULL,
...@@ -76,7 +76,7 @@ SELECT COUNT(P.URID),SUM(P.amount),P.method, MIN(PP.recdate+0) > 19980501000000 ...@@ -76,7 +76,7 @@ SELECT COUNT(P.URID),SUM(P.amount),P.method, MIN(PP.recdate+0) > 19980501000000
Can't group on 'IsNew' Can't group on 'IsNew'
drop table t1; drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
cid mediumint(9) DEFAULT '0' NOT NULL auto_increment, cid mediumint(9) NOT NULL auto_increment,
firstname varchar(32) DEFAULT '' NOT NULL, firstname varchar(32) DEFAULT '' NOT NULL,
surname varchar(32) DEFAULT '' NOT NULL, surname varchar(32) DEFAULT '' NOT NULL,
PRIMARY KEY (cid) PRIMARY KEY (cid)
...@@ -84,7 +84,7 @@ PRIMARY KEY (cid) ...@@ -84,7 +84,7 @@ PRIMARY KEY (cid)
INSERT INTO t1 VALUES (1,'That','Guy'); INSERT INTO t1 VALUES (1,'That','Guy');
INSERT INTO t1 VALUES (2,'Another','Gent'); INSERT INTO t1 VALUES (2,'Another','Gent');
CREATE TABLE t2 ( CREATE TABLE t2 (
call_id mediumint(8) DEFAULT '0' NOT NULL auto_increment, call_id mediumint(8) NOT NULL auto_increment,
contact_id mediumint(8) DEFAULT '0' NOT NULL, contact_id mediumint(8) DEFAULT '0' NOT NULL,
PRIMARY KEY (call_id), PRIMARY KEY (call_id),
KEY contact_id (contact_id) KEY contact_id (contact_id)
...@@ -104,7 +104,7 @@ cid CONCAT(firstname, ' ', surname) COUNT(call_id) ...@@ -104,7 +104,7 @@ cid CONCAT(firstname, ' ', surname) COUNT(call_id)
drop table t1,t2; drop table t1,t2;
unlock tables; unlock tables;
CREATE TABLE t1 ( CREATE TABLE t1 (
bug_id mediumint(9) DEFAULT '0' NOT NULL auto_increment, bug_id mediumint(9) NOT NULL auto_increment,
groupset bigint(20) DEFAULT '0' NOT NULL, groupset bigint(20) DEFAULT '0' NOT NULL,
assigned_to mediumint(9) DEFAULT '0' NOT NULL, assigned_to mediumint(9) DEFAULT '0' NOT NULL,
bug_file_loc text, bug_file_loc text,
...@@ -570,3 +570,22 @@ a MAX(b) MAKE_SET(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') ...@@ -570,3 +570,22 @@ a MAX(b) MAKE_SET(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
1 4 c 1 4 c
10 43 a,b,d,f 10 43 a,b,d,f
drop table t1; drop table t1;
create table t1 (id int not null, qty int not null);
insert into t1 values (1,2),(1,3),(2,4),(2,5);
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sum(qty)>2 and cqty>1;
id sqty cqty
1 5 2
2 9 2
select id, sum(qty) as sqty from t1 group by id having sqty>2 and count(qty)>1;
id sqty
1 5
2 9
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sqty>2 and cqty>1;
id sqty cqty
1 5 2
2 9 2
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sum(qty)>2 and count(qty)>1;
id sqty cqty
1 5 2
2 9 2
drop table t1;
...@@ -234,7 +234,7 @@ INSERT INTO t2 VALUES (11410,11410,131,0); ...@@ -234,7 +234,7 @@ INSERT INTO t2 VALUES (11410,11410,131,0);
INSERT INTO t2 VALUES (11416,11416,32767,0); INSERT INTO t2 VALUES (11416,11416,32767,0);
INSERT INTO t2 VALUES (11409,0,0,0); INSERT INTO t2 VALUES (11409,0,0,0);
CREATE TABLE t3 ( CREATE TABLE t3 (
id int(11) DEFAULT '0' NOT NULL auto_increment, id int(11) NOT NULL auto_increment,
dni_pasaporte char(16) DEFAULT '' NOT NULL, dni_pasaporte char(16) DEFAULT '' NOT NULL,
idPla int(11) DEFAULT '0' NOT NULL, idPla int(11) DEFAULT '0' NOT NULL,
cod_asig int(11) DEFAULT '0' NOT NULL, cod_asig int(11) DEFAULT '0' NOT NULL,
...@@ -247,7 +247,7 @@ UNIQUE dni_pasaporte_2 (dni_pasaporte,idPla,cod_asig,any,quatrimestre) ...@@ -247,7 +247,7 @@ UNIQUE dni_pasaporte_2 (dni_pasaporte,idPla,cod_asig,any,quatrimestre)
); );
INSERT INTO t3 VALUES (1,'11111111',1,10362,98,1,'M'); INSERT INTO t3 VALUES (1,'11111111',1,10362,98,1,'M');
CREATE TABLE t4 ( CREATE TABLE t4 (
id int(11) DEFAULT '0' NOT NULL auto_increment, id int(11) NOT NULL auto_increment,
papa int(11) DEFAULT '0' NOT NULL, papa int(11) DEFAULT '0' NOT NULL,
fill int(11) DEFAULT '0' NOT NULL, fill int(11) DEFAULT '0' NOT NULL,
idPla int(11) DEFAULT '0' NOT NULL, idPla int(11) DEFAULT '0' NOT NULL,
...@@ -284,7 +284,7 @@ fill idPla ...@@ -284,7 +284,7 @@ fill idPla
10362 NULL 10362 NULL
drop table t1,t2,t3,test.t4; drop table t1,t2,t3,test.t4;
CREATE TABLE t1 ( CREATE TABLE t1 (
id smallint(5) unsigned DEFAULT '0' NOT NULL auto_increment, id smallint(5) unsigned NOT NULL auto_increment,
name char(60) DEFAULT '' NOT NULL, name char(60) DEFAULT '' NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
...@@ -292,7 +292,7 @@ INSERT INTO t1 VALUES (1,'Antonio Paz'); ...@@ -292,7 +292,7 @@ INSERT INTO t1 VALUES (1,'Antonio Paz');
INSERT INTO t1 VALUES (2,'Lilliana Angelovska'); INSERT INTO t1 VALUES (2,'Lilliana Angelovska');
INSERT INTO t1 VALUES (3,'Thimble Smith'); INSERT INTO t1 VALUES (3,'Thimble Smith');
CREATE TABLE t2 ( CREATE TABLE t2 (
id smallint(5) unsigned DEFAULT '0' NOT NULL auto_increment, id smallint(5) unsigned NOT NULL auto_increment,
owner smallint(5) unsigned DEFAULT '0' NOT NULL, owner smallint(5) unsigned DEFAULT '0' NOT NULL,
name char(60), name char(60),
PRIMARY KEY (id) PRIMARY KEY (id)
...@@ -382,15 +382,15 @@ id str ...@@ -382,15 +382,15 @@ id str
2 NULL 2 NULL
drop table t1; drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
t1_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t1_id bigint(21) NOT NULL auto_increment,
PRIMARY KEY (t1_id) PRIMARY KEY (t1_id)
); );
CREATE TABLE t2 ( CREATE TABLE t2 (
t2_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t2_id bigint(21) NOT NULL auto_increment,
PRIMARY KEY (t2_id) PRIMARY KEY (t2_id)
); );
CREATE TABLE t3 ( CREATE TABLE t3 (
t3_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t3_id bigint(21) NOT NULL auto_increment,
PRIMARY KEY (t3_id) PRIMARY KEY (t3_id)
); );
CREATE TABLE t4 ( CREATE TABLE t4 (
......
...@@ -15,7 +15,7 @@ INSERT INTO t1 VALUES (2,6,'60671515','Y'); ...@@ -15,7 +15,7 @@ INSERT INTO t1 VALUES (2,6,'60671515','Y');
INSERT INTO t1 VALUES (2,7,'60671569','Y'); INSERT INTO t1 VALUES (2,7,'60671569','Y');
INSERT INTO t1 VALUES (2,3,'dd','Y'); INSERT INTO t1 VALUES (2,3,'dd','Y');
CREATE TABLE t2 ( CREATE TABLE t2 (
id int(6) DEFAULT '0' NOT NULL auto_increment, id int(6) NOT NULL auto_increment,
description varchar(40) NOT NULL, description varchar(40) NOT NULL,
idform varchar(40), idform varchar(40),
ordre int(6) unsigned DEFAULT '0' NOT NULL, ordre int(6) unsigned DEFAULT '0' NOT NULL,
......
...@@ -566,3 +566,14 @@ show status like "Qcache_queries_in_cache"; ...@@ -566,3 +566,14 @@ show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 0 Qcache_queries_in_cache 0
drop table t1; drop table t1;
create table t1 (a int);
insert into t1 values (1),(2),(3);
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
select * from t1 into outfile "query_caceh.out.file";
select * from t1 limit 1 into dumpfile "query_cache.dump.file";
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 0
drop table t1;
...@@ -351,7 +351,7 @@ Incorrect sub part key. The used key part isn't a string, the used length is lon ...@@ -351,7 +351,7 @@ Incorrect sub part key. The used key part isn't a string, the used length is lon
create table t1 (a text, key (a(255))); create table t1 (a text, key (a(255)));
drop table t1; drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
t1_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t1_id bigint(21) NOT NULL auto_increment,
_field_72 varchar(128) DEFAULT '' NOT NULL, _field_72 varchar(128) DEFAULT '' NOT NULL,
_field_95 varchar(32), _field_95 varchar(32),
_field_115 tinyint(4) DEFAULT '0' NOT NULL, _field_115 tinyint(4) DEFAULT '0' NOT NULL,
...@@ -375,7 +375,7 @@ INSERT INTO t2 VALUES (1,1); ...@@ -375,7 +375,7 @@ INSERT INTO t2 VALUES (1,1);
INSERT INTO t2 VALUES (2,1); INSERT INTO t2 VALUES (2,1);
INSERT INTO t2 VALUES (2,2); INSERT INTO t2 VALUES (2,2);
CREATE TABLE t3 ( CREATE TABLE t3 (
t3_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t3_id bigint(21) NOT NULL auto_increment,
_field_131 varchar(128), _field_131 varchar(128),
_field_133 tinyint(4) DEFAULT '0' NOT NULL, _field_133 tinyint(4) DEFAULT '0' NOT NULL,
_field_135 datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, _field_135 datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
...@@ -403,7 +403,7 @@ PRIMARY KEY (seq_0_id,seq_1_id) ...@@ -403,7 +403,7 @@ PRIMARY KEY (seq_0_id,seq_1_id)
INSERT INTO t4 VALUES (1,1); INSERT INTO t4 VALUES (1,1);
INSERT INTO t4 VALUES (2,1); INSERT INTO t4 VALUES (2,1);
CREATE TABLE t5 ( CREATE TABLE t5 (
t5_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t5_id bigint(21) NOT NULL auto_increment,
_field_149 tinyint(4), _field_149 tinyint(4),
_field_156 varchar(128) DEFAULT '' NOT NULL, _field_156 varchar(128) DEFAULT '' NOT NULL,
_field_157 varchar(128) DEFAULT '' NOT NULL, _field_157 varchar(128) DEFAULT '' NOT NULL,
...@@ -430,7 +430,7 @@ INSERT INTO t6 VALUES (1,1); ...@@ -430,7 +430,7 @@ INSERT INTO t6 VALUES (1,1);
INSERT INTO t6 VALUES (1,2); INSERT INTO t6 VALUES (1,2);
INSERT INTO t6 VALUES (2,2); INSERT INTO t6 VALUES (2,2);
CREATE TABLE t7 ( CREATE TABLE t7 (
t7_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t7_id bigint(21) NOT NULL auto_increment,
_field_143 tinyint(4), _field_143 tinyint(4),
_field_165 varchar(32), _field_165 varchar(32),
_field_166 smallint(6) DEFAULT '0' NOT NULL, _field_166 smallint(6) DEFAULT '0' NOT NULL,
......
DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
id int(11) DEFAULT '0' NOT NULL auto_increment, id int(11) NOT NULL auto_increment,
datatype_id int(11) DEFAULT '0' NOT NULL, datatype_id int(11) DEFAULT '0' NOT NULL,
minvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL, minvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
maxvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL, maxvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
......
drop table if exists t1,t2,t3; drop table if exists t1,t2,t3;
CREATE TABLE t1 ( CREATE TABLE t1 (
auto int(5) unsigned DEFAULT 0 NOT NULL auto_increment, auto int(5) unsigned NOT NULL auto_increment,
string char(10) default "hello", string char(10) default "hello",
tiny tinyint(4) DEFAULT '0' NOT NULL , tiny tinyint(4) DEFAULT '0' NOT NULL ,
short smallint(6) DEFAULT '1' NOT NULL , short smallint(6) DEFAULT '1' NOT NULL ,
...@@ -129,7 +129,7 @@ auto new_field new_blob_col date_field ...@@ -129,7 +129,7 @@ auto new_field new_blob_col date_field
15 new 4294967295 0000-00-00 15 new 4294967295 0000-00-00
16 new NULL NULL 16 new NULL NULL
CREATE TABLE t2 ( CREATE TABLE t2 (
auto int(5) unsigned NOT NULL DEFAULT 0 auto_increment, auto int(5) unsigned NOT NULL auto_increment,
string char(20), string char(20),
mediumblob_col mediumblob not null, mediumblob_col mediumblob not null,
new_field char(2), new_field char(2),
......
...@@ -96,7 +96,7 @@ KEY k4 (assignment), ...@@ -96,7 +96,7 @@ KEY k4 (assignment),
KEY ticket (ticket) KEY ticket (ticket)
) TYPE=MyISAM; ) TYPE=MyISAM;
INSERT INTO t1 VALUES (773,773,'','','',980257344,20010318180652,0,'Open',10,0,0,0,1,'','','','',''); INSERT INTO t1 VALUES (773,773,'','','',980257344,20010318180652,0,'Open',10,0,0,0,1,'','','','','');
alter table t1 change lfdnr lfdnr int(10) unsigned default 0 not null auto_increment; alter table t1 change lfdnr lfdnr int(10) unsigned not null auto_increment;
update t1 set status=1 where type='Open'; update t1 set status=1 where type='Open';
select status from t1; select status from t1;
status status
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
drop table if exists t1; drop table if exists t1;
--enable_warnings --enable_warnings
CREATE TABLE t1 ( CREATE TABLE t1 (
ChargeID int(10) unsigned DEFAULT '0' NOT NULL auto_increment, ChargeID int(10) unsigned NOT NULL auto_increment,
ServiceID int(10) unsigned DEFAULT '0' NOT NULL, ServiceID int(10) unsigned DEFAULT '0' NOT NULL,
ChargeDate date DEFAULT '0000-00-00' NOT NULL, ChargeDate date DEFAULT '0000-00-00' NOT NULL,
ChargeAmount decimal(20,2) DEFAULT '0.00' NOT NULL, ChargeAmount decimal(20,2) DEFAULT '0.00' NOT NULL,
......
...@@ -27,7 +27,7 @@ INSERT INTO t1 VALUES (2,1,1,'','0000-00-00'); ...@@ -27,7 +27,7 @@ INSERT INTO t1 VALUES (2,1,1,'','0000-00-00');
INSERT INTO t1 VALUES (3,3,3,'','0000-00-00'); INSERT INTO t1 VALUES (3,3,3,'','0000-00-00');
CREATE TABLE t2 ( CREATE TABLE t2 (
userID int(10) unsigned DEFAULT '0' NOT NULL auto_increment, userID int(10) unsigned NOT NULL auto_increment,
niName char(15), niName char(15),
passwd char(8), passwd char(8),
mail char(50), mail char(50),
...@@ -57,7 +57,7 @@ drop table t1,t2; ...@@ -57,7 +57,7 @@ drop table t1,t2;
# #
CREATE TABLE t1 ( CREATE TABLE t1 (
PID int(10) unsigned DEFAULT '0' NOT NULL auto_increment, PID int(10) unsigned NOT NULL auto_increment,
payDate date DEFAULT '0000-00-00' NOT NULL, payDate date DEFAULT '0000-00-00' NOT NULL,
recDate datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, recDate datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
URID int(10) unsigned DEFAULT '0' NOT NULL, URID int(10) unsigned DEFAULT '0' NOT NULL,
...@@ -89,7 +89,7 @@ drop table t1; ...@@ -89,7 +89,7 @@ drop table t1;
# #
CREATE TABLE t1 ( CREATE TABLE t1 (
cid mediumint(9) DEFAULT '0' NOT NULL auto_increment, cid mediumint(9) NOT NULL auto_increment,
firstname varchar(32) DEFAULT '' NOT NULL, firstname varchar(32) DEFAULT '' NOT NULL,
surname varchar(32) DEFAULT '' NOT NULL, surname varchar(32) DEFAULT '' NOT NULL,
PRIMARY KEY (cid) PRIMARY KEY (cid)
...@@ -98,7 +98,7 @@ INSERT INTO t1 VALUES (1,'That','Guy'); ...@@ -98,7 +98,7 @@ INSERT INTO t1 VALUES (1,'That','Guy');
INSERT INTO t1 VALUES (2,'Another','Gent'); INSERT INTO t1 VALUES (2,'Another','Gent');
CREATE TABLE t2 ( CREATE TABLE t2 (
call_id mediumint(8) DEFAULT '0' NOT NULL auto_increment, call_id mediumint(8) NOT NULL auto_increment,
contact_id mediumint(8) DEFAULT '0' NOT NULL, contact_id mediumint(8) DEFAULT '0' NOT NULL,
PRIMARY KEY (call_id), PRIMARY KEY (call_id),
KEY contact_id (contact_id) KEY contact_id (contact_id)
...@@ -124,7 +124,7 @@ unlock tables; ...@@ -124,7 +124,7 @@ unlock tables;
# #
CREATE TABLE t1 ( CREATE TABLE t1 (
bug_id mediumint(9) DEFAULT '0' NOT NULL auto_increment, bug_id mediumint(9) NOT NULL auto_increment,
groupset bigint(20) DEFAULT '0' NOT NULL, groupset bigint(20) DEFAULT '0' NOT NULL,
assigned_to mediumint(9) DEFAULT '0' NOT NULL, assigned_to mediumint(9) DEFAULT '0' NOT NULL,
bug_file_loc text, bug_file_loc text,
...@@ -426,3 +426,15 @@ select a, MAX(b), CONCAT_WS(MAX(b), '43', '4', '5') from t1 group by a; ...@@ -426,3 +426,15 @@ select a, MAX(b), CONCAT_WS(MAX(b), '43', '4', '5') from t1 group by a;
select a, MAX(b), ELT(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f') from t1 group by a; select a, MAX(b), ELT(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f') from t1 group by a;
select a, MAX(b), MAKE_SET(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') from t1 group by a; select a, MAX(b), MAKE_SET(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') from t1 group by a;
drop table t1; drop table t1;
#
# Problem with group by and alias
#
create table t1 (id int not null, qty int not null);
insert into t1 values (1,2),(1,3),(2,4),(2,5);
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sum(qty)>2 and cqty>1;
select id, sum(qty) as sqty from t1 group by id having sqty>2 and count(qty)>1;
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sqty>2 and cqty>1;
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sum(qty)>2 and count(qty)>1;
drop table t1;
...@@ -169,7 +169,7 @@ INSERT INTO t2 VALUES (11416,11416,32767,0); ...@@ -169,7 +169,7 @@ INSERT INTO t2 VALUES (11416,11416,32767,0);
INSERT INTO t2 VALUES (11409,0,0,0); INSERT INTO t2 VALUES (11409,0,0,0);
CREATE TABLE t3 ( CREATE TABLE t3 (
id int(11) DEFAULT '0' NOT NULL auto_increment, id int(11) NOT NULL auto_increment,
dni_pasaporte char(16) DEFAULT '' NOT NULL, dni_pasaporte char(16) DEFAULT '' NOT NULL,
idPla int(11) DEFAULT '0' NOT NULL, idPla int(11) DEFAULT '0' NOT NULL,
cod_asig int(11) DEFAULT '0' NOT NULL, cod_asig int(11) DEFAULT '0' NOT NULL,
...@@ -184,7 +184,7 @@ CREATE TABLE t3 ( ...@@ -184,7 +184,7 @@ CREATE TABLE t3 (
INSERT INTO t3 VALUES (1,'11111111',1,10362,98,1,'M'); INSERT INTO t3 VALUES (1,'11111111',1,10362,98,1,'M');
CREATE TABLE t4 ( CREATE TABLE t4 (
id int(11) DEFAULT '0' NOT NULL auto_increment, id int(11) NOT NULL auto_increment,
papa int(11) DEFAULT '0' NOT NULL, papa int(11) DEFAULT '0' NOT NULL,
fill int(11) DEFAULT '0' NOT NULL, fill int(11) DEFAULT '0' NOT NULL,
idPla int(11) DEFAULT '0' NOT NULL, idPla int(11) DEFAULT '0' NOT NULL,
...@@ -211,7 +211,7 @@ drop table t1,t2,t3,test.t4; ...@@ -211,7 +211,7 @@ drop table t1,t2,t3,test.t4;
# #
CREATE TABLE t1 ( CREATE TABLE t1 (
id smallint(5) unsigned DEFAULT '0' NOT NULL auto_increment, id smallint(5) unsigned NOT NULL auto_increment,
name char(60) DEFAULT '' NOT NULL, name char(60) DEFAULT '' NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
...@@ -220,7 +220,7 @@ INSERT INTO t1 VALUES (2,'Lilliana Angelovska'); ...@@ -220,7 +220,7 @@ INSERT INTO t1 VALUES (2,'Lilliana Angelovska');
INSERT INTO t1 VALUES (3,'Thimble Smith'); INSERT INTO t1 VALUES (3,'Thimble Smith');
CREATE TABLE t2 ( CREATE TABLE t2 (
id smallint(5) unsigned DEFAULT '0' NOT NULL auto_increment, id smallint(5) unsigned NOT NULL auto_increment,
owner smallint(5) unsigned DEFAULT '0' NOT NULL, owner smallint(5) unsigned DEFAULT '0' NOT NULL,
name char(60), name char(60),
PRIMARY KEY (id) PRIMARY KEY (id)
...@@ -258,15 +258,15 @@ drop table t1; ...@@ -258,15 +258,15 @@ drop table t1;
# #
CREATE TABLE t1 ( CREATE TABLE t1 (
t1_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t1_id bigint(21) NOT NULL auto_increment,
PRIMARY KEY (t1_id) PRIMARY KEY (t1_id)
); );
CREATE TABLE t2 ( CREATE TABLE t2 (
t2_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t2_id bigint(21) NOT NULL auto_increment,
PRIMARY KEY (t2_id) PRIMARY KEY (t2_id)
); );
CREATE TABLE t3 ( CREATE TABLE t3 (
t3_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t3_id bigint(21) NOT NULL auto_increment,
PRIMARY KEY (t3_id) PRIMARY KEY (t3_id)
); );
CREATE TABLE t4 ( CREATE TABLE t4 (
......
...@@ -25,7 +25,7 @@ INSERT INTO t1 VALUES (2,7,'60671569','Y'); ...@@ -25,7 +25,7 @@ INSERT INTO t1 VALUES (2,7,'60671569','Y');
INSERT INTO t1 VALUES (2,3,'dd','Y'); INSERT INTO t1 VALUES (2,3,'dd','Y');
CREATE TABLE t2 ( CREATE TABLE t2 (
id int(6) DEFAULT '0' NOT NULL auto_increment, id int(6) NOT NULL auto_increment,
description varchar(40) NOT NULL, description varchar(40) NOT NULL,
idform varchar(40), idform varchar(40),
ordre int(6) unsigned DEFAULT '0' NOT NULL, ordre int(6) unsigned DEFAULT '0' NOT NULL,
......
...@@ -411,3 +411,15 @@ show status like "Qcache_queries_in_cache"; ...@@ -411,3 +411,15 @@ show status like "Qcache_queries_in_cache";
load data infile '../../std_data/words.dat' into table t1; load data infile '../../std_data/words.dat' into table t1;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
drop table t1; drop table t1;
#
# INTO OUTFILE/DUMPFILE test
#
create table t1 (a int);
insert into t1 values (1),(2),(3);
show status like "Qcache_queries_in_cache";
select * from t1 into outfile "query_caceh.out.file";
select * from t1 limit 1 into dumpfile "query_cache.dump.file";
show status like "Qcache_queries_in_cache";
drop table t1;
...@@ -130,7 +130,7 @@ drop table t1; ...@@ -130,7 +130,7 @@ drop table t1;
# #
CREATE TABLE t1 ( CREATE TABLE t1 (
t1_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t1_id bigint(21) NOT NULL auto_increment,
_field_72 varchar(128) DEFAULT '' NOT NULL, _field_72 varchar(128) DEFAULT '' NOT NULL,
_field_95 varchar(32), _field_95 varchar(32),
_field_115 tinyint(4) DEFAULT '0' NOT NULL, _field_115 tinyint(4) DEFAULT '0' NOT NULL,
...@@ -161,7 +161,7 @@ INSERT INTO t2 VALUES (2,1); ...@@ -161,7 +161,7 @@ INSERT INTO t2 VALUES (2,1);
INSERT INTO t2 VALUES (2,2); INSERT INTO t2 VALUES (2,2);
CREATE TABLE t3 ( CREATE TABLE t3 (
t3_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t3_id bigint(21) NOT NULL auto_increment,
_field_131 varchar(128), _field_131 varchar(128),
_field_133 tinyint(4) DEFAULT '0' NOT NULL, _field_133 tinyint(4) DEFAULT '0' NOT NULL,
_field_135 datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, _field_135 datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
...@@ -196,7 +196,7 @@ INSERT INTO t4 VALUES (1,1); ...@@ -196,7 +196,7 @@ INSERT INTO t4 VALUES (1,1);
INSERT INTO t4 VALUES (2,1); INSERT INTO t4 VALUES (2,1);
CREATE TABLE t5 ( CREATE TABLE t5 (
t5_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t5_id bigint(21) NOT NULL auto_increment,
_field_149 tinyint(4), _field_149 tinyint(4),
_field_156 varchar(128) DEFAULT '' NOT NULL, _field_156 varchar(128) DEFAULT '' NOT NULL,
_field_157 varchar(128) DEFAULT '' NOT NULL, _field_157 varchar(128) DEFAULT '' NOT NULL,
...@@ -228,7 +228,7 @@ INSERT INTO t6 VALUES (1,2); ...@@ -228,7 +228,7 @@ INSERT INTO t6 VALUES (1,2);
INSERT INTO t6 VALUES (2,2); INSERT INTO t6 VALUES (2,2);
CREATE TABLE t7 ( CREATE TABLE t7 (
t7_id bigint(21) DEFAULT '0' NOT NULL auto_increment, t7_id bigint(21) NOT NULL auto_increment,
_field_143 tinyint(4), _field_143 tinyint(4),
_field_165 varchar(32), _field_165 varchar(32),
_field_166 smallint(6) DEFAULT '0' NOT NULL, _field_166 smallint(6) DEFAULT '0' NOT NULL,
......
...@@ -5,7 +5,7 @@ DROP TABLE IF EXISTS t1; ...@@ -5,7 +5,7 @@ DROP TABLE IF EXISTS t1;
--enable_warnings --enable_warnings
CREATE TABLE t1 ( CREATE TABLE t1 (
id int(11) DEFAULT '0' NOT NULL auto_increment, id int(11) NOT NULL auto_increment,
datatype_id int(11) DEFAULT '0' NOT NULL, datatype_id int(11) DEFAULT '0' NOT NULL,
minvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL, minvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
maxvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL, maxvalue decimal(20,10) DEFAULT '0.0000000000' NOT NULL,
......
...@@ -7,7 +7,7 @@ drop table if exists t1,t2,t3; ...@@ -7,7 +7,7 @@ drop table if exists t1,t2,t3;
--enable_warnings --enable_warnings
CREATE TABLE t1 ( CREATE TABLE t1 (
auto int(5) unsigned DEFAULT 0 NOT NULL auto_increment, auto int(5) unsigned NOT NULL auto_increment,
string char(10) default "hello", string char(10) default "hello",
tiny tinyint(4) DEFAULT '0' NOT NULL , tiny tinyint(4) DEFAULT '0' NOT NULL ,
short smallint(6) DEFAULT '1' NOT NULL , short smallint(6) DEFAULT '1' NOT NULL ,
...@@ -93,7 +93,7 @@ select auto,new_field,new_blob_col,date_field from t1 ; ...@@ -93,7 +93,7 @@ select auto,new_field,new_blob_col,date_field from t1 ;
# check with old syntax # check with old syntax
# #
CREATE TABLE t2 ( CREATE TABLE t2 (
auto int(5) unsigned NOT NULL DEFAULT 0 auto_increment, auto int(5) unsigned NOT NULL auto_increment,
string char(20), string char(20),
mediumblob_col mediumblob not null, mediumblob_col mediumblob not null,
new_field char(2), new_field char(2),
......
...@@ -75,7 +75,7 @@ CREATE TABLE t1 ( ...@@ -75,7 +75,7 @@ CREATE TABLE t1 (
INSERT INTO t1 VALUES (773,773,'','','',980257344,20010318180652,0,'Open',10,0,0,0,1,'','','','',''); INSERT INTO t1 VALUES (773,773,'','','',980257344,20010318180652,0,'Open',10,0,0,0,1,'','','','','');
alter table t1 change lfdnr lfdnr int(10) unsigned default 0 not null auto_increment; alter table t1 change lfdnr lfdnr int(10) unsigned not null auto_increment;
update t1 set status=1 where type='Open'; update t1 set status=1 where type='Open';
select status from t1; select status from t1;
drop table t1; drop table t1;
......
#! /bin/sh
# debug
#set -x
# stop on errors
set -e
# repository direcotry
repo_dir=`pwd`
# show usage
show_usage()
{
cat << EOF
usage: create-patch
Creates a patch file between the latest revision of the current tree
and the latest revision not create by \$BK_USER.
EOF
exit 0;
}
if test $1 || test -z $BK_USER
then
show_usage
fi
echo "starting patch..."
echo "user: $BK_USER"
# check for bk and repo_dir
bk help > /dev/null
repo_dir=`bk root $repo_dir`
cd $repo_dir
# determine version
version=`grep -e "AM_INIT_AUTOMAKE(mysql, .*)" < configure.in | sed -e "s/AM_INIT_AUTOMAKE(mysql, \(.*\))/\1/"`
echo "version: $version"
# user revision
user_rev=`bk changes -e -n -d':REV:' | head -1`
echo "latest revision: $user_rev"
# tree revision
tree_rev=`bk changes -e -n -d':REV:' -U$BK_USER | head -1`
echo "latest non-$BK_USER revision: $tree_rev"
# create patch
patch="$repo_dir/../$BK_USER-$version.patch"
echo "creating \"$patch\"..."
bk export -tpatch -r$tree_rev..$user_rev > $patch
#! /bin/sh #! /bin/sh
# WINE_BUILD_DIR, BUILD_DIR, and VERSION must be changed before compiling # WINE_BUILD_DIR, BUILD_DIR, and VERSION must be correct before compiling
# This values are normally changed by the nwbootstrap script # This values are normally changed by the nwbootstrap script
# the default for WINE_BUILD_DIR is "F:/mydev" # the default is "F:/mydev"
export MYDEV="WINE_BUILD_DIR" export MYDEV="WINE_BUILD_DIR"
export MWCNWx86Includes="$MYDEV/libc/include" export MWCNWx86Includes="$MYDEV/libc/include"
...@@ -12,16 +12,16 @@ export MWNWx86LibraryFiles="libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib" ...@@ -12,16 +12,16 @@ export MWNWx86LibraryFiles="libcpre.o;libc.imp;netware.imp;mwcrtl.lib;mwcpp.lib"
export WINEPATH="$MYDEV/mw/bin" export WINEPATH="$MYDEV/mw/bin"
# the default for BUILD_DIR is "$HOME/mydev" # the default added path is "$HOME/mydev/mysql-x.x-x/netware/BUILD"
export PATH="$PATH:BUILD_DIR/mysql-VERSION/netware/BUILD" export PATH="$PATH:BUILD_DIR/mysql-VERSION/netware/BUILD"
export AR='mwldnlm' export AR='mwldnlm'
export AR_FLAGS='-type library -o' export AR_FLAGS='-type library -o'
export AS='mwasmnlm' export AS='mwasmnlm'
export CC='mwccnlm -gccincludes' export CC='mwccnlm -gccincludes'
export CFLAGS='-dialect c -proc 686 -bool on -relax_pointers -DUSE_OLD_FUNCTIONS' export CFLAGS='-dialect c -proc 686 -relax_pointers'
export CXX='mwccnlm -gccincludes' export CXX='mwccnlm -gccincludes'
export CXXFLAGS='-dialect c++ -proc 686 -bool on -relax_pointers' export CXXFLAGS='-dialect c++ -proc 686 -bool on -wchar_t on -relax_pointers -D_WCHAR_T'
export LD='mwldnlm' export LD='mwldnlm'
export LDFLAGS='-entry _LibCPrelude -exit _LibCPostlude -flags pseudopreemption' export LDFLAGS='-entry _LibCPrelude -exit _LibCPostlude -flags pseudopreemption'
export RANLIB=: export RANLIB=:
......
...@@ -129,7 +129,7 @@ else ...@@ -129,7 +129,7 @@ else
fi fi
echo "creating ChangeLog..." echo "creating ChangeLog..."
bk changes -v -r$rev > $target_dir/ChangeLog bk changes -v -r$rev..$revision > $target_dir/ChangeLog
# add the latest manual # add the latest manual
if test -d $doc_dir if test -d $doc_dir
......
...@@ -28,11 +28,12 @@ netware_build_files = client/mysql.def client/mysqladmin.def \ ...@@ -28,11 +28,12 @@ netware_build_files = client/mysql.def client/mysqladmin.def \
client/mysqlshow.def client/mysqltest.def \ client/mysqlshow.def client/mysqltest.def \
extra/mysql_install.def extra/my_print_defaults.def \ extra/mysql_install.def extra/my_print_defaults.def \
extra/perror.def extra/replace.def \ extra/perror.def extra/replace.def \
extra/resolveip.def isam/isamchk.def \ extra/resolveip.def extra/comp_err.def \
isam/isamchk.def \
isam/isamlog.def isam/pack_isam.def \ isam/isamlog.def isam/pack_isam.def \
libmysqld/libmysqld.def myisam/myisamchk.def \ libmysqld/libmysqld.def myisam/myisamchk.def \
myisam/myisamlog.def myisam/myisampack.def \ myisam/myisamlog.def myisam/myisampack.def \
sql/mysqld.def sql/mysqld.xdc sql/mysqld.def
link_sources: link_sources:
set -x; \ set -x; \
......
#------------------------------------------------------------------------------
# MySQL Error File Compiler
#------------------------------------------------------------------------------
MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Error File Compiler"
VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG
...@@ -6,5 +6,6 @@ COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved ...@@ -6,5 +6,6 @@ COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved
DESCRIPTION "MySQL ISAM Table Check Tool" DESCRIPTION "MySQL ISAM Table Check Tool"
VERSION 4, 0 VERSION 4, 0
STACKSIZE 65536 STACKSIZE 65536
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL ISAM Table Log Tool" DESCRIPTION "MySQL ISAM Table Log Tool"
VERSION 4, 0 VERSION 4, 0
DEBUG XDCDATA ../netware/mysql.xdc
#DEBUG
...@@ -7,4 +7,5 @@ COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved ...@@ -7,4 +7,5 @@ COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved
DESCRIPTION "MySQL Client Library" DESCRIPTION "MySQL Client Library"
VERSION 4, 0 VERSION 4, 0
AUTOUNLOAD AUTOUNLOAD
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include <dirent.h> #include <dirent.h>
#include <string.h> #include <string.h>
#include <screen.h> #include <screen.h>
#include <nks/vm.h> #include <proc.h>
#include <ctype.h> #include <ctype.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <fcntl.h> #include <fcntl.h>
...@@ -54,18 +54,16 @@ ...@@ -54,18 +54,16 @@
Init an argument list. Init an argument list.
******************************************************************************/ ******************************************************************************/
void _init_args(arg_list *al) void init_args(arg_list_t *al)
{ {
int i; ASSERT(al != NULL);
*al = malloc(sizeof(arg_list_t));
(*al)->argc = 0; al->argc = 0;
al->size = ARG_BUF;
al->argv = malloc(al->size * sizeof(char *));
ASSERT(al->argv != NULL);
for(i = 0; i < ARG_MAX; i++) return;
{
(*al)->argv[i] = NULL;
}
} }
/****************************************************************************** /******************************************************************************
...@@ -75,49 +73,66 @@ void _init_args(arg_list *al) ...@@ -75,49 +73,66 @@ void _init_args(arg_list *al)
Add an argument to a list. Add an argument to a list.
******************************************************************************/ ******************************************************************************/
void add_arg(arg_list al, char *format, ...) void add_arg(arg_list_t *al, char *format, ...)
{ {
va_list ap; va_list ap;
char temp[PATH_MAX];
ASSERT(al != NULL); ASSERT(al != NULL);
ASSERT(al->argc < ARG_MAX);
al->argv[al->argc] = malloc(PATH_MAX);
ASSERT(al->argv[al->argc] != NULL); // increase size
if (al->argc >= al->size)
{
al->size += ARG_BUF;
al->argv = realloc(al->argv, al->size * sizeof(char *));
ASSERT(al->argv != NULL);
}
if (format)
{
va_start(ap, format); va_start(ap, format);
vsprintf(temp, format, ap);
vsprintf(al->argv[al->argc], format, ap);
va_end(ap); va_end(ap);
al->argv[al->argc] = malloc(strlen(temp)+1);
ASSERT(al->argv[al->argc] != NULL);
strcpy(al->argv[al->argc], temp);
++(al->argc); ++(al->argc);
}
else
{
al->argv[al->argc] = NULL;
}
return;
} }
/****************************************************************************** /******************************************************************************
_free_args() free_args()
Free an argument list. Free an argument list.
******************************************************************************/ ******************************************************************************/
void _free_args(arg_list *al) void free_args(arg_list_t *al)
{ {
int i; int i;
ASSERT(al != NULL); ASSERT(al != NULL);
ASSERT(*al != NULL);
for(i = 0; i < (*al)->argc; i++) for(i = 0; i < al->argc; i++)
{ {
ASSERT((*al)->argv[i] != NULL); ASSERT(al->argv[i] != NULL);
free((*al)->argv[i]); free(al->argv[i]);
(*al)->argv[i] = NULL; al->argv[i] = NULL;
} }
free(*al); free(al->argv);
*al = NULL; al->argc = 0;
al->argv = NULL;
return;
} }
/****************************************************************************** /******************************************************************************
...@@ -167,7 +182,7 @@ int sleep_until_file_exists(char *pid_file) ...@@ -167,7 +182,7 @@ int sleep_until_file_exists(char *pid_file)
******************************************************************************/ ******************************************************************************/
int wait_for_server_start(char *bin_dir, char *user, char *password, int port) int wait_for_server_start(char *bin_dir, char *user, char *password, int port)
{ {
arg_list al; arg_list_t al;
int err, i; int err, i;
char mysqladmin_file[PATH_MAX]; char mysqladmin_file[PATH_MAX];
char trash[PATH_MAX]; char trash[PATH_MAX];
...@@ -177,27 +192,27 @@ int wait_for_server_start(char *bin_dir, char *user, char *password, int port) ...@@ -177,27 +192,27 @@ int wait_for_server_start(char *bin_dir, char *user, char *password, int port)
snprintf(trash, PATH_MAX, "/tmp/trash.out"); snprintf(trash, PATH_MAX, "/tmp/trash.out");
// args // args
init_args(al); init_args(&al);
add_arg(al, "%s", mysqladmin_file); add_arg(&al, "%s", mysqladmin_file);
add_arg(al, "--no-defaults"); add_arg(&al, "--no-defaults");
add_arg(al, "--port=%u", port); add_arg(&al, "--port=%u", port);
add_arg(al, "--user=%s", user); add_arg(&al, "--user=%s", user);
add_arg(al, "--password=%s", password); add_arg(&al, "--password=%s", password);
add_arg(al, "--silent"); add_arg(&al, "--silent");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "connect_timeout=10"); add_arg(&al, "connect_timeout=10");
add_arg(al, "-w"); add_arg(&al, "-w");
add_arg(al, "--host=localhost"); add_arg(&al, "--host=localhost");
add_arg(al, "ping"); add_arg(&al, "ping");
// NetWare does not support the connect timeout in the TCP/IP stack // NetWare does not support the connect timeout in the TCP/IP stack
// -- we will try the ping multiple times // -- we will try the ping multiple times
for(i = 0; (i < TRY_MAX) for(i = 0; (i < TRY_MAX)
&& (err = spawn(mysqladmin_file, al, TRUE, NULL, && (err = spawn(mysqladmin_file, &al, TRUE, NULL,
trash, NULL)); i++) sleep(1); trash, NULL)); i++) sleep(1);
// free args // free args
free_args(al); free_args(&al);
return err; return err;
} }
...@@ -206,70 +221,52 @@ int wait_for_server_start(char *bin_dir, char *user, char *password, int port) ...@@ -206,70 +221,52 @@ int wait_for_server_start(char *bin_dir, char *user, char *password, int port)
spawn() spawn()
Spawn the given file with the given arguments. Spawn the given path with the given arguments.
******************************************************************************/ ******************************************************************************/
int spawn(char *file, arg_list al, int join, char *input, int spawn(char *path, arg_list_t *al, int join, char *input,
char *output, char *error) char *output, char *error)
{ {
NXNameSpec_t name; pid_t pid;
NXExecEnvSpec_t env; int result = 0;
NXVmId_t vm, ignore; wiring_t wiring = { FD_UNUSED, FD_UNUSED, FD_UNUSED };
int result; unsigned long flags = PROC_CURRENT_SPACE | PROC_INHERIT_CWD;
// name
name.ssType = NX_OBJ_FILE;
name.ssPathCtx = 0;
name.ssPath = file;
// env
env.esArgc = al->argc;
env.esArgv = al->argv;
env.esEnv = NULL;
env.esStdin.ssPathCtx = 0;
env.esStdout.ssPathCtx = 0;
env.esStderr.ssPathCtx = 0;
if (input == NULL)
{
env.esStdin.ssType = NX_OBJ_DEFAULT;
env.esStdin.ssPath = NULL;
}
else
{
env.esStdin.ssType = NX_OBJ_FILE;
env.esStdin.ssPath = input;
}
if (output == NULL) // open wiring
{ if (input)
env.esStdout.ssType = NX_OBJ_DEFAULT; wiring.infd = open(input, O_RDONLY);
env.esStdout.ssPath = NULL;
} if (output)
else wiring.outfd = open(output, O_WRONLY | O_CREAT | O_TRUNC);
{
env.esStdout.ssType = NX_OBJ_FILE; if (error)
env.esStdout.ssPath = output; wiring.errfd = open(error, O_WRONLY | O_CREAT | O_TRUNC);
}
// procve requires a NULL
add_arg(al, NULL);
if (error == NULL) // go
pid = procve(path, flags, NULL, &wiring, NULL, NULL, 0,
NULL, (const char **)al->argv);
if (pid == -1)
{ {
env.esStderr.ssType = NX_OBJ_DEFAULT; result = -1;
env.esStderr.ssPath = NULL;
} }
else else if (join)
{ {
env.esStderr.ssType = NX_OBJ_FILE; waitpid(pid, &result, 0);
env.esStderr.ssPath = error;
} }
result = NXVmSpawn(&name, &env, NX_VM_SAME_ADDRSPACE | NX_VM_INHERIT_ENV, &vm); // close wiring
if (wiring.infd != -1)
close(wiring.infd);
if (!result && join) if (wiring.outfd != -1)
{ close(wiring.outfd);
NXVmJoin(vm, &ignore, &result);
} if (wiring.errfd != -1)
close(wiring.errfd);
return result; return result;
} }
...@@ -284,7 +281,7 @@ int spawn(char *file, arg_list al, int join, char *input, ...@@ -284,7 +281,7 @@ int spawn(char *file, arg_list al, int join, char *input,
int stop_server(char *bin_dir, char *user, char *password, int port, int stop_server(char *bin_dir, char *user, char *password, int port,
char *pid_file) char *pid_file)
{ {
arg_list al; arg_list_t al;
int err, i, argc = 0; int err, i, argc = 0;
char mysqladmin_file[PATH_MAX]; char mysqladmin_file[PATH_MAX];
char trash[PATH_MAX]; char trash[PATH_MAX];
...@@ -294,18 +291,18 @@ int stop_server(char *bin_dir, char *user, char *password, int port, ...@@ -294,18 +291,18 @@ int stop_server(char *bin_dir, char *user, char *password, int port,
snprintf(trash, PATH_MAX, "/tmp/trash.out"); snprintf(trash, PATH_MAX, "/tmp/trash.out");
// args // args
init_args(al); init_args(&al);
add_arg(al, "%s", mysqladmin_file); add_arg(&al, "%s", mysqladmin_file);
add_arg(al, "--no-defaults"); add_arg(&al, "--no-defaults");
add_arg(al, "--port=%u", port); add_arg(&al, "--port=%u", port);
add_arg(al, "--user=%s", user); add_arg(&al, "--user=%s", user);
add_arg(al, "--password=%s", password); add_arg(&al, "--password=%s", password);
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "shutdown_timeout=20"); add_arg(&al, "shutdown_timeout=20");
add_arg(al, "shutdown"); add_arg(&al, "shutdown");
// spawn // spawn
if ((err = spawn(mysqladmin_file, al, TRUE, NULL, if ((err = spawn(mysqladmin_file, &al, TRUE, NULL,
trash, NULL)) == 0) trash, NULL)) == 0)
{ {
sleep_until_file_deleted(pid_file); sleep_until_file_deleted(pid_file);
...@@ -324,7 +321,7 @@ int stop_server(char *bin_dir, char *user, char *password, int port, ...@@ -324,7 +321,7 @@ int stop_server(char *bin_dir, char *user, char *password, int port,
} }
// free args // free args
free_args(al); free_args(&al);
return err; return err;
} }
......
...@@ -34,12 +34,9 @@ ...@@ -34,12 +34,9 @@
******************************************************************************/ ******************************************************************************/
#define ARG_MAX 50 #define ARG_BUF 10
#define TRY_MAX 5 #define TRY_MAX 5
#define init_args(al) _init_args(&al);
#define free_args(al) _free_args(&al);
/****************************************************************************** /******************************************************************************
structures structures
...@@ -50,9 +47,11 @@ typedef struct ...@@ -50,9 +47,11 @@ typedef struct
{ {
int argc; int argc;
char *argv[ARG_MAX]; char **argv;
size_t size;
} arg_list_t, * arg_list; } arg_list_t;
/****************************************************************************** /******************************************************************************
...@@ -66,18 +65,23 @@ typedef struct ...@@ -66,18 +65,23 @@ typedef struct
******************************************************************************/ ******************************************************************************/
void _init_args(arg_list *); void init_args(arg_list_t *);
void add_arg(arg_list, char *, ...); void add_arg(arg_list_t *, char *, ...);
void _free_args(arg_list *); void free_args(arg_list_t *);
int sleep_until_file_exists(char *); int sleep_until_file_exists(char *);
int sleep_until_file_deleted(char *); int sleep_until_file_deleted(char *);
int wait_for_server_start(char *, char *, char *, int); int wait_for_server_start(char *, char *, char *, int);
int spawn(char *, arg_list, int, char *, char *, char *);
int spawn(char *, arg_list_t *, int, char *, char *, char *);
int stop_server(char *, char *, char *, int, char *); int stop_server(char *, char *, char *, int, char *);
pid_t get_server_pid(char *); pid_t get_server_pid(char *);
void kill_server(pid_t pid); void kill_server(pid_t pid);
void del_tree(char *); void del_tree(char *);
int removef(char *, ...); int removef(char *, ...);
void get_basedir(char *, char *); void get_basedir(char *, char *);
#endif /* _MY_MANAGE */ #endif /* _MY_MANAGE */
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Print Defaults Tool" DESCRIPTION "MySQL Print Defaults Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -6,5 +6,6 @@ COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved ...@@ -6,5 +6,6 @@ COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved
DESCRIPTION "MySQL MyISAM Table Check Tool" DESCRIPTION "MySQL MyISAM Table Check Tool"
VERSION 4, 0 VERSION 4, 0
STACKSIZE 65536 STACKSIZE 65536
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL MyISAM Table Log Tool" DESCRIPTION "MySQL MyISAM Table Log Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL MyISAM Table Pack Tool" DESCRIPTION "MySQL MyISAM Table Pack Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -7,5 +7,6 @@ COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved ...@@ -7,5 +7,6 @@ COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved
DESCRIPTION "MySQL Monitor" DESCRIPTION "MySQL Monitor"
VERSION 4, 0 VERSION 4, 0
MULTIPLE MULTIPLE
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Install Tool" DESCRIPTION "MySQL Install Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <strings.h> #include <strings.h>
#include <getopt.h> #include <getopt.h>
#include <screen.h> #include <screen.h>
#include <errno.h>
#include "my_config.h" #include "my_config.h"
#include "my_manage.h" #include "my_manage.h"
...@@ -51,7 +52,7 @@ char default_option[PATH_MAX]; ...@@ -51,7 +52,7 @@ char default_option[PATH_MAX];
void start_defaults(int, char*[]); void start_defaults(int, char*[]);
void finish_defaults(); void finish_defaults();
void read_defaults(arg_list); void read_defaults(arg_list_t *);
void parse_args(int, char*[]); void parse_args(int, char*[]);
void get_options(int, char*[]); void get_options(int, char*[]);
void create_paths(); void create_paths();
...@@ -151,9 +152,9 @@ void finish_defaults() ...@@ -151,9 +152,9 @@ void finish_defaults()
Read the defaults. Read the defaults.
******************************************************************************/ ******************************************************************************/
void read_defaults(arg_list pal) void read_defaults(arg_list_t *pal)
{ {
arg_list al; arg_list_t al;
char defaults_file[PATH_MAX]; char defaults_file[PATH_MAX];
char mydefaults[PATH_MAX]; char mydefaults[PATH_MAX];
char line[PATH_MAX]; char line[PATH_MAX];
...@@ -167,15 +168,15 @@ void read_defaults(arg_list pal) ...@@ -167,15 +168,15 @@ void read_defaults(arg_list pal)
snprintf(mydefaults, PATH_MAX, "%s/bin/my_print_defaults", basedir); snprintf(mydefaults, PATH_MAX, "%s/bin/my_print_defaults", basedir);
// args // args
init_args(al); init_args(&al);
add_arg(al, mydefaults); add_arg(&al, mydefaults);
if (default_option[0]) add_arg(al, default_option); if (default_option[0]) add_arg(&al, default_option);
add_arg(al, "mysqld"); add_arg(&al, "mysqld");
add_arg(al, "mysql_install_db"); add_arg(&al, "mysql_install_db");
spawn(mydefaults, al, TRUE, NULL, defaults_file, NULL); spawn(mydefaults, &al, TRUE, NULL, defaults_file, NULL);
free_args(al); free_args(&al);
// gather defaults // gather defaults
if((fp = fopen(defaults_file, "r")) != NULL) if((fp = fopen(defaults_file, "r")) != NULL)
...@@ -267,17 +268,17 @@ void parse_args(int argc, char *argv[]) ...@@ -267,17 +268,17 @@ void parse_args(int argc, char *argv[])
******************************************************************************/ ******************************************************************************/
void get_options(int argc, char *argv[]) void get_options(int argc, char *argv[])
{ {
arg_list al; arg_list_t al;
// start defaults // start defaults
start_defaults(argc, argv); start_defaults(argc, argv);
// default file arguments // default file arguments
init_args(al); init_args(&al);
add_arg(al, "dummy"); add_arg(&al, "ignore");
read_defaults(al); read_defaults(&al);
parse_args(al->argc, al->argv); parse_args(al.argc, al.argv);
free_args(al); free_args(&al);
// command-line arguments // command-line arguments
parse_args(argc, argv); parse_args(argc, argv);
...@@ -323,7 +324,7 @@ void create_paths() ...@@ -323,7 +324,7 @@ void create_paths()
******************************************************************************/ ******************************************************************************/
int mysql_install_db(int argc, char *argv[]) int mysql_install_db(int argc, char *argv[])
{ {
arg_list al; arg_list_t al;
int i, j, err; int i, j, err;
char skip; char skip;
...@@ -336,8 +337,8 @@ int mysql_install_db(int argc, char *argv[]) ...@@ -336,8 +337,8 @@ int mysql_install_db(int argc, char *argv[])
}; };
// args // args
init_args(al); init_args(&al);
add_arg(al, "%s", mysqld); add_arg(&al, "%s", mysqld);
// parent args // parent args
for(i = 1; i < argc; i++) for(i = 1; i < argc; i++)
...@@ -354,19 +355,19 @@ int mysql_install_db(int argc, char *argv[]) ...@@ -354,19 +355,19 @@ int mysql_install_db(int argc, char *argv[])
} }
} }
if (!skip) add_arg(al, "%s", argv[i]); if (!skip) add_arg(&al, "%s", argv[i]);
} }
add_arg(al, "--bootstrap"); add_arg(&al, "--bootstrap");
add_arg(al, "--skip-grant-tables"); add_arg(&al, "--skip-grant-tables");
add_arg(al, "--skip-innodb"); add_arg(&al, "--skip-innodb");
add_arg(al, "--skip-bdb"); add_arg(&al, "--skip-bdb");
// spawn mysqld // spawn mysqld
err = spawn(mysqld, al, TRUE, sql_file, out_log, err_log); err = spawn(mysqld, &al, TRUE, sql_file, out_log, err_log);
// free args // free args
free_args(al); free_args(&al);
return err; return err;
} }
...@@ -384,6 +385,9 @@ int main(int argc, char **argv) ...@@ -384,6 +385,9 @@ int main(int argc, char **argv)
// check for an autoclose option // check for an autoclose option
if (!autoclose) setscreenmode(SCR_NO_MODE); if (!autoclose) setscreenmode(SCR_NO_MODE);
// header
printf("MySQL Server %s, for %s (%s)\n\n", VERSION, SYSTEM_TYPE, MACHINE_TYPE);
// create paths // create paths
create_paths(); create_paths();
...@@ -391,6 +395,7 @@ int main(int argc, char **argv) ...@@ -391,6 +395,7 @@ int main(int argc, char **argv)
if (mysql_install_db(argc, argv)) if (mysql_install_db(argc, argv))
{ {
printf("ERROR - The database creation failed!\n"); printf("ERROR - The database creation failed!\n");
printf(" %s\n", strerror(errno));
printf("See the following log for more infomration:\n"); printf("See the following log for more infomration:\n");
printf("\t%s\n\n", err_log); printf("\t%s\n\n", err_log);
exit(-1); exit(-1);
......
...@@ -6,5 +6,6 @@ SCREENNAME "MySQL Install" ...@@ -6,5 +6,6 @@ SCREENNAME "MySQL Install"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Initial Database Installer" DESCRIPTION "MySQL Initial Database Installer"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
This diff is collapsed.
...@@ -7,4 +7,5 @@ SCREENNAME "MySQL Test Run" ...@@ -7,4 +7,5 @@ SCREENNAME "MySQL Test Run"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Test Run" DESCRIPTION "MySQL Test Run"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -6,5 +6,6 @@ SCREENNAME "MySQL Admin" ...@@ -6,5 +6,6 @@ SCREENNAME "MySQL Admin"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Admin Tool" DESCRIPTION "MySQL Admin Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Binary Log Dump Tool" DESCRIPTION "MySQL Binary Log Dump Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Check Tool" DESCRIPTION "MySQL Check Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
# MySQL Server # MySQL Server
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
MODULE libc.nlm MODULE libc.nlm
XDCDATA mysqld.xdc
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Database Server" DESCRIPTION "MySQL Database Server"
VERSION 4, 0 VERSION 4, 0
MULTIPLE MULTIPLE
STACKSIZE 65536 STACKSIZE 65536
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -60,7 +60,7 @@ void vlog(char *, va_list); ...@@ -60,7 +60,7 @@ void vlog(char *, va_list);
void log(char *, ...); void log(char *, ...);
void start_defaults(int, char*[]); void start_defaults(int, char*[]);
void finish_defaults(); void finish_defaults();
void read_defaults(arg_list); void read_defaults(arg_list_t *);
void parse_args(int, char*[]); void parse_args(int, char*[]);
void get_options(int, char*[]); void get_options(int, char*[]);
void check_data_vol(); void check_data_vol();
...@@ -249,9 +249,9 @@ void finish_defaults() ...@@ -249,9 +249,9 @@ void finish_defaults()
Read the defaults. Read the defaults.
******************************************************************************/ ******************************************************************************/
void read_defaults(arg_list pal) void read_defaults(arg_list_t *pal)
{ {
arg_list al; arg_list_t al;
char defaults_file[PATH_MAX]; char defaults_file[PATH_MAX];
char mydefaults[PATH_MAX]; char mydefaults[PATH_MAX];
char line[PATH_MAX]; char line[PATH_MAX];
...@@ -265,17 +265,17 @@ void read_defaults(arg_list pal) ...@@ -265,17 +265,17 @@ void read_defaults(arg_list pal)
snprintf(mydefaults, PATH_MAX, "%s/bin/my_print_defaults", basedir); snprintf(mydefaults, PATH_MAX, "%s/bin/my_print_defaults", basedir);
// args // args
init_args(al); init_args(&al);
add_arg(al, mydefaults); add_arg(&al, mydefaults);
if (default_option[0]) add_arg(al, default_option); if (default_option[0]) add_arg(&al, default_option);
add_arg(al, "mysqld"); add_arg(&al, "mysqld");
add_arg(al, "server"); add_arg(&al, "server");
add_arg(al, "mysqld_safe"); add_arg(&al, "mysqld_safe");
add_arg(al, "safe_mysqld"); add_arg(&al, "safe_mysqld");
spawn(mydefaults, al, TRUE, NULL, defaults_file, NULL); spawn(mydefaults, &al, TRUE, NULL, defaults_file, NULL);
free_args(al); free_args(&al);
// gather defaults // gather defaults
if((fp = fopen(defaults_file, "r")) != NULL) if((fp = fopen(defaults_file, "r")) != NULL)
...@@ -405,17 +405,17 @@ void parse_args(int argc, char *argv[]) ...@@ -405,17 +405,17 @@ void parse_args(int argc, char *argv[])
******************************************************************************/ ******************************************************************************/
void get_options(int argc, char *argv[]) void get_options(int argc, char *argv[])
{ {
arg_list al; arg_list_t al;
// start defaults // start defaults
start_defaults(argc, argv); start_defaults(argc, argv);
// default file arguments // default file arguments
init_args(al); init_args(&al);
add_arg(al, "ignore"); add_arg(&al, "ignore");
read_defaults(al); read_defaults(&al);
parse_args(al->argc, al->argv); parse_args(al.argc, al.argv);
free_args(al); free_args(&al);
// command-line arguments // command-line arguments
parse_args(argc, argv); parse_args(argc, argv);
...@@ -504,7 +504,7 @@ void check_setup() ...@@ -504,7 +504,7 @@ void check_setup()
******************************************************************************/ ******************************************************************************/
void check_tables() void check_tables()
{ {
arg_list al; arg_list_t al;
char mycheck[PATH_MAX]; char mycheck[PATH_MAX];
char table[PATH_MAX]; char table[PATH_MAX];
char db[PATH_MAX]; char db[PATH_MAX];
...@@ -549,21 +549,21 @@ void check_tables() ...@@ -549,21 +549,21 @@ void check_tables()
snprintf(mycheck, PATH_MAX, "%s/bin/myisamchk", basedir); snprintf(mycheck, PATH_MAX, "%s/bin/myisamchk", basedir);
// args // args
init_args(al); init_args(&al);
add_arg(al, mycheck); add_arg(&al, mycheck);
add_arg(al, "--silent"); add_arg(&al, "--silent");
add_arg(al, "--force"); add_arg(&al, "--force");
add_arg(al, "--fast"); add_arg(&al, "--fast");
add_arg(al, "--medium-check"); add_arg(&al, "--medium-check");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "key_buffer=64M"); add_arg(&al, "key_buffer=64M");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "sort_buffer=64M"); add_arg(&al, "sort_buffer=64M");
add_arg(al, table); add_arg(&al, table);
spawn(mycheck, al, TRUE, NULL, NULL, NULL); spawn(mycheck, &al, TRUE, NULL, NULL, NULL);
free_args(al); free_args(&al);
} }
else if (strindex(table, ".ism")) else if (strindex(table, ".ism"))
{ {
...@@ -573,17 +573,17 @@ void check_tables() ...@@ -573,17 +573,17 @@ void check_tables()
snprintf(mycheck, PATH_MAX, "%s/bin/isamchk", basedir); snprintf(mycheck, PATH_MAX, "%s/bin/isamchk", basedir);
// args // args
init_args(al); init_args(&al);
add_arg(al, mycheck); add_arg(&al, mycheck);
add_arg(al, "--silent"); add_arg(&al, "--silent");
add_arg(al, "--force"); add_arg(&al, "--force");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "sort_buffer=64M"); add_arg(&al, "sort_buffer=64M");
add_arg(al, table); add_arg(&al, table);
spawn(mycheck, al, TRUE, NULL, NULL, NULL); spawn(mycheck, &al, TRUE, NULL, NULL, NULL);
free_args(al); free_args(&al);
} }
} }
} }
...@@ -599,7 +599,7 @@ void check_tables() ...@@ -599,7 +599,7 @@ void check_tables()
******************************************************************************/ ******************************************************************************/
void mysql_start(int argc, char *argv[]) void mysql_start(int argc, char *argv[])
{ {
arg_list al; arg_list_t al;
int i, j, err; int i, j, err;
struct stat info; struct stat info;
time_t cal; time_t cal;
...@@ -619,8 +619,8 @@ void mysql_start(int argc, char *argv[]) ...@@ -619,8 +619,8 @@ void mysql_start(int argc, char *argv[])
}; };
// args // args
init_args(al); init_args(&al);
add_arg(al, "%s", mysqld); add_arg(&al, "%s", mysqld);
// parent args // parent args
for(i = 1; i < argc; i++) for(i = 1; i < argc; i++)
...@@ -637,7 +637,7 @@ void mysql_start(int argc, char *argv[]) ...@@ -637,7 +637,7 @@ void mysql_start(int argc, char *argv[])
} }
} }
if (!skip) add_arg(al, "%s", argv[i]); if (!skip) add_arg(&al, "%s", argv[i]);
} }
// spawn // spawn
...@@ -653,7 +653,7 @@ void mysql_start(int argc, char *argv[]) ...@@ -653,7 +653,7 @@ void mysql_start(int argc, char *argv[])
log("mysql started : %s\n", stamp); log("mysql started : %s\n", stamp);
// spawn mysqld // spawn mysqld
spawn(mysqld, al, TRUE, NULL, NULL, err_log); spawn(mysqld, &al, TRUE, NULL, NULL, err_log);
} }
while (!stat(pid_file, &info)); while (!stat(pid_file, &info));
...@@ -664,7 +664,7 @@ void mysql_start(int argc, char *argv[]) ...@@ -664,7 +664,7 @@ void mysql_start(int argc, char *argv[])
log("mysql stopped : %s\n\n", stamp); log("mysql stopped : %s\n\n", stamp);
// free args // free args
free_args(al); free_args(&al);
} }
/****************************************************************************** /******************************************************************************
......
...@@ -6,5 +6,7 @@ SCREENNAME "MySQL Database Server" ...@@ -6,5 +6,7 @@ SCREENNAME "MySQL Database Server"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Database Server Monitor" DESCRIPTION "MySQL Database Server Monitor"
VERSION 4, 0 VERSION 4, 0
MULTIPLE
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Dump Tool" DESCRIPTION "MySQL Dump Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Import Tool" DESCRIPTION "MySQL Import Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -6,5 +6,6 @@ SCREENNAME "MySQL Show" ...@@ -6,5 +6,6 @@ SCREENNAME "MySQL Show"
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Show Tool" DESCRIPTION "MySQL Show Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Test Case Tool" DESCRIPTION "MySQL Test Case Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL ISAM Table Pack Tool" DESCRIPTION "MySQL ISAM Table Pack Tool"
VERSION 4, 0 VERSION 4, 0
DEBUG XDCDATA ../netware/mysql.xdc
#DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Error Code Description Tool" DESCRIPTION "MySQL Error Code Description Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL Text Replacement Tool" DESCRIPTION "MySQL Text Replacement Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -5,5 +5,6 @@ MODULE libc.nlm ...@@ -5,5 +5,6 @@ MODULE libc.nlm
COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved." COPYRIGHT "(c) 2003 Novell, Inc. Portions (c) 2003 MySQL AB. All Rights Reserved."
DESCRIPTION "MySQL IP/Hostname Resolve Tool" DESCRIPTION "MySQL IP/Hostname Resolve Tool"
VERSION 4, 0 VERSION 4, 0
XDCDATA ../netware/mysql.xdc
#DEBUG #DEBUG
...@@ -2178,6 +2178,20 @@ report("views","views", ...@@ -2178,6 +2178,20 @@ report("views","views",
save_config_data('foreign_key',$result,"foreign keys"); save_config_data('foreign_key',$result,"foreign keys");
} }
if ($limits{'foreign_key'} eq 'yes')
{
report("allows to update of foreign key values",'foreign_update',
"create table crash_me1 (a int not null primary key)",
"create table crash_me2 (a int not null," .
" foreign key (a) references crash_me1 (a))",
"insert into crash_me1 values (1)",
"insert into crash_me2 values (1)",
"update crash_me1 set a = 2", ## <- must fail
"drop table crash_me2 $drop_attr",
"drop table crash_me1 $drop_attr"
);
}
report("Create SCHEMA","create_schema", report("Create SCHEMA","create_schema",
"create schema crash_schema create table crash_q (a int) ". "create schema crash_schema create table crash_q (a int) ".
"create table crash_q2(b int)", "create table crash_q2(b int)",
......
#This file is automaticly generated by crash-me 1.60 #This file is automaticly generated by crash-me 1.61
NEG=yes # update of column= -column NEG=yes # update of column= -column
###< create table crash_q (a integer) ###< create table crash_q (a integer)
...@@ -177,7 +177,7 @@ compute=no # Compute ...@@ -177,7 +177,7 @@ compute=no # Compute
###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'compute sum(a) by a' at line 1 ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'compute sum(a) by a' at line 1
### ###
###As far as some queries didnt return OK, result is NO ###As far as some queries didnt return OK, result is NO
connections=101 # Simultaneous connections (installation default) connections=99 # Simultaneous connections (installation default)
constraint_check=syntax only # Column constraints constraint_check=syntax only # Column constraints
###< create table crash_q (a int check (a>0)) ###< create table crash_q (a int check (a>0))
###> OK ###> OK
...@@ -213,7 +213,7 @@ constraint_null=yes # NULL constraint (SyBase style) ...@@ -213,7 +213,7 @@ constraint_null=yes # NULL constraint (SyBase style)
### ###
###As far as all queries returned OK, result is YES ###As far as all queries returned OK, result is YES
crash_me_safe=yes # crash me safe crash_me_safe=yes # crash me safe
crash_me_version=1.60 # crash me version crash_me_version=1.61 # crash me version
create_default=yes # default value for column create_default=yes # default value for column
###< create table crash_q (q integer default 10 not null) ###< create table crash_q (q integer default 10 not null)
###> OK ###> OK
...@@ -345,7 +345,7 @@ date_format_inresult=iso # Date format in result ...@@ -345,7 +345,7 @@ date_format_inresult=iso # Date format in result
###> OK ###> OK
### ###
###< select a from crash_me_d ###< select a from crash_me_d
###> 2003-02-08 ###> 2003-03-26
###< delete from crash_me_d ###< delete from crash_me_d
###> OK ###> OK
date_infinity=error # Supports 'infinity dates date_infinity=error # Supports 'infinity dates
...@@ -695,7 +695,7 @@ func_extra_elt=yes # Function ELT ...@@ -695,7 +695,7 @@ func_extra_elt=yes # Function ELT
func_extra_encrypt=yes # Function ENCRYPT func_extra_encrypt=yes # Function ENCRYPT
### ###
###<select encrypt('hello') ###<select encrypt('hello')
###>kpb.ynRIu0Udw ###>tJNum3fO44bOE
func_extra_expand2arg=no # Function EXPAND func_extra_expand2arg=no # Function EXPAND
### ###
###<select expand('abcd',6) ###<select expand('abcd',6)
...@@ -991,7 +991,7 @@ func_extra_subtime=no # Function SUBTIME ...@@ -991,7 +991,7 @@ func_extra_subtime=no # Function SUBTIME
func_extra_sysdate=yes # Function SYSDATE func_extra_sysdate=yes # Function SYSDATE
### ###
###<select sysdate() ###<select sysdate()
###>2003-02-08 00:09:52 ###>2003-03-26 13:44:57
func_extra_tail=no # Function TAIL func_extra_tail=no # Function TAIL
### ###
###<select tail('ABCDEFG',3) ###<select tail('ABCDEFG',3)
...@@ -1056,7 +1056,7 @@ func_extra_uid=no # Function UID ...@@ -1056,7 +1056,7 @@ func_extra_uid=no # Function UID
func_extra_unix_timestamp=yes # Function UNIX_TIMESTAMP func_extra_unix_timestamp=yes # Function UNIX_TIMESTAMP
### ###
###<select unix_timestamp() ###<select unix_timestamp()
###>1044655792 ###>1048679097
func_extra_userenv=no # Function USERENV func_extra_userenv=no # Function USERENV
### ###
###<select userenv ###<select userenv
...@@ -1068,7 +1068,7 @@ func_extra_value=no # Function VALUE ...@@ -1068,7 +1068,7 @@ func_extra_value=no # Function VALUE
func_extra_version=yes # Function VERSION func_extra_version=yes # Function VERSION
### ###
###<select version() ###<select version()
###>4.0.11-gamma ###>4.0.12-debug
func_extra_weekday=yes # Function WEEKDAY func_extra_weekday=yes # Function WEEKDAY
### ###
###<select weekday('1997-11-29') from crash_me_d ###<select weekday('1997-11-29') from crash_me_d
...@@ -1136,11 +1136,11 @@ func_odbc_cot=yes # Function COT ...@@ -1136,11 +1136,11 @@ func_odbc_cot=yes # Function COT
func_odbc_curdate=yes # Function CURDATE func_odbc_curdate=yes # Function CURDATE
### ###
###<select curdate() ###<select curdate()
###>2003-02-08 ###>2003-03-26
func_odbc_curtime=yes # Function CURTIME func_odbc_curtime=yes # Function CURTIME
### ###
###<select curtime() ###<select curtime()
###>00:09:52 ###>13:44:57
func_odbc_database=yes # Function DATABASE func_odbc_database=yes # Function DATABASE
### ###
###<select database() ###<select database()
...@@ -1269,7 +1269,7 @@ func_odbc_monthname=yes # Function MONTHNAME ...@@ -1269,7 +1269,7 @@ func_odbc_monthname=yes # Function MONTHNAME
func_odbc_now=yes # Function NOW func_odbc_now=yes # Function NOW
### ###
###<select now() ###<select now()
###>2003-02-08 00:09:52 ###>2003-03-26 13:44:57
func_odbc_pi=yes # Function PI func_odbc_pi=yes # Function PI
### ###
###<select pi() ###<select pi()
...@@ -1416,15 +1416,15 @@ func_sql_concat_as_||=error # Function concatenation with || ...@@ -1416,15 +1416,15 @@ func_sql_concat_as_||=error # Function concatenation with ||
func_sql_current_date=yes # Function CURRENT_DATE func_sql_current_date=yes # Function CURRENT_DATE
### ###
###<select current_date ###<select current_date
###>2003-02-08 ###>2003-03-26
func_sql_current_time=yes # Function CURRENT_TIME func_sql_current_time=yes # Function CURRENT_TIME
### ###
###<select current_time ###<select current_time
###>00:09:52 ###>13:44:57
func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
### ###
###<select current_timestamp ###<select current_timestamp
###>2003-02-08 00:09:52 ###>2003-03-26 13:44:57
func_sql_current_user=with_parenthesis # CURRENT_USER func_sql_current_user=with_parenthesis # CURRENT_USER
###< select CURRENT_USER ###< select CURRENT_USER
###> execute error:Unknown column 'CURRENT_USER' in 'field list' ###> execute error:Unknown column 'CURRENT_USER' in 'field list'
...@@ -1438,11 +1438,11 @@ func_sql_extract_sql=yes # Function EXTRACT ...@@ -1438,11 +1438,11 @@ func_sql_extract_sql=yes # Function EXTRACT
func_sql_localtime=yes # Function LOCALTIME func_sql_localtime=yes # Function LOCALTIME
### ###
###<select localtime ###<select localtime
###>2003-02-08 00:09:52 ###>2003-03-26 13:44:57
func_sql_localtimestamp=yes # Function LOCALTIMESTAMP func_sql_localtimestamp=yes # Function LOCALTIMESTAMP
### ###
###<select localtimestamp ###<select localtimestamp
###>2003-02-08 00:09:52 ###>2003-03-26 13:44:57
func_sql_lower=yes # Function LOWER func_sql_lower=yes # Function LOWER
### ###
###<select LOWER('ABC') ###<select LOWER('ABC')
...@@ -1880,7 +1880,7 @@ logical_value=1 # Value of logical operation (1=1) ...@@ -1880,7 +1880,7 @@ logical_value=1 # Value of logical operation (1=1)
###>1 ###>1
max_big_expressions=10 # big expressions max_big_expressions=10 # big expressions
###We are trying (example with N=5): ###We are trying (example with N=5):
###select 0+(1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+...(10558) ###select 0+(1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+...(16398)
### 50:FAIL 10:OK 30:FAIL 14:FAIL 11:FAIL ### 50:FAIL 10:OK 30:FAIL 14:FAIL 11:FAIL
max_char_size=255 # max char() size max_char_size=255 # max char() size
###We are trying (example with N=5): ###We are trying (example with N=5):
...@@ -1902,10 +1902,10 @@ max_conditions=85660 # OR and AND in WHERE ...@@ -1902,10 +1902,10 @@ max_conditions=85660 # OR and AND in WHERE
###We are trying (example with N=5): ###We are trying (example with N=5):
###select a from crash_me where a=1 and b='a' or a=0 and b='0' or a=1 and b='1' or a=2 and b='2' or a=3 and b='3' or a=4 and b='4' ###select a from crash_me where a=1 and b='a' or a=0 and b='0' or a=1 and b='1' or a=2 and b='2' or a=3 and b='3' or a=4 and b='4'
### 27592:OK 41389:OK 48287:FAIL 42769:OK 45528:FAIL 43321:FAIL 42880:FAIL 42791:OK 42835:FAIL 42800:OK 42817:OK 42826:OK 42830:OK 42832:FAIL 42831:FAIL ### 27592:OK 41389:OK 48287:FAIL 42769:OK 45528:FAIL 43321:FAIL 42880:FAIL 42791:OK 42835:FAIL 42800:OK 42817:OK 42826:OK 42830:OK 42832:FAIL 42831:FAIL
max_expressions=1075 # simple expressions max_expressions=1659 # simple expressions
###We are trying (example with N=5): ###We are trying (example with N=5):
###select 1+1+1+1+1+1 ###select 1+1+1+1+1+1
### 5000:FAIL 1000:OK 3000:FAIL 1400:FAIL 1080:FAIL 1016:OK 1048:OK 1064:OK 1072:OK 1076:FAIL 1073:OK 1074:OK 1075:OK ### 5000:FAIL 1000:OK 3000:FAIL 1400:OK 2200:FAIL 1560:OK 1880:FAIL 1624:OK 1752:FAIL 1650:OK 1701:FAIL 1660:FAIL 1652:OK 1656:OK 1658:OK 1659:OK
max_index=32 # max index max_index=32 # max index
### max_unique_index=32 ,so max_index must be same ### max_unique_index=32 ,so max_index must be same
max_index_length=500 # index length max_index_length=500 # index length
...@@ -1946,10 +1946,10 @@ max_row_length_with_null=65502 # table row length with nulls (without blobs) ...@@ -1946,10 +1946,10 @@ max_row_length_with_null=65502 # table row length with nulls (without blobs)
max_select_alias_name=+512 # select alias name length max_select_alias_name=+512 # select alias name length
###We are trying (example with N=5): ###We are trying (example with N=5):
###select b as aaaaa from crash_me ###select b as aaaaa from crash_me
max_stack_expression=1075 # stacked expressions max_stack_expression=1659 # stacked expressions
###We are trying (example with N=5): ###We are trying (example with N=5):
###select 1+(1+(1+(1+(1+(1))))) ###select 1+(1+(1+(1+(1+(1)))))
### 1000:OK 1500:FAIL 1100:FAIL 1020:OK 1060:OK 1080:FAIL 1064:OK 1072:OK 1076:FAIL 1073:OK 1074:OK 1075:OK ### 1000:OK 1500:OK 1750:FAIL 1550:OK 1650:OK 1700:FAIL 1660:FAIL 1652:OK 1656:OK 1658:OK 1659:OK
max_table_alias_name=+512 # table alias name length max_table_alias_name=+512 # table alias name length
###We are trying (example with N=5): ###We are trying (example with N=5):
###select aaaaa.b from crash_me aaaaa ###select aaaaa.b from crash_me aaaaa
...@@ -6043,7 +6043,7 @@ select_without_from=yes # SELECT without FROM ...@@ -6043,7 +6043,7 @@ select_without_from=yes # SELECT without FROM
###> OK ###> OK
### ###
###As far as all queries returned OK, result is YES ###As far as all queries returned OK, result is YES
server_version=MySQL 4.0.11 gamma # server version server_version=MySQL 4.0.12 debug/ # server version
simple_joins=yes # ANSI SQL simple joins simple_joins=yes # ANSI SQL simple joins
###< select crash_me.a from crash_me, crash_me t0 ###< select crash_me.a from crash_me, crash_me t0
###> OK ###> OK
...@@ -6166,7 +6166,7 @@ time_format_inresult=iso # Time format in result ...@@ -6166,7 +6166,7 @@ time_format_inresult=iso # Time format in result
###> OK ###> OK
### ###
###< select a from crash_me_t ###< select a from crash_me_t
###> 00:09:52 ###> 13:44:57
###< delete from crash_me_t ###< delete from crash_me_t
###> OK ###> OK
transactions=yes # transactions transactions=yes # transactions
......
...@@ -1268,6 +1268,7 @@ bool Item_ref::fix_fields(THD *thd,TABLE_LIST *tables, Item **reference) ...@@ -1268,6 +1268,7 @@ bool Item_ref::fix_fields(THD *thd,TABLE_LIST *tables, Item **reference)
maybe_null= (*ref)->maybe_null; maybe_null= (*ref)->maybe_null;
decimals= (*ref)->decimals; decimals= (*ref)->decimals;
set_charset((*ref)->charset()); set_charset((*ref)->charset());
with_sum_func= (*ref)->with_sum_func;
fixed= 1; fixed= 1;
if (ref && (*ref)->check_cols(1)) if (ref && (*ref)->check_cols(1))
......
...@@ -1451,19 +1451,25 @@ String *Item_func_database::val_str(String *str) ...@@ -1451,19 +1451,25 @@ String *Item_func_database::val_str(String *str)
return str; return str;
} }
// TODO: make USER() replicate properly (currently it is replicated to "")
String *Item_func_user::val_str(String *str) String *Item_func_user::val_str(String *str)
{ {
THD *thd=current_thd; THD *thd=current_thd;
CHARSET_INFO *cs= default_charset(); CHARSET_INFO *cs= default_charset();
const char *host=thd->host ? thd->host : thd->ip ? thd->ip : ""; const char *host=thd->host ? thd->host : thd->ip ? thd->ip : "";
uint32 res_length=(strlen(thd->user)+strlen(host)+10) * cs->mbmaxlen; // For system threads (e.g. replication SQL thread) user may be empty
if (!thd->user)
return &empty_string;
uint32 res_length=(strlen(thd->user)+strlen(host)+2) * cs->mbmaxlen;
if (str->alloc(res_length)) if (str->alloc(res_length))
{ {
null_value=1; null_value=1;
return 0; return 0;
} }
res_length=cs->snprintf(cs, (char*)str->ptr(), res_length, "%s@%s",thd->user,host); res_length=cs->snprintf(cs, (char*)str->ptr(), res_length, "%s@%s",
thd->user, host);
str->length(res_length); str->length(res_length);
str->set_charset(cs); str->set_charset(cs);
return str; return str;
......
...@@ -2043,10 +2043,12 @@ static int init_common_variables(const char *conf_file_name, int argc, ...@@ -2043,10 +2043,12 @@ static int init_common_variables(const char *conf_file_name, int argc,
#ifdef HAVE_PTHREAD_ATTR_GETSTACKSIZE #ifdef HAVE_PTHREAD_ATTR_GETSTACKSIZE
{ {
/* Retrieve used stack size; Needed for checking stack overflows */ /* Retrieve used stack size; Needed for checking stack overflows */
size_t stack_size; size_t stack_size= 0;
pthread_attr_getstacksize(&connection_attrib, &stack_size); pthread_attr_getstacksize(&connection_attrib, &stack_size);
if (global_system_variables.log_warnings && stack_size != thread_stack) /* We must check if stack_size = 0 as Solaris 2.9 can return 0 here */
if (stack_size && stack_size != thread_stack)
{ {
if (global_system_variables.log_warnings)
sql_print_error("Warning: Asked for %ld thread stack, but got %ld", sql_print_error("Warning: Asked for %ld thread stack, but got %ld",
thread_stack, stack_size); thread_stack, stack_size);
thread_stack= stack_size; thread_stack= stack_size;
......
This diff is collapsed.
...@@ -3420,21 +3420,29 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type, ...@@ -3420,21 +3420,29 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
lex->col_list.empty(); lex->col_list.empty();
} }
if (default_value && default_value->type() == Item::NULL_ITEM) if (default_value)
{
if (default_value->type() == Item::NULL_ITEM)
{ {
default_value=0;
if ((type_modifier & (NOT_NULL_FLAG | AUTO_INCREMENT_FLAG)) == if ((type_modifier & (NOT_NULL_FLAG | AUTO_INCREMENT_FLAG)) ==
NOT_NULL_FLAG) NOT_NULL_FLAG)
{ {
net_printf(thd,ER_INVALID_DEFAULT,field_name); net_printf(thd,ER_INVALID_DEFAULT,field_name);
DBUG_RETURN(1); DBUG_RETURN(1);
} }
default_value=0; }
else if (type_modifier & AUTO_INCREMENT_FLAG)
{
net_printf(thd, ER_INVALID_DEFAULT, field_name);
DBUG_RETURN(1);
}
} }
if (!(new_field=new create_field())) if (!(new_field=new create_field()))
DBUG_RETURN(1); DBUG_RETURN(1);
new_field->field=0; new_field->field=0;
new_field->field_name=field_name; new_field->field_name=field_name;
new_field->def= (type_modifier & AUTO_INCREMENT_FLAG ? 0 : default_value); new_field->def= default_value;
new_field->flags= type_modifier; new_field->flags= type_modifier;
new_field->unireg_check= (type_modifier & AUTO_INCREMENT_FLAG ? new_field->unireg_check= (type_modifier & AUTO_INCREMENT_FLAG ?
Field::NEXT_NUMBER : Field::NONE); Field::NEXT_NUMBER : Field::NONE);
......
...@@ -3091,6 +3091,7 @@ into: ...@@ -3091,6 +3091,7 @@ into:
LEX *lex=Lex; LEX *lex=Lex;
if (!lex->describe) if (!lex->describe)
{ {
lex->uncacheable();
if (!(lex->exchange= new sql_exchange($3.str,0))) if (!(lex->exchange= new sql_exchange($3.str,0)))
YYABORT; YYABORT;
if (!(lex->result= new select_export(lex->exchange))) if (!(lex->result= new select_export(lex->exchange)))
...@@ -3103,6 +3104,7 @@ into: ...@@ -3103,6 +3104,7 @@ into:
LEX *lex=Lex; LEX *lex=Lex;
if (!lex->describe) if (!lex->describe)
{ {
lex->uncacheable();
if (!(lex->exchange= new sql_exchange($3.str,1))) if (!(lex->exchange= new sql_exchange($3.str,1)))
YYABORT; YYABORT;
if (!(lex->result= new select_dump(lex->exchange))) if (!(lex->result= new select_dump(lex->exchange)))
......
...@@ -46,8 +46,8 @@ the following commands in a terminal window: ...@@ -46,8 +46,8 @@ the following commands in a terminal window:
sudo ./bin/mysqld_safe sudo ./bin/mysqld_safe
(Enter your password) (Enter your password)
(Press CTRL+Z) (Press CTRL+Z)
(Press CTRL+D to exit the shell)
bg bg
(Press CTRL+D to exit the shell)
You should now be able to connect to the MySQL server, You should now be able to connect to the MySQL server,
e.g. by running /usr/local/mysql/bin/mysql e.g. by running /usr/local/mysql/bin/mysql
......
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