Commit ae14fa14 authored by unknown's avatar unknown

Merge sinisa@bk-internal.mysql.com:/home/bk/mysql-4.0

into sinisa.nasamreza.org:/mnt/work/mysql-4.0


sql/sql_show.cc:
  Auto merged
parents fc7ab8d1 bd294f07
...@@ -2213,11 +2213,11 @@ Storage: same as TINYINT. ...@@ -2213,11 +2213,11 @@ Storage: same as TINYINT.
@strong{DATE} @strong{DATE}
@itemize @bullet @itemize @bullet
@item @item
Storage: fixed-length series of binary integers, always three bytes Storage: 3 byte integer, low byte first.
long. Packed as: 'day + month*32 + year*16*32'
@item @item
Example: a DATE column containing '0001-01-01' looks like:@* Example: a DATE column containing '1962-01-02' looks like:@*
@code{hexadecimal 21 02 00} @code{hexadecimal 22 54 0F}
@end itemize @end itemize
@strong{DATETIME} @strong{DATETIME}
...@@ -2236,16 +2236,19 @@ Example: a DATETIME column for '0001-01-01 01:01:01' looks like:@* ...@@ -2236,16 +2236,19 @@ Example: a DATETIME column for '0001-01-01 01:01:01' looks like:@*
@strong{TIME} @strong{TIME}
@itemize @bullet @itemize @bullet
@item @item
Storage: a value offset from 8385959, always three bytes long. Storage: 3 bytes, low byte first.
This is stored as seconds: days*24*3600+hours*3600+minutes*60+seconds
@item @item
Example: a TIME column containing '01:01:01' looks like:@* Example: a TIME column containing '1 02:03:04' (1 day 2 hour 3 minutes and 4 seconds) looks like:@*
@code{hexadecimal 75 27 00} @code{hexadecimal 58 6E 01}
@end itemize @end itemize
@strong{TIMESTAMP} @strong{TIMESTAMP}
@itemize @bullet @itemize @bullet
@item @item
Storage: four bytes long (NOTE TO SELF: not figured out) Storage: 4 bytes, low byte first.
Stored as unix @code{time()}, which is seconds since the Epoch
(00:00:00 UTC, January 1, 1970).
@item @item
Example: a TIMESTAMP column containing '2003-01-01 01:01:01' looks like:@* Example: a TIMESTAMP column containing '2003-01-01 01:01:01' looks like:@*
@code{hexadecimal 4D AE 12 23} @code{hexadecimal 4D AE 12 23}
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
#include <signal.h> #include <signal.h>
#include <violite.h> #include <violite.h>
const char *VER= "12.19"; const char *VER= "12.20";
/* Don't try to make a nice table if the data is too big */ /* Don't try to make a nice table if the data is too big */
#define MAX_COLUMN_LENGTH 1024 #define MAX_COLUMN_LENGTH 1024
...@@ -919,6 +919,7 @@ static bool add_line(String &buffer,char *line,char *in_string) ...@@ -919,6 +919,7 @@ static bool add_line(String &buffer,char *line,char *in_string)
uchar inchar; uchar inchar;
char buff[80],*pos,*out; char buff[80],*pos,*out;
COMMANDS *com; COMMANDS *com;
my_bool in_comment= 0;
if (!line[0] && buffer.is_empty()) if (!line[0] && buffer.is_empty())
return 0; return 0;
...@@ -978,7 +979,7 @@ static bool add_line(String &buffer,char *line,char *in_string) ...@@ -978,7 +979,7 @@ static bool add_line(String &buffer,char *line,char *in_string)
continue; continue;
} }
} }
else if (inchar == ';' && !*in_string) else if (inchar == ';' && !*in_string && !in_comment)
{ // ';' is end of command { // ';' is end of command
if (out != line) if (out != line)
buffer.append(line,(uint) (out-line)); // Add this line buffer.append(line,(uint) (out-line)); // Add this line
...@@ -1009,6 +1010,13 @@ static bool add_line(String &buffer,char *line,char *in_string) ...@@ -1009,6 +1010,13 @@ static bool add_line(String &buffer,char *line,char *in_string)
else if (!*in_string && (inchar == '\'' || inchar == '"')) else if (!*in_string && (inchar == '\'' || inchar == '"'))
*in_string=(char) inchar; *in_string=(char) inchar;
*out++ = (char) inchar; *out++ = (char) inchar;
if (inchar == '*' && !*in_string)
{
if (pos != line && pos[-1] == '/')
in_comment= 1;
else if (in_comment && pos[1] == '/')
in_comment= 0;
}
} }
} }
if (out != line || !buffer.is_empty()) if (out != line || !buffer.is_empty())
......
...@@ -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
......
...@@ -366,14 +366,18 @@ typedef struct st_sort_info ...@@ -366,14 +366,18 @@ typedef struct st_sort_info
SORT_KEY_BLOCKS *key_block,*key_block_end; SORT_KEY_BLOCKS *key_block,*key_block_end;
/* 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;
typedef struct st_mi_sort_param typedef struct st_mi_sort_param
{ {
#ifdef THREAD
pthread_t thr; pthread_t thr;
#endif
IO_CACHE read_cache, tempfile, tempfile_for_exceptions; IO_CACHE read_cache, tempfile, tempfile_for_exceptions;
DYNAMIC_ARRAY buffpek; DYNAMIC_ARRAY buffpek;
ulonglong unique[MI_MAX_KEY_SEG+1]; ulonglong unique[MI_MAX_KEY_SEG+1];
......
...@@ -2109,7 +2109,7 @@ err: ...@@ -2109,7 +2109,7 @@ err:
Threaded repair of table using sorting Threaded repair of table using sorting
SYNOPSIS SYNOPSIS
mi_repair_by_sort_r() 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)
...@@ -2128,6 +2128,9 @@ err: ...@@ -2128,6 +2128,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;
...@@ -2489,6 +2492,7 @@ err: ...@@ -2489,6 +2492,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 */
......
...@@ -275,6 +275,7 @@ static ha_rows NEAR_F find_all_keys(MI_SORT_PARAM *info, uint keys, ...@@ -275,6 +275,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)
...@@ -542,6 +543,7 @@ int thr_write_keys(MI_SORT_PARAM *sort_param) ...@@ -542,6 +543,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,
......
...@@ -148,3 +148,26 @@ select * from t1; ...@@ -148,3 +148,26 @@ select * from t1;
if('2002'='2002','Y','N') if('2002'='2002','Y','N')
Y Y
drop table if exists t1; drop table if exists t1;
SET SESSION table_type="heap";
SELECT @@table_type;
@@table_type
HEAP
CREATE TABLE t1 (a int not null);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL default '0'
) TYPE=HEAP
drop table t1;
SET SESSION table_type="gemini";
SELECT @@table_type;
@@table_type
GEMINI
CREATE TABLE t1 (a int not null);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL default '0'
) TYPE=MyISAM
SET SESSION table_type=default;
drop table t1;
...@@ -11,7 +11,7 @@ INSERT INTO t1 VALUES (2,2,2,'','0000-00-00'); ...@@ -11,7 +11,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),
...@@ -51,7 +51,7 @@ userid MIN(t1.score+0.0) ...@@ -51,7 +51,7 @@ userid MIN(t1.score+0.0)
2 2.0 2 2.0
drop table test.t1,test.t2; drop table test.t1,test.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,
...@@ -74,7 +74,7 @@ SELECT COUNT(P.URID),SUM(P.amount),P.method, MIN(PP.recdate+0) > 19980501000000 ...@@ -74,7 +74,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)
...@@ -82,7 +82,7 @@ PRIMARY KEY (cid) ...@@ -82,7 +82,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)
...@@ -102,7 +102,7 @@ cid CONCAT(firstname, ' ', surname) COUNT(call_id) ...@@ -102,7 +102,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,
......
...@@ -235,7 +235,7 @@ INSERT INTO t2 VALUES (11410,11410,131,0); ...@@ -235,7 +235,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,
...@@ -248,7 +248,7 @@ UNIQUE dni_pasaporte_2 (dni_pasaporte,idPla,cod_asig,any,quatrimestre) ...@@ -248,7 +248,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,
...@@ -285,7 +285,7 @@ fill idPla ...@@ -285,7 +285,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)
); );
...@@ -293,7 +293,7 @@ INSERT INTO t1 VALUES (1,'Antonio Paz'); ...@@ -293,7 +293,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)
...@@ -383,15 +383,15 @@ id str ...@@ -383,15 +383,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,
......
...@@ -564,3 +564,15 @@ show status like "Qcache_queries_in_cache"; ...@@ -564,3 +564,15 @@ 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;
drop table if exists 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;
...@@ -315,7 +315,7 @@ Incorrect sub part key. The used key part isn't a string, the used length is lon ...@@ -315,7 +315,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,
...@@ -339,7 +339,7 @@ INSERT INTO t2 VALUES (1,1); ...@@ -339,7 +339,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,
...@@ -367,7 +367,7 @@ PRIMARY KEY (seq_0_id,seq_1_id) ...@@ -367,7 +367,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,
...@@ -394,7 +394,7 @@ INSERT INTO t6 VALUES (1,1); ...@@ -394,7 +394,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
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
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,
......
...@@ -102,3 +102,20 @@ drop table t1; ...@@ -102,3 +102,20 @@ drop table t1;
create table t1 select if('2002'='2002','Y','N'); create table t1 select if('2002'='2002','Y','N');
select * from t1; select * from t1;
drop table if exists t1; drop table if exists t1;
#
# Test default table type
#
SET SESSION table_type="heap";
SELECT @@table_type;
CREATE TABLE t1 (a int not null);
show create table t1;
drop table t1;
# Test what happens when using a non existing table type
SET SESSION table_type="gemini";
SELECT @@table_type;
CREATE TABLE t1 (a int not null);
show create table t1;
SET SESSION table_type=default;
drop table t1;
...@@ -17,7 +17,7 @@ INSERT INTO t1 VALUES (2,1,1,'','0000-00-00'); ...@@ -17,7 +17,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),
...@@ -47,7 +47,7 @@ drop table test.t1,test.t2; ...@@ -47,7 +47,7 @@ drop table test.t1,test.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,
...@@ -79,7 +79,7 @@ drop table t1; ...@@ -79,7 +79,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)
...@@ -88,7 +88,7 @@ INSERT INTO t1 VALUES (1,'That','Guy'); ...@@ -88,7 +88,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)
...@@ -114,7 +114,7 @@ unlock tables; ...@@ -114,7 +114,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,
......
...@@ -168,7 +168,7 @@ INSERT INTO t2 VALUES (11416,11416,32767,0); ...@@ -168,7 +168,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,
...@@ -183,7 +183,7 @@ CREATE TABLE t3 ( ...@@ -183,7 +183,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,
...@@ -210,7 +210,7 @@ drop table t1,t2,t3,test.t4; ...@@ -210,7 +210,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)
); );
...@@ -219,7 +219,7 @@ INSERT INTO t1 VALUES (2,'Lilliana Angelovska'); ...@@ -219,7 +219,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)
...@@ -257,15 +257,15 @@ drop table t1; ...@@ -257,15 +257,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 (
......
...@@ -23,7 +23,7 @@ INSERT INTO t1 VALUES (2,7,'60671569','Y'); ...@@ -23,7 +23,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,
......
...@@ -407,3 +407,16 @@ show status like "Qcache_queries_in_cache"; ...@@ -407,3 +407,16 @@ 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
#
drop table if exists t1;
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;
\ No newline at end of file
...@@ -96,7 +96,7 @@ drop table t1; ...@@ -96,7 +96,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,
...@@ -127,7 +127,7 @@ INSERT INTO t2 VALUES (2,1); ...@@ -127,7 +127,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,
...@@ -162,7 +162,7 @@ INSERT INTO t4 VALUES (1,1); ...@@ -162,7 +162,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,
...@@ -194,7 +194,7 @@ INSERT INTO t6 VALUES (1,2); ...@@ -194,7 +194,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,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
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,
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
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 ,
...@@ -91,7 +91,7 @@ select auto,new_field,new_blob_col,date_field from t1 ; ...@@ -91,7 +91,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),
......
...@@ -72,7 +72,7 @@ CREATE TABLE t1 ( ...@@ -72,7 +72,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
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
#include "my_config.h"
#include "my_manage.h" #include "my_manage.h"
/****************************************************************************** /******************************************************************************
...@@ -178,7 +179,7 @@ void report_stats() ...@@ -178,7 +179,7 @@ void report_stats()
******************************************************************************/ ******************************************************************************/
void install_db(char *datadir) void install_db(char *datadir)
{ {
arg_list al; arg_list_t al;
int err, i; int err, i;
char input[PATH_MAX]; char input[PATH_MAX];
char output[PATH_MAX]; char output[PATH_MAX];
...@@ -190,23 +191,23 @@ void install_db(char *datadir) ...@@ -190,23 +191,23 @@ void install_db(char *datadir)
snprintf(error, PATH_MAX, "%s/install.err", datadir); snprintf(error, PATH_MAX, "%s/install.err", datadir);
// args // args
init_args(al); init_args(&al);
add_arg(al, mysqld_file); add_arg(&al, mysqld_file);
add_arg(al, "--bootstrap"); add_arg(&al, "--bootstrap");
add_arg(al, "--skip-grant-tables"); add_arg(&al, "--skip-grant-tables");
add_arg(al, "--basedir=%s", base_dir); add_arg(&al, "--basedir=%s", base_dir);
add_arg(al, "--datadir=%s", datadir); add_arg(&al, "--datadir=%s", datadir);
add_arg(al, "--skip-innodb"); add_arg(&al, "--skip-innodb");
add_arg(al, "--skip-bdb"); add_arg(&al, "--skip-bdb");
// spawn // spawn
if ((err = spawn(mysqld_file, al, TRUE, input, output, error)) != 0) if ((err = spawn(mysqld_file, &al, TRUE, input, output, error)) != 0)
{ {
die("Unable to create database."); die("Unable to create database.");
} }
// free args // free args
free_args(al); free_args(&al);
} }
/****************************************************************************** /******************************************************************************
...@@ -261,7 +262,7 @@ void mysql_install_db() ...@@ -261,7 +262,7 @@ void mysql_install_db()
******************************************************************************/ ******************************************************************************/
void start_master() void start_master()
{ {
arg_list al; arg_list_t al;
int err, i; int err, i;
char master_out[PATH_MAX]; char master_out[PATH_MAX];
char master_err[PATH_MAX]; char master_err[PATH_MAX];
...@@ -297,32 +298,32 @@ void start_master() ...@@ -297,32 +298,32 @@ void start_master()
mysql_test_dir, restarts); mysql_test_dir, restarts);
// args // args
init_args(al); init_args(&al);
add_arg(al, "%s", mysqld_file); add_arg(&al, "%s", mysqld_file);
add_arg(al, "--no-defaults"); add_arg(&al, "--no-defaults");
add_arg(al, "--log-bin=master-bin"); add_arg(&al, "--log-bin=master-bin");
add_arg(al, "--server-id=1"); add_arg(&al, "--server-id=1");
add_arg(al, "--basedir=%s", base_dir); add_arg(&al, "--basedir=%s", base_dir);
add_arg(al, "--port=%u", master_port); add_arg(&al, "--port=%u", master_port);
add_arg(al, "--local-infile"); add_arg(&al, "--local-infile");
add_arg(al, "--core"); add_arg(&al, "--core");
add_arg(al, "--datadir=%s", master_dir); add_arg(&al, "--datadir=%s", master_dir);
add_arg(al, "--pid-file=%s", master_pid); add_arg(&al, "--pid-file=%s", master_pid);
add_arg(al, "--character-sets-dir=%s", char_dir); add_arg(&al, "--character-sets-dir=%s", char_dir);
add_arg(al, "--tmpdir=%s", mysql_tmp_dir); add_arg(&al, "--tmpdir=%s", mysql_tmp_dir);
add_arg(al, "--language=%s", lang_dir); add_arg(&al, "--language=%s", lang_dir);
// $MASTER_40_ARGS // $MASTER_40_ARGS
add_arg(al, "--rpl-recovery-rank=1"); add_arg(&al, "--rpl-recovery-rank=1");
add_arg(al, "--init-rpl-role=master"); add_arg(&al, "--init-rpl-role=master");
// $SMALL_SERVER // $SMALL_SERVER
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "key_buffer_size=1M"); add_arg(&al, "key_buffer_size=1M");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "sort_buffer=256K"); add_arg(&al, "sort_buffer=256K");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "max_heap_table_size=1M"); add_arg(&al, "max_heap_table_size=1M");
// $EXTRA_MASTER_OPT // $EXTRA_MASTER_OPT
if (master_opt[0] != NULL) if (master_opt[0] != NULL)
...@@ -333,7 +334,7 @@ void start_master() ...@@ -333,7 +334,7 @@ void start_master()
while(p) while(p)
{ {
add_arg(al, "%s", p); add_arg(&al, "%s", p);
p = (char *)strtok(NULL, " \t"); p = (char *)strtok(NULL, " \t");
} }
...@@ -343,7 +344,7 @@ void start_master() ...@@ -343,7 +344,7 @@ void start_master()
remove(master_pid); remove(master_pid);
// spawn // spawn
if ((err = spawn(mysqld_file, al, FALSE, NULL, master_out, master_err)) == 0) if ((err = spawn(mysqld_file, &al, FALSE, NULL, master_out, master_err)) == 0)
{ {
sleep_until_file_exists(master_pid); sleep_until_file_exists(master_pid);
...@@ -362,7 +363,7 @@ void start_master() ...@@ -362,7 +363,7 @@ void start_master()
} }
// free_args // free_args
free_args(al); free_args(&al);
} }
/****************************************************************************** /******************************************************************************
...@@ -374,7 +375,7 @@ void start_master() ...@@ -374,7 +375,7 @@ void start_master()
******************************************************************************/ ******************************************************************************/
void start_slave() void start_slave()
{ {
arg_list al; arg_list_t al;
int err, i; int err, i;
char slave_out[PATH_MAX]; char slave_out[PATH_MAX];
char slave_err[PATH_MAX]; char slave_err[PATH_MAX];
...@@ -444,34 +445,34 @@ void start_slave() ...@@ -444,34 +445,34 @@ void start_slave()
mysql_test_dir, restarts); mysql_test_dir, restarts);
// args // args
init_args(al); init_args(&al);
add_arg(al, "%s", mysqld_file); add_arg(&al, "%s", mysqld_file);
add_arg(al, "--no-defaults"); add_arg(&al, "--no-defaults");
add_arg(al, "--log-bin=slave-bin"); add_arg(&al, "--log-bin=slave-bin");
add_arg(al, "--relay_log=slave-relay-bin"); add_arg(&al, "--relay_log=slave-relay-bin");
add_arg(al, "--basedir=%s", base_dir); add_arg(&al, "--basedir=%s", base_dir);
add_arg(al, "--port=%u", slave_port); add_arg(&al, "--port=%u", slave_port);
add_arg(al, "--datadir=%s", slave_dir); add_arg(&al, "--datadir=%s", slave_dir);
add_arg(al, "--pid-file=%s", slave_pid); add_arg(&al, "--pid-file=%s", slave_pid);
add_arg(al, "--character-sets-dir=%s", char_dir); add_arg(&al, "--character-sets-dir=%s", char_dir);
add_arg(al, "--core"); add_arg(&al, "--core");
add_arg(al, "--tmpdir=%s", mysql_tmp_dir); add_arg(&al, "--tmpdir=%s", mysql_tmp_dir);
add_arg(al, "--language=%s", lang_dir); add_arg(&al, "--language=%s", lang_dir);
add_arg(al, "--exit-info=256"); add_arg(&al, "--exit-info=256");
add_arg(al, "--log-slave-updates"); add_arg(&al, "--log-slave-updates");
add_arg(al, "--init-rpl-role=slave"); add_arg(&al, "--init-rpl-role=slave");
add_arg(al, "--skip-innodb"); add_arg(&al, "--skip-innodb");
add_arg(al, "--skip-slave-start"); add_arg(&al, "--skip-slave-start");
add_arg(al, "--slave-load-tmpdir=../../var/tmp"); add_arg(&al, "--slave-load-tmpdir=../../var/tmp");
add_arg(al, "--report-user=%s", user); add_arg(&al, "--report-user=%s", user);
add_arg(al, "--report-host=127.0.0.1"); add_arg(&al, "--report-host=127.0.0.1");
add_arg(al, "--report-port=%u", slave_port); add_arg(&al, "--report-port=%u", slave_port);
add_arg(al, "--master-retry-count=10"); add_arg(&al, "--master-retry-count=10");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "slave_net_timeout=10"); add_arg(&al, "slave_net_timeout=10");
// slave master info // slave master info
if (slave_master_info[0] != NULL) if (slave_master_info[0] != NULL)
...@@ -482,29 +483,29 @@ void start_slave() ...@@ -482,29 +483,29 @@ void start_slave()
while(p) while(p)
{ {
add_arg(al, "%s", p); add_arg(&al, "%s", p);
p = (char *)strtok(NULL, " \t"); p = (char *)strtok(NULL, " \t");
} }
} }
else else
{ {
add_arg(al, "--master-user=%s", user); add_arg(&al, "--master-user=%s", user);
add_arg(al, "--master-password=%s", password); add_arg(&al, "--master-password=%s", password);
add_arg(al, "--master-host=127.0.0.1"); add_arg(&al, "--master-host=127.0.0.1");
add_arg(al, "--master-port=%u", master_port); add_arg(&al, "--master-port=%u", master_port);
add_arg(al, "--master-connect-retry=1"); add_arg(&al, "--master-connect-retry=1");
add_arg(al, "--server-id=2"); add_arg(&al, "--server-id=2");
add_arg(al, "--rpl-recovery-rank=2"); add_arg(&al, "--rpl-recovery-rank=2");
} }
// small server // small server
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "key_buffer_size=1M"); add_arg(&al, "key_buffer_size=1M");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "sort_buffer=256K"); add_arg(&al, "sort_buffer=256K");
add_arg(al, "-O"); add_arg(&al, "-O");
add_arg(al, "max_heap_table_size=1M"); add_arg(&al, "max_heap_table_size=1M");
// opt args // opt args
if (slave_opt[0] != NULL) if (slave_opt[0] != NULL)
...@@ -515,7 +516,7 @@ void start_slave() ...@@ -515,7 +516,7 @@ void start_slave()
while(p) while(p)
{ {
add_arg(al, "%s", p); add_arg(&al, "%s", p);
p = (char *)strtok(NULL, " \t"); p = (char *)strtok(NULL, " \t");
} }
...@@ -525,7 +526,7 @@ void start_slave() ...@@ -525,7 +526,7 @@ void start_slave()
remove(slave_pid); remove(slave_pid);
// spawn // spawn
if ((err = spawn(mysqld_file, al, FALSE, NULL, slave_out, slave_err)) == 0) if ((err = spawn(mysqld_file, &al, FALSE, NULL, slave_out, slave_err)) == 0)
{ {
sleep_until_file_exists(slave_pid); sleep_until_file_exists(slave_pid);
...@@ -544,7 +545,7 @@ void start_slave() ...@@ -544,7 +545,7 @@ void start_slave()
} }
// free args // free args
free_args(al); free_args(&al);
} }
/****************************************************************************** /******************************************************************************
...@@ -749,7 +750,7 @@ void run_test(char *test) ...@@ -749,7 +750,7 @@ void run_test(char *test)
char out_file[PATH_MAX]; char out_file[PATH_MAX];
char err_file[PATH_MAX]; char err_file[PATH_MAX];
int err; int err;
arg_list al; arg_list_t al;
NXTime_t start, stop; NXTime_t start, stop;
// skip slave? // skip slave?
...@@ -812,25 +813,25 @@ void run_test(char *test) ...@@ -812,25 +813,25 @@ void run_test(char *test)
log("%-46s ", test); log("%-46s ", test);
// args // args
init_args(al); init_args(&al);
add_arg(al, "%s", mysqltest_file); add_arg(&al, "%s", mysqltest_file);
add_arg(al, "--no-defaults"); add_arg(&al, "--no-defaults");
add_arg(al, "--port=%u", master_port); add_arg(&al, "--port=%u", master_port);
add_arg(al, "--database=%s", db); add_arg(&al, "--database=%s", db);
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, "--basedir=%s/", mysql_test_dir); add_arg(&al, "--basedir=%s/", mysql_test_dir);
add_arg(al, "--host=127.0.0.1"); add_arg(&al, "--host=127.0.0.1");
add_arg(al, "-v"); add_arg(&al, "-v");
add_arg(al, "-R"); add_arg(&al, "-R");
add_arg(al, "%s", result_file); add_arg(&al, "%s", result_file);
// start timer // start timer
NXGetTime(NX_SINCE_BOOT, NX_USECONDS, &start); NXGetTime(NX_SINCE_BOOT, NX_USECONDS, &start);
// spawn // spawn
err = spawn(mysqltest_file, al, TRUE, test_file, out_file, err_file); err = spawn(mysqltest_file, &al, TRUE, test_file, out_file, err_file);
// stop timer // stop timer
NXGetTime(NX_SINCE_BOOT, NX_USECONDS, &stop); NXGetTime(NX_SINCE_BOOT, NX_USECONDS, &stop);
...@@ -840,7 +841,7 @@ void run_test(char *test) ...@@ -840,7 +841,7 @@ void run_test(char *test)
total_time += elapsed; total_time += elapsed;
// free args // free args
free_args(al); free_args(&al);
if (err == 0) if (err == 0)
{ {
...@@ -1055,9 +1056,6 @@ void setup(char *file) ...@@ -1055,9 +1056,6 @@ void setup(char *file)
// enviornment // enviornment
setenv("MYSQL_TEST_DIR", mysql_test_dir, 1); setenv("MYSQL_TEST_DIR", mysql_test_dir, 1);
// install test databases
mysql_install_db();
} }
/****************************************************************************** /******************************************************************************
...@@ -1067,11 +1065,17 @@ void setup(char *file) ...@@ -1067,11 +1065,17 @@ void setup(char *file)
******************************************************************************/ ******************************************************************************/
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
log("Initializing Tests...\n");
// setup // setup
setup(argv[0]); setup(argv[0]);
// header
log("MySQL Server %s, for %s (%s)\n\n", VERSION, SYSTEM_TYPE, MACHINE_TYPE);
log("Initializing Tests...\n");
// install test databases
mysql_install_db();
log("Starting Tests...\n"); log("Starting Tests...\n");
log("\n"); log("\n");
......
...@@ -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)",
......
...@@ -121,8 +121,15 @@ handler *get_new_handler(TABLE *table, enum db_type db_type) ...@@ -121,8 +121,15 @@ handler *get_new_handler(TABLE *table, enum db_type db_type)
#endif #endif
case DB_TYPE_HEAP: case DB_TYPE_HEAP:
return new ha_heap(table); return new ha_heap(table);
case DB_TYPE_MYISAM:
default: // should never happen default: // should never happen
{
enum db_type def=(enum db_type) current_thd->variables.table_type;
/* Try first with 'default table type' */
if (db_type != def)
return get_new_handler(table, def);
}
/* Fall back to MyISAM */
case DB_TYPE_MYISAM:
return new ha_myisam(table); return new ha_myisam(table);
case DB_TYPE_MRG_MYISAM: case DB_TYPE_MRG_MYISAM:
return new ha_myisammrg(table); return new ha_myisammrg(table);
......
...@@ -1373,8 +1373,10 @@ String *Item_func_database::val_str(String *str) ...@@ -1373,8 +1373,10 @@ String *Item_func_database::val_str(String *str)
String *Item_func_user::val_str(String *str) String *Item_func_user::val_str(String *str)
{ {
// TODO: make USER() replicate properly (currently it is replicated to "")
THD *thd=current_thd; THD *thd=current_thd;
if (str->copy((const char*) thd->user,(uint) strlen(thd->user)) || if (!(thd->user) || // for system threads (e.g. replication SQL thread)
str->copy((const char*) thd->user,(uint) strlen(thd->user)) ||
str->append('@') || str->append('@') ||
str->append(thd->host ? thd->host : thd->ip ? thd->ip : "")) str->append(thd->host ? thd->host : thd->ip ? thd->ip : ""))
return &empty_string; return &empty_string;
......
...@@ -5,22 +5,22 @@ ...@@ -5,22 +5,22 @@
"isamchk", "isamchk",
"NO", "NO",
"YES", "YES",
"Kan inte skapa filen: '%-.64s' (Felkod: %d)", "Kan inte skapa filen '%-.64s' (Felkod: %d)",
"Kan inte skapa tabellen: '%-.64s' (Felkod: %d)", "Kan inte skapa tabellen '%-.64s' (Felkod: %d)",
"Kan inte skapa databasen '%-.64s'. (Felkod: %d)", "Kan inte skapa databasen '%-.64s'. (Felkod: %d)",
"Databasen '%-.64s' existerar redan", "Databasen '%-.64s' existerar redan",
"Kan inte radera databasen '%-.64s'. Databasen finns inte", "Kan inte radera databasen '%-.64s'. Databasen finns inte",
"Fel vid radering av databasen (Kan inte radera '%-.64s'. Felkod: %d)", "Fel vid radering av databasen (Kan inte radera '%-.64s'. Felkod: %d)",
"Fel vid radering av databasen (Kan inte radera biblioteket '%-.64s'. Felkod: %d)", "Fel vid radering av databasen (Kan inte radera biblioteket '%-.64s'. Felkod: %d)",
"Kan inte radera filen: '%-.64s' (Felkod: %d)", "Kan inte radera filen '%-.64s' (Felkod: %d)",
"Hittar inte posten i systemregistret", "Hittar inte posten i systemregistret",
"Kan inte läsa filinformationen (stat) från '%-.64s' (Felkod: %d)", "Kan inte läsa filinformationen (stat) från '%-.64s' (Felkod: %d)",
"Kan inte inte läsa aktivt bibliotek. (Felkod: %d)", "Kan inte inte läsa aktivt bibliotek. (Felkod: %d)",
"Kan inte låsa filen. (Felkod: %d)", "Kan inte låsa filen. (Felkod: %d)",
"Kan inte använda: '%-.64s'. (Felkod: %d)", "Kan inte använda '%-.64s'. (Felkod: %d)",
"Hittar inte filen: '%-.64s'. (Felkod: %d)", "Hittar inte filen '%-.64s'. (Felkod: %d)",
"Kan inte läsa från bibliotek '%-.64s'. (Felkod: %d)", "Kan inte läsa från bibliotek '%-.64s'. (Felkod: %d)",
"Kan inte byta till: '%-.64s'. (Felkod: %d)", "Kan inte byta till '%-.64s'. (Felkod: %d)",
"Posten har förändrats sedan den lästes i register '%-.64s'", "Posten har förändrats sedan den lästes i register '%-.64s'",
"Disken är full (%s). Väntar tills det finns ledigt utrymme....", "Disken är full (%s). Väntar tills det finns ledigt utrymme....",
"Kan inte skriva, dubbel söknyckel i register '%-.64s'", "Kan inte skriva, dubbel söknyckel i register '%-.64s'",
...@@ -36,13 +36,13 @@ ...@@ -36,13 +36,13 @@
"Hittar inte posten", "Hittar inte posten",
"Felaktig fil: '%-.64s'", "Felaktig fil: '%-.64s'",
"Fatalt fel vid hantering av register '%-.64s'. Kör en reparation", "Fatalt fel vid hantering av register '%-.64s'. Kör en reparation",
"Gammal nyckelfil '%-.64s'; Reparera registret", "Gammal nyckelfil '%-.64s'. Reparera registret",
"'%-.64s' är skyddad mot förändring", "'%-.64s' är skyddad mot förändring",
"Oväntat slut på minnet, starta om programmet och försök på nytt (Behövde %d bytes)", "Oväntat slut på minnet, starta om programmet och försök på nytt (Behövde %d bytes)",
"Sorteringsbufferten räcker inte till. Kontrollera startparametrarna", "Sorteringsbufferten räcker inte till. Kontrollera startparametrarna",
"Oväntat filslut vid läsning från '%-.64s' (Felkod: %d)", "Oväntat filslut vid läsning från '%-.64s' (Felkod: %d)",
"För många anslutningar", "För många anslutningar",
"Fick slut på minnet. Kontrollera ifall mysqld eller någon annan process använder allt tillgängligt minne. Ifall inte, försök använda 'ulimit' eller allokera mera swap", "Fick slut på minnet. Kontrollera om mysqld eller någon annan process använder allt tillgängligt minne. Om inte, försök använda 'ulimit' eller allokera mera swap",
"Kan inte hitta 'hostname' för din adress", "Kan inte hitta 'hostname' för din adress",
"Fel vid initiering av kommunikationen med klienten", "Fel vid initiering av kommunikationen med klienten",
"Användare '%-.32s@%-.64s' är ej berättigad att använda databasen %-.64s", "Användare '%-.32s@%-.64s' är ej berättigad att använda databasen %-.64s",
...@@ -50,43 +50,43 @@ ...@@ -50,43 +50,43 @@
"Ingen databas i användning", "Ingen databas i användning",
"Okänt commando", "Okänt commando",
"Kolumn '%-.64s' får inte vara NULL", "Kolumn '%-.64s' får inte vara NULL",
"Okänd database '%-.64s'", "Okänd databas: '%-.64s'",
"Tabellen '%-.64s' finns redan", "Tabellen '%-.64s' finns redan",
"Okänd tabell '%-.64s'", "Okänd tabell '%-.64s'",
"Kolumn: '%-.64s' i %s är inte unik", "Kolumn '%-.64s' i %s är inte unik",
"Servern går nu ned", "Servern går nu ned",
"Okänd kolumn '%-.64s' i %s", "Okänd kolumn '%-.64s' i %s",
"'%-.64s' finns inte i GROUP BY", "'%-.64s' finns inte i GROUP BY",
"Kan inte använda GROUP BY med '%-.64s'", "Kan inte använda GROUP BY med '%-.64s'",
"Kommandot har både sum functions och enkla funktioner", "Kommandot har både sum functions och enkla funktioner",
"Antalet kolumner motsvarar inte antalet värden", "Antalet kolumner motsvarar inte antalet värden",
"Kolumn namn '%-.64s' är för långt", "Kolumnnamn '%-.64s' är för långt",
"Kolumn namn '%-.64s finns flera gånger", "Kolumnnamn '%-.64s finns flera gånger",
"Nyckel namn '%-.64s' finns flera gånger", "Nyckelnamn '%-.64s' finns flera gånger",
"Dubbel nyckel '%-.64s' för nyckel: %d", "Dubbel nyckel '%-.64s' för nyckel %d",
"Felaktigt kolumn typ för kolumn: '%-.64s'", "Felaktigt kolumntyp för kolumn '%-.64s'",
"%s nära '%-.64s' på rad %d", "%s nära '%-.64s' på rad %d",
"Frågan var tom", "Frågan var tom",
"Icke unikt tabell/alias: '%-.64s'", "Icke unikt tabell/alias: '%-.64s'",
"Ogiltigt DEFAULT värde för '%-.64s'", "Ogiltigt DEFAULT värde för '%-.64s'",
"Flera PRIMARY KEY använda", "Flera PRIMARY KEY använda",
"För många nycklar använda. Man får ha högst %d nycklar", "För många nycklar använda. Man får ha högst %d nycklar",
"För många nyckel delar använda. Man får ha högst %d nyckeldelar", "För många nyckeldelar använda. Man får ha högst %d nyckeldelar",
"För lång nyckel. Högsta tillåtna nyckellängd är %d", "För lång nyckel. Högsta tillåtna nyckellängd är %d",
"Nyckel kolumn '%-.64s' finns inte", "Nyckelkolumn '%-.64s' finns inte",
"En BLOB '%-.64s' kan inte vara nyckel med den använda tabellen typen", "En BLOB '%-.64s' kan inte vara nyckel med den använda tabelltypen",
"För stor kolumnlängd angiven för '%-.64s' (max= %d). Använd en BLOB instället", "För stor kolumnlängd angiven för '%-.64s' (max= %d). Använd en BLOB instället",
"Det får finnas endast ett AUTO_INCREMENT fält och detta måste vara en nyckel", "Det får finnas endast ett AUTO_INCREMENT-fält och detta måste vara en nyckel",
"%s: klar att ta emot klienter\n", "%s: klar att ta emot klienter\n",
"%s: Normal avslutning\n", "%s: Normal avslutning\n",
"%s: Fick signal %d. Avslutar!\n", "%s: Fick signal %d. Avslutar!\n",
"%s: Avslutning klar\n", "%s: Avslutning klar\n",
"%s: Stänger av tråd %ld användare: '%-.64s'\n", "%s: Stänger av tråd %ld; användare: '%-.64s'\n",
"Kan inte skapa IP socket", "Kan inte skapa IP-socket",
"Tabellen '%-.64s' har inget index som motsvarar det angivna i CREATE INDEX. Skapa om tabellen", "Tabellen '%-.64s' har inget index som motsvarar det angivna i CREATE INDEX. Skapa om tabellen",
"Fält separatorerna är inte emotsägande eller för långa. Kontrollera mot manualen", "Fältseparatorerna är vad som förväntades. Kontrollera mot manualen",
"Man kan inte använda fast radlängd med blobs. Använd 'fields terminated by'", "Man kan inte använda fast radlängd med blobs. Använd 'fields terminated by'",
"Textfilen '%' måste finnas i databas biblioteket eller vara läsbar för alla", "Textfilen '%' måste finnas i databasbiblioteket eller vara läsbar för alla",
"Filen '%-.64s' existerar redan", "Filen '%-.64s' existerar redan",
"Rader: %ld Bortagna: %ld Dubletter: %ld Varningar: %ld", "Rader: %ld Bortagna: %ld Dubletter: %ld Varningar: %ld",
"Rader: %ld Dubletter: %ld", "Rader: %ld Dubletter: %ld",
...@@ -94,18 +94,18 @@ ...@@ -94,18 +94,18 @@
"Man kan inte radera alla fält med ALTER TABLE. Använd DROP TABLE istället", "Man kan inte radera alla fält med ALTER TABLE. Använd DROP TABLE istället",
"Kan inte ta bort '%-.64s'. Kontrollera att fältet/nyckel finns", "Kan inte ta bort '%-.64s'. Kontrollera att fältet/nyckel finns",
"Rader: %ld Dubletter: %ld Varningar: %ld", "Rader: %ld Dubletter: %ld Varningar: %ld",
"INSERT table '%-.64s' får inte finnas i FROM tabell-listan", "INSERT-table '%-.64s' får inte finnas i FROM tabell-listan",
"Finns inget thread med id %lu", "Finns ingen tråd med id %lu",
"Du är inte ägare till thread %lu", "Du är inte ägare till td %lu",
"Inga tabeller angivna", "Inga tabeller angivna",
"För många alternativ till kolumn %s för SET", "För många alternativ till kolumn %s för SET",
"Kan inte generera ett unikt filnamn %s.(1-999)\n", "Kan inte generera ett unikt filnamn %s.(1-999)\n",
"Tabell '%-.64s' kan inte uppdateras emedan den är låst för läsning", "Tabell '%-.64s' kan inte uppdateras emedan den är låst för läsning",
"Tabell '%-.64s' är inte låst med LOCK TABLES", "Tabell '%-.64s' är inte låst med LOCK TABLES",
"BLOB fält '%-.64s' kan inte ha ett DEFAULT värde", "BLOB fält '%-.64s' kan inte ha ett DEFAULT-värde",
"Felaktigt databas namn '%-.64s'", "Felaktigt databasnamn '%-.64s'",
"Felaktigt tabell namn '%-.64s'", "Felaktigt tabellnamn '%-.64s'",
"Den angivna frågan skulle troligen ta mycket long tid! Kontrollar din WHERE och använd SET OPTION SQL_BIG_SELECTS=1 ifall du vill hantera stora joins", "Den angivna frågan skulle troligen ta mycket lång tid! Kontrollera din WHERE och använd SET OPTION SQL_BIG_SELECTS=1 ifall du vill hantera stora joins",
"Oidentifierat fel", "Oidentifierat fel",
"Okänd procedur: %s", "Okänd procedur: %s",
"Felaktigt antal parametrar till procedur %s", "Felaktigt antal parametrar till procedur %s",
...@@ -116,12 +116,12 @@ ...@@ -116,12 +116,12 @@
"Tabell '%-.64s' har en extension som inte finns i denna version av MySQL", "Tabell '%-.64s' har en extension som inte finns i denna version av MySQL",
"Tabeller måste ha minst 1 kolumn", "Tabeller måste ha minst 1 kolumn",
"Tabellen '%-.64s' är full", "Tabellen '%-.64s' är full",
"Okänt karaktärset: '%-.64s'", "Okänd teckenuppsättning: '%-.64s'",
"För många tabeller. MySQL can ha högst %d tabeller i en och samma join", "För många tabeller. MySQL can ha högst %d tabeller i en och samma join",
"För många fält", "För många fält",
"För stor total rad längd. Den högst tillåtna rad-längden, förutom BLOBs, är %d. Ändra några av dina fält till BLOB", "För stor total radlängd. Den högst tillåtna radlängden, förutom BLOBs, är %d. Ändra några av dina fält till BLOB",
"Tråd-stacken tog slut: Har använt %ld av %ld bytes. Använd 'mysqld -O thread_stack=#' ifall du behöver en större stack", "Trådstacken tog slut: Har använt %ld av %ld bytes. Använd 'mysqld -O thread_stack=#' ifall du behöver en större stack",
"Felaktigt referens i OUTER JOIN. Kontrollera ON uttrycket", "Felaktigt referens i OUTER JOIN. Kontrollera ON-uttrycket",
"Kolumn '%-.32s' är använd med UNIQUE eller INDEX men är inte definerad med NOT NULL", "Kolumn '%-.32s' är använd med UNIQUE eller INDEX men är inte definerad med NOT NULL",
"Kan inte ladda funktionen '%-.64s'", "Kan inte ladda funktionen '%-.64s'",
"Kan inte initialisera funktionen '%-.64s'; '%-.80s'", "Kan inte initialisera funktionen '%-.64s'; '%-.80s'",
...@@ -130,30 +130,30 @@ ...@@ -130,30 +130,30 @@
"Kan inte öppna det dynamiska biblioteket '%-.64s' (Felkod: %d %s)", "Kan inte öppna det dynamiska biblioteket '%-.64s' (Felkod: %d %s)",
"Hittar inte funktionen '%-.64s' in det dynamiska biblioteket", "Hittar inte funktionen '%-.64s' in det dynamiska biblioteket",
"Funktionen '%-.64s' är inte definierad", "Funktionen '%-.64s' är inte definierad",
"Denna dator '%-.64s' är blockerad pga många felaktig paket. Gör 'mysqladmin flush-hosts' för att ta bort alla blockeringarna", "Denna dator, '%-.64s', är blockerad pga många felaktig paket. Gör 'mysqladmin flush-hosts' för att ta bort alla blockeringarna",
"Denna dator '%-.64s' har inte privileger att använda denna MySQL server", "Denna dator, '%-.64s', har inte privileger att använda denna MySQL server",
"Du använder MySQL som en anonym användare och som sådan får du inte ändra ditt lösenord", "Du använder MySQL som en anonym användare och som sådan får du inte ändra ditt lösenord",
"För att ändra lösenord för andra måste du ha rättigheter att uppdatera mysql databasen", "För att ändra lösenord för andra måste du ha rättigheter att uppdatera mysql-databasen",
"Hittade inte användaren i 'user' tabellen", "Hittade inte användaren i 'user'-tabellen",
"Rader: %ld Uppdaterade: %ld Varningar: %ld", "Rader: %ld Uppdaterade: %ld Varningar: %ld",
"Kan inte skapa en ny tråd (errno %d)", "Kan inte skapa en ny tråd (errno %d)",
"Antalet kolumner motsvarar inte antalet värden på rad: %ld", "Antalet kolumner motsvarar inte antalet värden på rad: %ld",
"Kunde inte stänga och öppna tabell: '%-.64s", "Kunde inte stänga och öppna tabell '%-.64s",
"Felaktig använding av NULL", "Felaktig använding av NULL",
"Fix fel '%-.64s' från REGEXP", "Fick fel '%-.64s' från REGEXP",
"Man får ha både GROUP kolumner (MIN(),MAX(),COUNT()...) och fält i en fråga om man inte har en GROUP BY del", "Man får ha både GROUP-kolumner (MIN(),MAX(),COUNT()...) och fält i en fråga om man inte har en GROUP BY-del",
"Det finns inget privilegium definierat för användare '%-.32s' på '%-.64s'", "Det finns inget privilegium definierat för användare '%-.32s' på '%-.64s'",
"%-.16s ej tillåtet för '%-.32s@%-.64s' för tabell '%-.64s'", "%-.16s ej tillåtet för '%-.32s@%-.64s' för tabell '%-.64s'",
"%-.16s ej tillåtet för '%-.32s@%-.64s'\n för kolumn '%-.64s' i tabell '%-.64s'", "%-.16s ej tillåtet för '%-.32s@%-.64s' för kolumn '%-.64s' i tabell '%-.64s'",
"Felaktigt GRANT privilegium använt", "Felaktigt GRANT-privilegium använt",
"Felaktigt maskinnamn eller användarnamn använt med GRANT", "Felaktigt maskinnamn eller användarnamn använt med GRANT",
"Det finns ingen tabell som heter '%-.64s.%s'", "Det finns ingen tabell som heter '%-.64s.%s'",
"Det finns inget privilegium definierat för användare '%-.32s' på '%-.64s' för tabell '%-.64s'", "Det finns inget privilegium definierat för användare '%-.32s' på '%-.64s' för tabell '%-.64s'",
"Du kan inte använda detta kommando med denna MySQL version", "Du kan inte använda detta kommando med denna MySQL version",
"Du har något fel i din syntax", "Du har något fel i din syntax",
"DELAYED INSERT tråden kunde inte låsa tabell '%-.64s'", "DELAYED INSERT-tråden kunde inte låsa tabell '%-.64s'",
"Det finns redan 'max_delayed_threads' trådar i använding", "Det finns redan 'max_delayed_threads' trådar i använding",
"Avbröt länken för tråd %ld till db: '%-.64s' användare: '%-.64s' (%s)", "Avbröt länken för tråd %ld till db '%-.64s', användare '%-.64s' (%s)",
"Kommunkationspaketet är större än 'max_allowed_packet'", "Kommunkationspaketet är större än 'max_allowed_packet'",
"Fick läsfel från klienten vid läsning från 'PIPE'", "Fick läsfel från klienten vid läsning från 'PIPE'",
"Fick fatalt fel från 'fcntl()'", "Fick fatalt fel från 'fcntl()'",
...@@ -163,20 +163,20 @@ ...@@ -163,20 +163,20 @@
"Fick 'timeout' vid läsning från klienten", "Fick 'timeout' vid läsning från klienten",
"Fick ett fel vid skrivning till klienten", "Fick ett fel vid skrivning till klienten",
"Fick 'timeout' vid skrivning till klienten", "Fick 'timeout' vid skrivning till klienten",
"Resultat strängen är längre än max_allowed_packet", "Resultatsträngen är längre än max_allowed_packet",
"Den använda tabell typen kan inte hantera BLOB/TEXT kolumner", "Den använda tabelltypen kan inte hantera BLOB/TEXT-kolumner",
"Den använda tabell typen kan inte hantera AUTO_INCREMENT kolumner", "Den använda tabelltypen kan inte hantera AUTO_INCREMENT-kolumner",
"INSERT DELAYED kan inte användas med tabell '%-.64s', emedan den är låst med LOCK TABLES", "INSERT DELAYED kan inte användas med tabell '%-.64s', emedan den är låst med LOCK TABLES",
"Felaktigt column namn '%-.100s'", "Felaktigt kolumnnamn '%-.100s'",
"Den använda tabell typen kan inte indexera kolumn '%-.64s'", "Den använda tabelltypen kan inte indexera kolumn '%-.64s'",
"Tabellerna i MERGE tabellen är inte identiskt definierade", "Tabellerna i MERGE-tabellen är inte identiskt definierade",
"Kan inte skriva till tabell '%-.64s'; UNIQUE test", "Kan inte skriva till tabell '%-.64s'; UNIQUE-test",
"Du har inte angett en nyckel längd för BLOB '%-.64s'", "Du har inte angett någon nyckellängd för BLOB '%-.64s'",
"Alla delar av en PRIMARY KEY måste vara NOT NULL; Om du vill ha en nyckel med NULL, använd UNIQUE istället", "Alla delar av en PRIMARY KEY måste vara NOT NULL; Om du vill ha en nyckel med NULL, använd UNIQUE istället",
"Resultet bestod av mera än en rad", "Resultet bestod av mera än en rad",
"Denna tabell typ kräver en PRIMARY KEY", "Denna tabelltyp kräver en PRIMARY KEY",
"Denna version av MySQL är inte kompilerad med RAID", "Denna version av MySQL är inte kompilerad med RAID",
"Du använder 'säker uppdaterings mod' och försökte uppdatera en table utan en WHERE sats som använder sig av en nyckel", "Du använder 'säker uppdateringsmod' och försökte uppdatera en tabell utan en WHERE-sats som använder sig av en nyckel",
"Nyckel '%-.64s' finns inte in tabell '%-.64s'", "Nyckel '%-.64s' finns inte in tabell '%-.64s'",
"Kan inte öppna tabellen", "Kan inte öppna tabellen",
"Tabellhanteraren för denna tabell kan inte göra %s", "Tabellhanteraren för denna tabell kan inte göra %s",
...@@ -185,56 +185,56 @@ ...@@ -185,56 +185,56 @@
"Fick fel %d vid ROLLBACK", "Fick fel %d vid ROLLBACK",
"Fick fel %d vid FLUSH_LOGS", "Fick fel %d vid FLUSH_LOGS",
"Fick fel %d vid CHECKPOINT", "Fick fel %d vid CHECKPOINT",
"Avbröt länken för tråd %ld till db: '%-.64s' användare: '%-.32s' Host: '%-.64s' (%.-64s)", "Avbröt länken för tråd %ld till db '%-.64s', användare '%-.32s', host '%-.64s' (%.-64s)",
"Tabellhanteraren klarar inte en binär kopiering av tabellen", "Tabellhanteraren klarar inte en binär kopiering av tabellen",
"Binärloggen stängdes medan vi gjorde FLUSH MASTER", "Binärloggen stängdes medan FLUSH MASTER utfördes",
"Failed rebuilding the index of dumped table '%-.64s'", "Failed rebuilding the index of dumped table '%-.64s'",
"Fick en master: '%-.64s'", "Fick en master: '%-.64s'",
"Fick nätverksfel vid läsning från master", "Fick nätverksfel vid läsning från master",
"Fick nätverksfel vid skrivning till master", "Fick nätverksfel vid skrivning till master",
"Hittar inte ett FULLTEXT index i kolumnlistan", "Hittar inte ett FULLTEXT-index i kolumnlistan",
"Kan inte exekvera kommandot emedan du har en låst tabell eller an aktiv transaktion", "Kan inte utföra kommandot emedan du har en låst tabell eller an aktiv transaktion",
"Okänd system variabel '%-.64s'", "Okänd systemvariabel: '%-.64s'",
"Tabell '%-.64s' är crashad och bör repareras med REPAIR TABLE", "Tabell '%-.64s' är trasig och bör repareras med REPAIR TABLE",
"Tabell '%-.64s' är crashad och senast (automatiska?) reparation misslyckades", "Tabell '%-.64s' är trasig och senast (automatiska?) reparation misslyckades",
"Warning: Några icke transaktionella tabeller kunde inte återställas vid ROLLBACK", "Warning: Några icke transaktionella tabeller kunde inte återställas vid ROLLBACK",
"Transaktionen krävde mera än 'max_binlog_cache_size' minne. Utöka denna mysqld variabel och försök på nytt", "Transaktionen krävde mera än 'max_binlog_cache_size' minne. Öka denna mysqld-variabel och försök på nytt",
"Denna operation kan inte göras under replikering; Gör SLAVE STOP först", "Denna operation kan inte göras under replikering; Gör SLAVE STOP först",
"Denna operation kan endast göras under replikering; Konfigurera slaven och gör SLAVE START", "Denna operation kan endast göras under replikering; Konfigurera slaven och gör SLAVE START",
"Servern är inte konfigurerade som en replikations slav. Ändra konfigurationsfilen eller gör CHANGE MASTER TO", "Servern är inte konfigurerade som en replikationsslav. Ändra konfigurationsfilen eller gör CHANGE MASTER TO",
"Kunde inte initializera replications-strukturerna. Kontrollera privilegerna för 'master.info'", "Kunde inte initialisera replikationsstrukturerna. Kontrollera privilegerna för 'master.info'",
"Kunde inte starta en tråd för replikering", "Kunde inte starta en tråd för replikering",
"Användare '%-.64s' har redan 'max_user_connections' aktiva inloggningar", "Användare '%-.64s' har redan 'max_user_connections' aktiva inloggningar",
"Man kan endast använda konstant-uttryck med SET", "Man kan endast använda konstantuttryck med SET",
"Fick inte ett lås i tid ; Försök att starta om transaktionen", "Fick inte ett lås i tid ; Försök att starta om transaktionen",
"Antal lås överskrider antalet reserverade lås", "Antal lås överskrider antalet reserverade lås",
"Updaterings-lås kan inte göras när man använder READ UNCOMMITTED", "Updateringslås kan inte göras när man använder READ UNCOMMITTED",
"DROP DATABASE är inte tillåtet när man har ett globalt läs-lås", "DROP DATABASE är inte tillåtet när man har ett globalt läslås",
"CREATE DATABASE är inte tillåtet när man har ett globalt läs-lås", "CREATE DATABASE är inte tillåtet när man har ett globalt läslås",
"Felaktiga argument till %s", "Felaktiga argument till %s",
"%-.32s@%-.64s har inte rättighet att skapa nya användare", "%-.32s@%-.64s har inte rättighet att skapa nya användare",
"Felaktig tabell definition: Alla tabeller i en MERGE tabell måste vara i samma databas", "Felaktig tabelldefinition. Alla tabeller i en MERGE-tabell måste vara i samma databas",
"Fick 'DEADLOCK' vid låsförsök av block/rad; Försök att starta om transaktionen", "Fick 'DEADLOCK' vid låsförsök av block/rad. Försök att starta om transaktionen",
"Tabelltypen har inte hantering av FULLTEXT index", "Tabelltypen har inte hantering av FULLTEXT-index",
"Kan inte lägga till 'FOREIGN KEY constraint'", "Kan inte lägga till 'FOREIGN KEY constraint'",
"FOREIGN KEY konflikt: Kan inte skriva barn", "FOREIGN KEY-konflikt: Kan inte skriva barn",
"FOREIGN KEY konflikt: Kan inte radera fader", "FOREIGN KEY-konflikt: Kan inte radera fader",
"Fick fel vid anslutning till master: %-.128s", "Fick fel vid anslutning till master: %-.128s",
"Fick fel vid utförande av command på mastern: %-.128s", "Fick fel vid utförande av command på mastern: %-.128s",
"Fick fel vid utförande av %s: %-.128s", "Fick fel vid utförande av %s: %-.128s",
"Felaktig använding av %s and %s", "Felaktig använding av %s and %s",
"SELECT kommandona har olika antal kolumner" "SELECT-kommandona har olika antal kolumner"
"Kan inte utföra kommandot emedan du har ett READ lås", "Kan inte utföra kommandot emedan du har ett READ-lås",
"Blandning av transaktionella och icke-transaktionella tabeller är inaktiverat", "Blandning av transaktionella och icke-transaktionella tabeller är inaktiverat",
"Option '%s' användes två gånger", "Option '%s' användes två gånger",
"Användare '%-.64s' har överskridit '%s' (nuvarande värde: %ld)", "Användare '%-.64s' har överskridit '%s' (nuvarande värde: %ld)",
"Du har inte privlegiet '%-.128s' som behövs för denna operation", "Du har inte privlegiet '%-.128s' som behövs för denna operation",
"Variable '%-.64s' is a LOCAL variable and can't be used with SET GLOBAL", "Variabel '%-.64s' är en LOCAL variabel och kan inte ändrad med SET GLOBAL",
"Variable '%-.64s' is a GLOBAL variable and should be set with SET GLOBAL", "Variabel '%-.64s' är en GLOBAL variabel och bör sättas med SET GLOBAL",
"Variable '%-.64s' doesn't have a default value", "Variabel '%-.64s' har inte ett DEFAULT-värde",
"Variable '%-.64s' can't be set to the value of '%-.64s'", "Variabel '%-.64s' kan inte sättas till '%-.64s'",
"Wrong argument type to variable '%-.64s'", "Fel typ av argument till variabel '%-.64s'",
"Variable '%-.64s' can only be set, not read", "Variabeln '%-.64s' kan endast sättas, inte läsas",
"Wrong usage/placement of '%s'", "Fel använding/placering av '%s'",
"This version of MySQL doesn't yet support '%s'", "Denna version av MySQL kan ännu inte utföra '%s'",
"Got fatal error %d: '%-.128s' from master when reading data from binary log", "Fick fatalt fel %d: '%-.128s' från master vid läsning av binärloggen"
...@@ -499,7 +499,10 @@ check_connections(THD *thd) ...@@ -499,7 +499,10 @@ check_connections(THD *thd)
thd->host=ip_to_hostname(&thd->remote.sin_addr,&connect_errors); thd->host=ip_to_hostname(&thd->remote.sin_addr,&connect_errors);
/* Cut very long hostnames to avoid possible overflows */ /* Cut very long hostnames to avoid possible overflows */
if (thd->host) if (thd->host)
{
thd->host[min(strlen(thd->host), HOSTNAME_LENGTH)]= 0; thd->host[min(strlen(thd->host), HOSTNAME_LENGTH)]= 0;
thd->host_or_ip= thd->host;
}
if (connect_errors > max_connect_errors) if (connect_errors > max_connect_errors)
return(ER_HOST_IS_BLOCKED); return(ER_HOST_IS_BLOCKED);
} }
...@@ -2877,21 +2880,35 @@ bool add_field_to_list(char *field_name, enum_field_types type, ...@@ -2877,21 +2880,35 @@ bool add_field_to_list(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->net,ER_INVALID_DEFAULT,field_name); net_printf(&thd->net,ER_INVALID_DEFAULT,field_name);
DBUG_RETURN(1); DBUG_RETURN(1);
} }
default_value=0; }
#ifdef MYSQL41000
else if (type_modifier & AUTO_INCREMENT_FLAG)
{
net_printf(&thd->net, ER_INVALID_DEFAULT, field_name);
DBUG_RETURN(1);
}
#endif
} }
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;
#ifdef MYSQL41000
new_field->def= default_value;
#else
new_field->def= (type_modifier & AUTO_INCREMENT_FLAG ? 0 : default_value); new_field->def= (type_modifier & AUTO_INCREMENT_FLAG ? 0 : default_value);
#endif
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);
......
...@@ -2450,13 +2450,17 @@ procedure_item: ...@@ -2450,13 +2450,17 @@ procedure_item:
opt_into: opt_into:
INTO OUTFILE TEXT_STRING INTO OUTFILE TEXT_STRING
{ {
if (!(Lex->exchange= new sql_exchange($3.str,0))) THD *thd= current_thd;
thd->safe_to_cache_query= 0;
if (!(thd->lex.exchange= new sql_exchange($3.str,0)))
YYABORT; YYABORT;
} }
opt_field_term opt_line_term opt_field_term opt_line_term
| INTO DUMPFILE TEXT_STRING | INTO DUMPFILE TEXT_STRING
{ {
if (!(Lex->exchange= new sql_exchange($3.str,1))) THD *thd= current_thd;
thd->safe_to_cache_query= 0;
if (!(thd->lex.exchange= new sql_exchange($3.str,1)))
YYABORT; YYABORT;
}; };
......
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