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

Merge

parents b8bf46ca b17eea55
......@@ -28,3 +28,4 @@ serg@sergbook.mysql.com
sinisa@rhols221.adsl.netsonic.fi
zak@balfor.local
bar@bar.mysql.r18.ru
paul@teton.kitebird.com
......@@ -2,12 +2,12 @@
use Getopt::Long;
$opt_distribution=$opt_user=$opt_result=$opt_config_options=$opt_config_env="";
$opt_dbd_options=$opt_perl_options=$opt_suffix="";
$opt_dbd_options=$opt_perl_options=$opt_make_options=$opt_suffix="";
$opt_tmp=$opt_version_suffix="";
$opt_help=$opt_Information=$opt_delete=$opt_debug=$opt_stage=$opt_rsh_mail=$opt_no_test=$opt_no_perl=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_no_mysqltest=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=0;
$opt_innodb=$opt_bdb=0;
$opt_innodb=$opt_bdb=$opt_raid=$opt_libwrap=0;
GetOptions("Information","help","distribution=s","user=s","result=s","delete","no-test","no-mysqltest","perl-files=s","debug","config-options=s","config-env=s","stage=i","rsh-mail","with-low-memory","fast-benchmark","tmp=s","static-client","static-server","static-perl","no-perl","local-perl","perl-options=s","sur","with-small-disk","dbd-options=s","tcpip","suffix=s","build-thread=i","innodb","bdb","use-old-distribution","enable-shared","no-crash-me","no-strip","version-suffix=s", "with-other-libc=s") || usage();
GetOptions("Information","help","distribution=s","user=s","result=s","delete","no-test","no-mysqltest","perl-files=s","debug","config-options=s","config-env=s","stage=i","rsh-mail","with-low-memory","fast-benchmark","tmp=s","static-client","static-server","static-perl","no-perl","local-perl","perl-options=s","make-options=s","sur","with-small-disk","dbd-options=s","tcpip","suffix=s","build-thread=i","innodb","bdb","raid","libwrap","use-old-distribution","enable-shared","no-crash-me","no-strip","version-suffix=s", "with-other-libc=s") || usage();
usage() if ($opt_help || $opt_Information);
usage() if (!$opt_distribution);
......@@ -75,6 +75,19 @@ $ENV{"PERL5LIB"}="$pwd/$host/perl5:$pwd/$host/perl5/site_perl";
$slave_port=$mysql_tcp_port+16;
$manager_port=$mysql_tcp_port+1;
if ($opt_stage == 0)
{
system("mkdir Logs") if (! -d "Logs");
system("mv $log ${log}-old") if (-f $log);
unlink($log);
}
open(LOG,">>$log") || abort("Can't open log file, error $?");
select LOG;
$|=1;
select STDOUT;
$|=1;
if (-x "$host/bin/mysqladmin")
{
log_system("$host/bin/mysqladmin --no-defaults -u root -S $mysql_unix_port -s shutdown");
......@@ -97,25 +110,22 @@ if ($opt_stage == 0)
}
rm_all("$host/test");
system("mkdir $host/test") if (! -d "$host/test");
system("mkdir Logs") if (! -d "Logs");
system("mv $log ${log}-old") if (-f $log);
unlink($log);
}
open(LOG,">>$log") || abort("Can't open log file, error $?");
select LOG;
$|=1;
select STDOUT;
$|=1;
safe_cd($host);
if ($opt_stage == 0 && ! $opt_use_old_distribution)
{
safe_system("gunzip < $opt_distribution | $tar xf -");
# Fix file times; This is needed because the time for files may be
# in the future
system("touch timestamp; find . -newer timestamp -print | xargs touch; rm -f timestamp");
# in the future. The following is done this way to ensure that
# we don't get any errors from xargs touch
system("touch timestamp");
sleep(2);
system("touch timestamp2");
system("find . -newer timestamp -print | xargs touch");
unlink("timestamp");
unlink("timestamp2");
sleep(2);
# Ensure that files we don't want to rebuild are newer than other files
safe_cd($ver);
......@@ -149,7 +159,8 @@ if ($opt_stage <= 1)
}
if ($opt_with_other_libc)
{
$opt_with_other_libc = "--with-other-libc=$opt_with_other_libc";
$opt_with_other_libc= "--with-other-libc=$opt_with_other_libc";
$opt_config_options.= " $opt_with_other_libc";
}
if (!$opt_enable_shared)
{
......@@ -159,11 +170,19 @@ if ($opt_stage <= 1)
{
$opt_config_options.= " --with-berkeley-db"
}
if ($opt_raid)
{
$opt_config_options.= " --with-raid"
}
if ($opt_innodb)
{
$opt_config_options.= " --with-innodb"
}
check_system("$opt_config_env ./configure --prefix=/usr/local/mysql \"--with-comment=Official MySQL$opt_version_suffix binary\" --with-extra-charsets=complex \"--with-server-suffix=$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL");
if ($opt_libwrap)
{
$opt_config_options.= " --with-libwrap"
}
check_system("$opt_config_env ./configure --prefix=/usr/local/mysql --with-comment=\"Official MySQL$opt_version_suffix binary\" --with-extra-charsets=complex --with-server-suffix=\"$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL");
if (-d "$pwd/$host/include-mysql")
{
safe_system("cp -r $pwd/$host/include-mysql/* $pwd/$host/$ver/include");
......@@ -172,8 +191,11 @@ if ($opt_stage <= 1)
if ($opt_stage <= 2)
{
my ($command);
unlink($opt_distribution) if ($opt_delete && !$opt_use_old_distribution);
safe_system("$make");
$command=$make;
$command.= " $opt_make_options" if (defined($opt_make_options) && $opt_make_options ne "");
safe_system($command);
}
#
......@@ -368,6 +390,9 @@ To set up the environment, like 'CC=cc CXX=gcc CXXFLAGS=-O3'
--dbd-options 'options'
Options for Makefile.PL when configuring msql-mysql-modules.
--make-options 'options'
Options to make after configure. (Like 'CXXLD=gcc')
--version-suffix suffix
Can be used to set a suffix (normally 'com' or '-max') for a distribution
......@@ -547,13 +572,17 @@ sub rm_all
sub kill_all
{
my ($pattern) = @_;
my ($USER,$BSD,$LINUX,$pscmd, $user, $pid);
my ($USER,$BSD,$LINUX, $pscmd, $user, $pid);
$user=$ENV{'USER'};
$BSD = -f '/vmunix' || $ENV{"OS"} eq "SunOS4";
$BSD = -f '/vmunix' || $ENV{"OS"} eq "SunOS4" || $^O eq 'darwin';
$LINUX = $^O eq 'linux';
$pscmd = $BSD ? "/bin/ps -auxww" : $LINUX ? "/bin/ps axuw" : "/bin/ps -ef";
open(PS, "$pscmd|") || die "can't run $pscmd: $!";
if (!open(PS, "$pscmd|"))
{
print "Warning: Can't run $pscmd: $!\n";
exit;
}
# Catch any errors with eval. A bad pattern, for instance.
process:
......
......@@ -46929,11 +46929,14 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.53
@itemize @bullet
@item
Fixed a @code{BDB}-related @code{ALTER TABLE} bug with dropping a column
and shutting down immediately thereafter.
@item
Fixed problem with @code{configure ... --localstatedir=...}.
@item
Fixed problem with @code{UNSIGNED BIGINT} on AIX (again).
@item
Fixed bug in pthread_mutex_trylock() on HPUX 11.0
Fixed bug in pthread_mutex_trylock() on HPUX 11.0.
@item
Multithreaded stress tests for InnoDB.
@end itemize
......@@ -89,6 +89,8 @@ case "$target_os" in
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX -DUNIV_HPUX10";;
hp*)
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX";;
aix*)
CFLAGS="$CFLAGS -DUNIV_AIX";;
irix*)
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
osf*)
......
......@@ -11,6 +11,7 @@ Created 10/21/1995 Heikki Tuuri
#include "ut0mem.h"
#include "srv0srv.h"
#include "fil0fil.h"
#include "buf0buf.h"
#undef HAVE_FDATASYNC
......@@ -2108,6 +2109,7 @@ os_aio_simulated_handle(
ibool ret;
ulint n;
ulint i;
ulint len2;
segment = os_aio_get_array_and_local_segment(&array, global_segment);
......@@ -2263,6 +2265,29 @@ os_aio_simulated_handle(
/* Do the i/o with ordinary, synchronous i/o functions: */
if (slot->type == OS_FILE_WRITE) {
if (array == os_aio_write_array) {
/* Do a 'last millisecond' check that the page end
is sensible; reported page checksum errors from
Linux seem to wipe over the page end */
for (len2 = 0; len2 + UNIV_PAGE_SIZE <= total_len;
len2 += UNIV_PAGE_SIZE) {
if (mach_read_from_4(combined_buf + len2
+ FIL_PAGE_LSN + 4)
!= mach_read_from_4(combined_buf + len2
+ UNIV_PAGE_SIZE
- FIL_PAGE_END_LSN + 4)) {
ut_print_timestamp(stderr);
fprintf(stderr,
" InnoDB: ERROR: The page to be written seems corrupt!\n");
page_print(combined_buf + len2);
fprintf(stderr,
"InnoDB: ERROR: The page to be written seems corrupt!\n");
}
}
}
ret = os_file_write(slot->name, slot->file, combined_buf,
slot->offset, slot->offset_high, total_len);
} else {
......
......@@ -128,8 +128,28 @@ os_thread_create(
pthread_attr_init(&attr);
#ifdef UNIV_AIX
/* We must make sure a thread stack is at least 32 kB, otherwise
InnoDB might crash; we do not know if the default stack size on
AIX is always big enough. An empirical test on AIX-4.3 suggested
the size was 96 kB, though. */
ret = pthread_attr_setstacksize(&attr,
(size_t)(PTHREAD_STACK_MIN + 32 * 1024));
if (ret) {
fprintf(stderr,
"InnoDB: Error: pthread_attr_setstacksize returned %d\n", ret);
exit(1);
}
#endif
ret = pthread_create(&pthread, &attr, start_f, arg);
if (ret) {
fprintf(stderr,
"InnoDB: Error: pthread_create returned %d\n", ret);
exit(1);
}
pthread_attr_destroy(&attr);
if (srv_set_thread_priorities) {
......
......@@ -583,8 +583,33 @@ SQL parser lexical analyzer: input file for the GNU Flex lexer generator
Created 12/14/1997 Heikki Tuuri
Published under the GPL version 2
The InnoDB parser is frozen because MySQL takes care of SQL parsing.
Therefore we normally keep the InnoDB parser C files as they are, and do
not automatically generate them from pars0grm.y and pars0lex.l.
How to make the InnoDB parser and lexer C files:
1. First do
bison -d pars0grm.y
That generates pars0grm.tab.c and pars0grm.tab.h.
2. Rename pars0grm.tab.c to pars0grm.c and pars0grm.tab.h to pars0grm.h.
3. Copy pars0grm.h also to /innobase/include
4. Do
flex pars0lex.l
That generates lex.yy.c.
5. Rename lex.yy.c to lexyy.c.
6. Remove the #include of unistd.h from about line 2500 of lexyy.c
These instructions seem to work at least with bison-1.28 and flex-2.5.4 on
Linux.
*******************************************************/
#line 11 "pars0lex.l"
#line 36 "pars0lex.l"
#define YYSTYPE que_node_t*
#include "univ.i"
......@@ -603,7 +628,7 @@ Published under the GPL version 2
#define YY_INPUT(buf, result, max_size) pars_get_lex_chars(buf, &result, max_size)
#define comment 1
#line 607 "lex.yy.c"
#line 632 "lex.yy.c"
/* Macros after this point can all be overridden by user definitions in
* section 1.
......@@ -754,10 +779,10 @@ YY_DECL
register char *yy_cp, *yy_bp;
register int yy_act;
#line 32 "pars0lex.l"
#line 57 "pars0lex.l"
#line 761 "lex.yy.c"
#line 786 "lex.yy.c"
if ( yy_init )
{
......@@ -842,7 +867,7 @@ YY_DECL
case 1:
YY_RULE_SETUP
#line 34 "pars0lex.l"
#line 59 "pars0lex.l"
{
yylval = sym_tab_add_int_lit(pars_sym_tab_global,
atoi(yytext));
......@@ -851,7 +876,7 @@ YY_RULE_SETUP
YY_BREAK
case 2:
YY_RULE_SETUP
#line 40 "pars0lex.l"
#line 65 "pars0lex.l"
{
ut_error; /* not implemented */
......@@ -860,7 +885,7 @@ YY_RULE_SETUP
YY_BREAK
case 3:
YY_RULE_SETUP
#line 46 "pars0lex.l"
#line 71 "pars0lex.l"
{
/* Remove the single quotes around the string */
......@@ -872,7 +897,7 @@ YY_RULE_SETUP
YY_BREAK
case 4:
YY_RULE_SETUP
#line 55 "pars0lex.l"
#line 80 "pars0lex.l"
{
yylval = sym_tab_add_null_lit(pars_sym_tab_global);
......@@ -881,7 +906,7 @@ YY_RULE_SETUP
YY_BREAK
case 5:
YY_RULE_SETUP
#line 61 "pars0lex.l"
#line 86 "pars0lex.l"
{
/* Implicit cursor name */
yylval = sym_tab_add_str_lit(pars_sym_tab_global,
......@@ -891,511 +916,511 @@ YY_RULE_SETUP
YY_BREAK
case 6:
YY_RULE_SETUP
#line 68 "pars0lex.l"
#line 93 "pars0lex.l"
{
return(PARS_AND_TOKEN);
}
YY_BREAK
case 7:
YY_RULE_SETUP
#line 72 "pars0lex.l"
#line 97 "pars0lex.l"
{
return(PARS_OR_TOKEN);
}
YY_BREAK
case 8:
YY_RULE_SETUP
#line 76 "pars0lex.l"
#line 101 "pars0lex.l"
{
return(PARS_NOT_TOKEN);
}
YY_BREAK
case 9:
YY_RULE_SETUP
#line 80 "pars0lex.l"
#line 105 "pars0lex.l"
{
return(PARS_PROCEDURE_TOKEN);
}
YY_BREAK
case 10:
YY_RULE_SETUP
#line 84 "pars0lex.l"
#line 109 "pars0lex.l"
{
return(PARS_IN_TOKEN);
}
YY_BREAK
case 11:
YY_RULE_SETUP
#line 88 "pars0lex.l"
#line 113 "pars0lex.l"
{
return(PARS_OUT_TOKEN);
}
YY_BREAK
case 12:
YY_RULE_SETUP
#line 92 "pars0lex.l"
#line 117 "pars0lex.l"
{
return(PARS_INT_TOKEN);
}
YY_BREAK
case 13:
YY_RULE_SETUP
#line 96 "pars0lex.l"
#line 121 "pars0lex.l"
{
return(PARS_INT_TOKEN);
}
YY_BREAK
case 14:
YY_RULE_SETUP
#line 100 "pars0lex.l"
#line 125 "pars0lex.l"
{
return(PARS_FLOAT_TOKEN);
}
YY_BREAK
case 15:
YY_RULE_SETUP
#line 104 "pars0lex.l"
#line 129 "pars0lex.l"
{
return(PARS_CHAR_TOKEN);
}
YY_BREAK
case 16:
YY_RULE_SETUP
#line 108 "pars0lex.l"
#line 133 "pars0lex.l"
{
return(PARS_IS_TOKEN);
}
YY_BREAK
case 17:
YY_RULE_SETUP
#line 112 "pars0lex.l"
#line 137 "pars0lex.l"
{
return(PARS_BEGIN_TOKEN);
}
YY_BREAK
case 18:
YY_RULE_SETUP
#line 116 "pars0lex.l"
#line 141 "pars0lex.l"
{
return(PARS_END_TOKEN);
}
YY_BREAK
case 19:
YY_RULE_SETUP
#line 120 "pars0lex.l"
#line 145 "pars0lex.l"
{
return(PARS_IF_TOKEN);
}
YY_BREAK
case 20:
YY_RULE_SETUP
#line 124 "pars0lex.l"
#line 149 "pars0lex.l"
{
return(PARS_THEN_TOKEN);
}
YY_BREAK
case 21:
YY_RULE_SETUP
#line 128 "pars0lex.l"
#line 153 "pars0lex.l"
{
return(PARS_ELSE_TOKEN);
}
YY_BREAK
case 22:
YY_RULE_SETUP
#line 132 "pars0lex.l"
#line 157 "pars0lex.l"
{
return(PARS_ELSIF_TOKEN);
}
YY_BREAK
case 23:
YY_RULE_SETUP
#line 136 "pars0lex.l"
#line 161 "pars0lex.l"
{
return(PARS_LOOP_TOKEN);
}
YY_BREAK
case 24:
YY_RULE_SETUP
#line 140 "pars0lex.l"
#line 165 "pars0lex.l"
{
return(PARS_WHILE_TOKEN);
}
YY_BREAK
case 25:
YY_RULE_SETUP
#line 144 "pars0lex.l"
#line 169 "pars0lex.l"
{
return(PARS_RETURN_TOKEN);
}
YY_BREAK
case 26:
YY_RULE_SETUP
#line 148 "pars0lex.l"
#line 173 "pars0lex.l"
{
return(PARS_SELECT_TOKEN);
}
YY_BREAK
case 27:
YY_RULE_SETUP
#line 152 "pars0lex.l"
#line 177 "pars0lex.l"
{
return(PARS_SUM_TOKEN);
}
YY_BREAK
case 28:
YY_RULE_SETUP
#line 156 "pars0lex.l"
#line 181 "pars0lex.l"
{
return(PARS_COUNT_TOKEN);
}
YY_BREAK
case 29:
YY_RULE_SETUP
#line 160 "pars0lex.l"
#line 185 "pars0lex.l"
{
return(PARS_DISTINCT_TOKEN);
}
YY_BREAK
case 30:
YY_RULE_SETUP
#line 164 "pars0lex.l"
#line 189 "pars0lex.l"
{
return(PARS_FROM_TOKEN);
}
YY_BREAK
case 31:
YY_RULE_SETUP
#line 168 "pars0lex.l"
#line 193 "pars0lex.l"
{
return(PARS_WHERE_TOKEN);
}
YY_BREAK
case 32:
YY_RULE_SETUP
#line 172 "pars0lex.l"
#line 197 "pars0lex.l"
{
return(PARS_FOR_TOKEN);
}
YY_BREAK
case 33:
YY_RULE_SETUP
#line 176 "pars0lex.l"
#line 201 "pars0lex.l"
{
return(PARS_CONSISTENT_TOKEN);
}
YY_BREAK
case 34:
YY_RULE_SETUP
#line 180 "pars0lex.l"
#line 205 "pars0lex.l"
{
return(PARS_READ_TOKEN);
}
YY_BREAK
case 35:
YY_RULE_SETUP
#line 184 "pars0lex.l"
#line 209 "pars0lex.l"
{
return(PARS_ORDER_TOKEN);
}
YY_BREAK
case 36:
YY_RULE_SETUP
#line 188 "pars0lex.l"
#line 213 "pars0lex.l"
{
return(PARS_BY_TOKEN);
}
YY_BREAK
case 37:
YY_RULE_SETUP
#line 192 "pars0lex.l"
#line 217 "pars0lex.l"
{
return(PARS_ASC_TOKEN);
}
YY_BREAK
case 38:
YY_RULE_SETUP
#line 196 "pars0lex.l"
#line 221 "pars0lex.l"
{
return(PARS_DESC_TOKEN);
}
YY_BREAK
case 39:
YY_RULE_SETUP
#line 200 "pars0lex.l"
#line 225 "pars0lex.l"
{
return(PARS_INSERT_TOKEN);
}
YY_BREAK
case 40:
YY_RULE_SETUP
#line 204 "pars0lex.l"
#line 229 "pars0lex.l"
{
return(PARS_INTO_TOKEN);
}
YY_BREAK
case 41:
YY_RULE_SETUP
#line 208 "pars0lex.l"
#line 233 "pars0lex.l"
{
return(PARS_VALUES_TOKEN);
}
YY_BREAK
case 42:
YY_RULE_SETUP
#line 212 "pars0lex.l"
#line 237 "pars0lex.l"
{
return(PARS_UPDATE_TOKEN);
}
YY_BREAK
case 43:
YY_RULE_SETUP
#line 216 "pars0lex.l"
#line 241 "pars0lex.l"
{
return(PARS_SET_TOKEN);
}
YY_BREAK
case 44:
YY_RULE_SETUP
#line 220 "pars0lex.l"
#line 245 "pars0lex.l"
{
return(PARS_DELETE_TOKEN);
}
YY_BREAK
case 45:
YY_RULE_SETUP
#line 224 "pars0lex.l"
#line 249 "pars0lex.l"
{
return(PARS_CURRENT_TOKEN);
}
YY_BREAK
case 46:
YY_RULE_SETUP
#line 228 "pars0lex.l"
#line 253 "pars0lex.l"
{
return(PARS_OF_TOKEN);
}
YY_BREAK
case 47:
YY_RULE_SETUP
#line 232 "pars0lex.l"
#line 257 "pars0lex.l"
{
return(PARS_CREATE_TOKEN);
}
YY_BREAK
case 48:
YY_RULE_SETUP
#line 236 "pars0lex.l"
#line 261 "pars0lex.l"
{
return(PARS_TABLE_TOKEN);
}
YY_BREAK
case 49:
YY_RULE_SETUP
#line 240 "pars0lex.l"
#line 265 "pars0lex.l"
{
return(PARS_INDEX_TOKEN);
}
YY_BREAK
case 50:
YY_RULE_SETUP
#line 244 "pars0lex.l"
#line 269 "pars0lex.l"
{
return(PARS_UNIQUE_TOKEN);
}
YY_BREAK
case 51:
YY_RULE_SETUP
#line 248 "pars0lex.l"
#line 273 "pars0lex.l"
{
return(PARS_CLUSTERED_TOKEN);
}
YY_BREAK
case 52:
YY_RULE_SETUP
#line 252 "pars0lex.l"
#line 277 "pars0lex.l"
{
return(PARS_DOES_NOT_FIT_IN_MEM_TOKEN);
}
YY_BREAK
case 53:
YY_RULE_SETUP
#line 256 "pars0lex.l"
#line 281 "pars0lex.l"
{
return(PARS_ON_TOKEN);
}
YY_BREAK
case 54:
YY_RULE_SETUP
#line 260 "pars0lex.l"
#line 285 "pars0lex.l"
{
return(PARS_DECLARE_TOKEN);
}
YY_BREAK
case 55:
YY_RULE_SETUP
#line 264 "pars0lex.l"
#line 289 "pars0lex.l"
{
return(PARS_CURSOR_TOKEN);
}
YY_BREAK
case 56:
YY_RULE_SETUP
#line 268 "pars0lex.l"
#line 293 "pars0lex.l"
{
return(PARS_OPEN_TOKEN);
}
YY_BREAK
case 57:
YY_RULE_SETUP
#line 272 "pars0lex.l"
#line 297 "pars0lex.l"
{
return(PARS_FETCH_TOKEN);
}
YY_BREAK
case 58:
YY_RULE_SETUP
#line 276 "pars0lex.l"
#line 301 "pars0lex.l"
{
return(PARS_CLOSE_TOKEN);
}
YY_BREAK
case 59:
YY_RULE_SETUP
#line 280 "pars0lex.l"
#line 305 "pars0lex.l"
{
return(PARS_NOTFOUND_TOKEN);
}
YY_BREAK
case 60:
YY_RULE_SETUP
#line 284 "pars0lex.l"
#line 309 "pars0lex.l"
{
return(PARS_TO_CHAR_TOKEN);
}
YY_BREAK
case 61:
YY_RULE_SETUP
#line 288 "pars0lex.l"
#line 313 "pars0lex.l"
{
return(PARS_TO_NUMBER_TOKEN);
}
YY_BREAK
case 62:
YY_RULE_SETUP
#line 292 "pars0lex.l"
#line 317 "pars0lex.l"
{
return(PARS_TO_BINARY_TOKEN);
}
YY_BREAK
case 63:
YY_RULE_SETUP
#line 296 "pars0lex.l"
#line 321 "pars0lex.l"
{
return(PARS_BINARY_TO_NUMBER_TOKEN);
}
YY_BREAK
case 64:
YY_RULE_SETUP
#line 300 "pars0lex.l"
#line 325 "pars0lex.l"
{
return(PARS_SUBSTR_TOKEN);
}
YY_BREAK
case 65:
YY_RULE_SETUP
#line 304 "pars0lex.l"
#line 329 "pars0lex.l"
{
return(PARS_REPLSTR_TOKEN);
}
YY_BREAK
case 66:
YY_RULE_SETUP
#line 308 "pars0lex.l"
#line 333 "pars0lex.l"
{
return(PARS_CONCAT_TOKEN);
}
YY_BREAK
case 67:
YY_RULE_SETUP
#line 312 "pars0lex.l"
#line 337 "pars0lex.l"
{
return(PARS_INSTR_TOKEN);
}
YY_BREAK
case 68:
YY_RULE_SETUP
#line 316 "pars0lex.l"
#line 341 "pars0lex.l"
{
return(PARS_LENGTH_TOKEN);
}
YY_BREAK
case 69:
YY_RULE_SETUP
#line 320 "pars0lex.l"
#line 345 "pars0lex.l"
{
return(PARS_SYSDATE_TOKEN);
}
YY_BREAK
case 70:
YY_RULE_SETUP
#line 324 "pars0lex.l"
#line 349 "pars0lex.l"
{
return(PARS_PRINTF_TOKEN);
}
YY_BREAK
case 71:
YY_RULE_SETUP
#line 328 "pars0lex.l"
#line 353 "pars0lex.l"
{
return(PARS_ASSERT_TOKEN);
}
YY_BREAK
case 72:
YY_RULE_SETUP
#line 332 "pars0lex.l"
#line 357 "pars0lex.l"
{
return(PARS_RND_TOKEN);
}
YY_BREAK
case 73:
YY_RULE_SETUP
#line 336 "pars0lex.l"
#line 361 "pars0lex.l"
{
return(PARS_RND_STR_TOKEN);
}
YY_BREAK
case 74:
YY_RULE_SETUP
#line 340 "pars0lex.l"
#line 365 "pars0lex.l"
{
return(PARS_ROW_PRINTF_TOKEN);
}
YY_BREAK
case 75:
YY_RULE_SETUP
#line 344 "pars0lex.l"
#line 369 "pars0lex.l"
{
return(PARS_COMMIT_TOKEN);
}
YY_BREAK
case 76:
YY_RULE_SETUP
#line 348 "pars0lex.l"
#line 373 "pars0lex.l"
{
return(PARS_ROLLBACK_TOKEN);
}
YY_BREAK
case 77:
YY_RULE_SETUP
#line 352 "pars0lex.l"
#line 377 "pars0lex.l"
{
return(PARS_WORK_TOKEN);
}
YY_BREAK
case 78:
YY_RULE_SETUP
#line 356 "pars0lex.l"
#line 381 "pars0lex.l"
{
yylval = sym_tab_add_id(pars_sym_tab_global,
(byte*)yytext,
......@@ -1405,42 +1430,42 @@ YY_RULE_SETUP
YY_BREAK
case 79:
YY_RULE_SETUP
#line 363 "pars0lex.l"
#line 388 "pars0lex.l"
{
return(PARS_DDOT_TOKEN);
}
YY_BREAK
case 80:
YY_RULE_SETUP
#line 367 "pars0lex.l"
#line 392 "pars0lex.l"
{
return(PARS_ASSIGN_TOKEN);
}
YY_BREAK
case 81:
YY_RULE_SETUP
#line 371 "pars0lex.l"
#line 396 "pars0lex.l"
{
return(PARS_LE_TOKEN);
}
YY_BREAK
case 82:
YY_RULE_SETUP
#line 375 "pars0lex.l"
#line 400 "pars0lex.l"
{
return(PARS_GE_TOKEN);
}
YY_BREAK
case 83:
YY_RULE_SETUP
#line 379 "pars0lex.l"
#line 404 "pars0lex.l"
{
return(PARS_NE_TOKEN);
}
YY_BREAK
case 84:
YY_RULE_SETUP
#line 383 "pars0lex.l"
#line 408 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1448,7 +1473,7 @@ YY_RULE_SETUP
YY_BREAK
case 85:
YY_RULE_SETUP
#line 388 "pars0lex.l"
#line 413 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1456,7 +1481,7 @@ YY_RULE_SETUP
YY_BREAK
case 86:
YY_RULE_SETUP
#line 393 "pars0lex.l"
#line 418 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1464,7 +1489,7 @@ YY_RULE_SETUP
YY_BREAK
case 87:
YY_RULE_SETUP
#line 398 "pars0lex.l"
#line 423 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1472,7 +1497,7 @@ YY_RULE_SETUP
YY_BREAK
case 88:
YY_RULE_SETUP
#line 403 "pars0lex.l"
#line 428 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1480,7 +1505,7 @@ YY_RULE_SETUP
YY_BREAK
case 89:
YY_RULE_SETUP
#line 408 "pars0lex.l"
#line 433 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1488,7 +1513,7 @@ YY_RULE_SETUP
YY_BREAK
case 90:
YY_RULE_SETUP
#line 413 "pars0lex.l"
#line 438 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1496,7 +1521,7 @@ YY_RULE_SETUP
YY_BREAK
case 91:
YY_RULE_SETUP
#line 418 "pars0lex.l"
#line 443 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1504,7 +1529,7 @@ YY_RULE_SETUP
YY_BREAK
case 92:
YY_RULE_SETUP
#line 423 "pars0lex.l"
#line 448 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1512,7 +1537,7 @@ YY_RULE_SETUP
YY_BREAK
case 93:
YY_RULE_SETUP
#line 428 "pars0lex.l"
#line 453 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1520,7 +1545,7 @@ YY_RULE_SETUP
YY_BREAK
case 94:
YY_RULE_SETUP
#line 433 "pars0lex.l"
#line 458 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1528,7 +1553,7 @@ YY_RULE_SETUP
YY_BREAK
case 95:
YY_RULE_SETUP
#line 438 "pars0lex.l"
#line 463 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1536,7 +1561,7 @@ YY_RULE_SETUP
YY_BREAK
case 96:
YY_RULE_SETUP
#line 443 "pars0lex.l"
#line 468 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1544,7 +1569,7 @@ YY_RULE_SETUP
YY_BREAK
case 97:
YY_RULE_SETUP
#line 448 "pars0lex.l"
#line 473 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1552,7 +1577,7 @@ YY_RULE_SETUP
YY_BREAK
case 98:
YY_RULE_SETUP
#line 453 "pars0lex.l"
#line 478 "pars0lex.l"
{
return((int)(*yytext));
......@@ -1560,42 +1585,42 @@ YY_RULE_SETUP
YY_BREAK
case 99:
YY_RULE_SETUP
#line 458 "pars0lex.l"
#line 483 "pars0lex.l"
BEGIN(comment); /* eat up comment */
YY_BREAK
case 100:
YY_RULE_SETUP
#line 460 "pars0lex.l"
#line 485 "pars0lex.l"
YY_BREAK
case 101:
YY_RULE_SETUP
#line 461 "pars0lex.l"
#line 486 "pars0lex.l"
YY_BREAK
case 102:
YY_RULE_SETUP
#line 462 "pars0lex.l"
#line 487 "pars0lex.l"
YY_BREAK
case 103:
YY_RULE_SETUP
#line 463 "pars0lex.l"
#line 488 "pars0lex.l"
YY_BREAK
case 104:
YY_RULE_SETUP
#line 464 "pars0lex.l"
#line 489 "pars0lex.l"
BEGIN(INITIAL);
YY_BREAK
case 105:
YY_RULE_SETUP
#line 466 "pars0lex.l"
#line 491 "pars0lex.l"
/* eat up whitespace */
YY_BREAK
case 106:
YY_RULE_SETUP
#line 469 "pars0lex.l"
#line 494 "pars0lex.l"
{
printf("Unrecognized character: %s\n", yytext);
......@@ -1606,10 +1631,10 @@ YY_RULE_SETUP
YY_BREAK
case 107:
YY_RULE_SETUP
#line 477 "pars0lex.l"
#line 502 "pars0lex.l"
ECHO;
YY_BREAK
#line 1613 "lex.yy.c"
#line 1638 "lex.yy.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(comment):
yyterminate();
......@@ -2176,7 +2201,7 @@ YY_BUFFER_STATE b;
#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
#include<unistd.h>
#endif
#endif
......@@ -2496,5 +2521,5 @@ int main()
return 0;
}
#endif
#line 477 "pars0lex.l"
#line 502 "pars0lex.l"
......@@ -89,12 +89,10 @@
#define PARS_WORK_TOKEN 339
#define NEG 340
#line 10 "pars0grm.y"
#line 13 "pars0grm.y"
/* The value of the semantic attribute is a pointer to a query tree node
que_node_t */
#define YYSTYPE que_node_t*
#define alloca mem_alloc
#include <math.h>
......@@ -105,6 +103,8 @@ que_node_t */
#include "que0que.h"
#include "row0sel.h"
#define YYSTYPE que_node_t*
/* #define __STDC__ */
int
......@@ -242,22 +242,22 @@ static const short yyrhs[] = { 162,
#if YYDEBUG != 0
static const short yyrline[] = { 0,
126, 128, 129, 130, 131, 132, 133, 134, 135, 136,
137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
147, 148, 151, 153, 157, 159, 161, 162, 163, 164,
165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
175, 176, 177, 178, 179, 180, 181, 183, 187, 189,
190, 191, 193, 194, 195, 196, 197, 198, 199, 202,
204, 205, 208, 213, 218, 220, 221, 224, 226, 230,
232, 233, 237, 239, 240, 243, 245, 250, 256, 262,
264, 265, 269, 272, 274, 277, 279, 282, 284, 288,
290, 294, 296, 297, 300, 302, 306, 316, 321, 324,
328, 332, 334, 338, 344, 351, 356, 361, 367, 372,
377, 382, 387, 393, 395, 399, 401, 403, 406, 413,
419, 427, 431, 437, 443, 448, 452, 454, 458, 460,
465, 471, 473, 477, 479, 482, 484, 487, 495, 500,
505, 507, 510, 514, 519, 521, 522, 526, 531, 533,
534, 537, 543, 545, 546, 549
129, 131, 132, 133, 134, 135, 136, 137, 138, 139,
140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
150, 151, 154, 156, 160, 162, 164, 165, 166, 167,
168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
178, 179, 180, 181, 182, 183, 184, 186, 190, 192,
193, 194, 196, 197, 198, 199, 200, 201, 202, 205,
207, 208, 211, 216, 221, 223, 224, 227, 229, 233,
235, 236, 240, 242, 243, 246, 248, 253, 259, 265,
267, 268, 272, 275, 277, 280, 282, 285, 287, 291,
293, 297, 299, 300, 303, 305, 309, 319, 324, 327,
331, 335, 337, 341, 347, 354, 359, 364, 370, 375,
380, 385, 390, 396, 398, 402, 404, 406, 409, 416,
422, 430, 434, 440, 446, 451, 455, 457, 461, 463,
468, 474, 476, 480, 482, 485, 487, 490, 498, 503,
508, 510, 513, 517, 522, 524, 525, 529, 534, 536,
537, 540, 546, 548, 549, 552
};
#endif
......@@ -1122,218 +1122,218 @@ yyparse(YYPARSE_PARAM_ARG)
switch (yyn) {
case 23:
#line 152 "pars0grm.y"
#line 155 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 24:
#line 154 "pars0grm.y"
#line 157 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-1], yyvsp[0]); ;
break;}
case 25:
#line 158 "pars0grm.y"
#line 161 "pars0grm.y"
{ yyval = yyvsp[0];;
break;}
case 26:
#line 160 "pars0grm.y"
#line 163 "pars0grm.y"
{ yyval = pars_func(yyvsp[-3], yyvsp[-1]); ;
break;}
case 27:
#line 161 "pars0grm.y"
#line 164 "pars0grm.y"
{ yyval = yyvsp[0];;
break;}
case 28:
#line 162 "pars0grm.y"
#line 165 "pars0grm.y"
{ yyval = yyvsp[0];;
break;}
case 29:
#line 163 "pars0grm.y"
#line 166 "pars0grm.y"
{ yyval = yyvsp[0];;
break;}
case 30:
#line 164 "pars0grm.y"
#line 167 "pars0grm.y"
{ yyval = yyvsp[0];;
break;}
case 31:
#line 165 "pars0grm.y"
#line 168 "pars0grm.y"
{ yyval = yyvsp[0];;
break;}
case 32:
#line 166 "pars0grm.y"
#line 169 "pars0grm.y"
{ yyval = pars_op('+', yyvsp[-2], yyvsp[0]); ;
break;}
case 33:
#line 167 "pars0grm.y"
#line 170 "pars0grm.y"
{ yyval = pars_op('-', yyvsp[-2], yyvsp[0]); ;
break;}
case 34:
#line 168 "pars0grm.y"
#line 171 "pars0grm.y"
{ yyval = pars_op('*', yyvsp[-2], yyvsp[0]); ;
break;}
case 35:
#line 169 "pars0grm.y"
#line 172 "pars0grm.y"
{ yyval = pars_op('/', yyvsp[-2], yyvsp[0]); ;
break;}
case 36:
#line 170 "pars0grm.y"
#line 173 "pars0grm.y"
{ yyval = pars_op('-', yyvsp[0], NULL); ;
break;}
case 37:
#line 171 "pars0grm.y"
#line 174 "pars0grm.y"
{ yyval = yyvsp[-1]; ;
break;}
case 38:
#line 172 "pars0grm.y"
#line 175 "pars0grm.y"
{ yyval = pars_op('=', yyvsp[-2], yyvsp[0]); ;
break;}
case 39:
#line 173 "pars0grm.y"
#line 176 "pars0grm.y"
{ yyval = pars_op('<', yyvsp[-2], yyvsp[0]); ;
break;}
case 40:
#line 174 "pars0grm.y"
#line 177 "pars0grm.y"
{ yyval = pars_op('>', yyvsp[-2], yyvsp[0]); ;
break;}
case 41:
#line 175 "pars0grm.y"
#line 178 "pars0grm.y"
{ yyval = pars_op(PARS_GE_TOKEN, yyvsp[-2], yyvsp[0]); ;
break;}
case 42:
#line 176 "pars0grm.y"
#line 179 "pars0grm.y"
{ yyval = pars_op(PARS_LE_TOKEN, yyvsp[-2], yyvsp[0]); ;
break;}
case 43:
#line 177 "pars0grm.y"
#line 180 "pars0grm.y"
{ yyval = pars_op(PARS_NE_TOKEN, yyvsp[-2], yyvsp[0]); ;
break;}
case 44:
#line 178 "pars0grm.y"
#line 181 "pars0grm.y"
{ yyval = pars_op(PARS_AND_TOKEN, yyvsp[-2], yyvsp[0]); ;
break;}
case 45:
#line 179 "pars0grm.y"
#line 182 "pars0grm.y"
{ yyval = pars_op(PARS_OR_TOKEN, yyvsp[-2], yyvsp[0]); ;
break;}
case 46:
#line 180 "pars0grm.y"
#line 183 "pars0grm.y"
{ yyval = pars_op(PARS_NOT_TOKEN, yyvsp[0], NULL); ;
break;}
case 47:
#line 182 "pars0grm.y"
#line 185 "pars0grm.y"
{ yyval = pars_op(PARS_NOTFOUND_TOKEN, yyvsp[-2], NULL); ;
break;}
case 48:
#line 184 "pars0grm.y"
#line 187 "pars0grm.y"
{ yyval = pars_op(PARS_NOTFOUND_TOKEN, yyvsp[-2], NULL); ;
break;}
case 49:
#line 188 "pars0grm.y"
#line 191 "pars0grm.y"
{ yyval = &pars_to_char_token; ;
break;}
case 50:
#line 189 "pars0grm.y"
#line 192 "pars0grm.y"
{ yyval = &pars_to_number_token; ;
break;}
case 51:
#line 190 "pars0grm.y"
#line 193 "pars0grm.y"
{ yyval = &pars_to_binary_token; ;
break;}
case 52:
#line 192 "pars0grm.y"
#line 195 "pars0grm.y"
{ yyval = &pars_binary_to_number_token; ;
break;}
case 53:
#line 193 "pars0grm.y"
#line 196 "pars0grm.y"
{ yyval = &pars_substr_token; ;
break;}
case 54:
#line 194 "pars0grm.y"
#line 197 "pars0grm.y"
{ yyval = &pars_concat_token; ;
break;}
case 55:
#line 195 "pars0grm.y"
#line 198 "pars0grm.y"
{ yyval = &pars_instr_token; ;
break;}
case 56:
#line 196 "pars0grm.y"
#line 199 "pars0grm.y"
{ yyval = &pars_length_token; ;
break;}
case 57:
#line 197 "pars0grm.y"
#line 200 "pars0grm.y"
{ yyval = &pars_sysdate_token; ;
break;}
case 58:
#line 198 "pars0grm.y"
#line 201 "pars0grm.y"
{ yyval = &pars_rnd_token; ;
break;}
case 59:
#line 199 "pars0grm.y"
#line 202 "pars0grm.y"
{ yyval = &pars_rnd_str_token; ;
break;}
case 63:
#line 210 "pars0grm.y"
#line 213 "pars0grm.y"
{ yyval = pars_stored_procedure_call(yyvsp[-4]); ;
break;}
case 64:
#line 215 "pars0grm.y"
#line 218 "pars0grm.y"
{ yyval = pars_procedure_call(yyvsp[-3], yyvsp[-1]); ;
break;}
case 65:
#line 219 "pars0grm.y"
#line 222 "pars0grm.y"
{ yyval = &pars_replstr_token; ;
break;}
case 66:
#line 220 "pars0grm.y"
#line 223 "pars0grm.y"
{ yyval = &pars_printf_token; ;
break;}
case 67:
#line 221 "pars0grm.y"
#line 224 "pars0grm.y"
{ yyval = &pars_assert_token; ;
break;}
case 68:
#line 225 "pars0grm.y"
#line 228 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 69:
#line 227 "pars0grm.y"
#line 230 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-2], yyvsp[0]); ;
break;}
case 70:
#line 231 "pars0grm.y"
#line 234 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 71:
#line 232 "pars0grm.y"
#line 235 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 72:
#line 234 "pars0grm.y"
#line 237 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-2], yyvsp[0]); ;
break;}
case 73:
#line 238 "pars0grm.y"
#line 241 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 74:
#line 239 "pars0grm.y"
#line 242 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]);;
break;}
case 75:
#line 240 "pars0grm.y"
#line 243 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-2], yyvsp[0]); ;
break;}
case 76:
#line 244 "pars0grm.y"
#line 247 "pars0grm.y"
{ yyval = yyvsp[0]; ;
break;}
case 77:
#line 246 "pars0grm.y"
#line 249 "pars0grm.y"
{ yyval = pars_func(&pars_count_token,
que_node_list_add_last(NULL,
sym_tab_add_int_lit(
pars_sym_tab_global, 1))); ;
break;}
case 78:
#line 251 "pars0grm.y"
#line 254 "pars0grm.y"
{ yyval = pars_func(&pars_count_token,
que_node_list_add_last(NULL,
pars_func(&pars_distinct_token,
......@@ -1341,302 +1341,302 @@ case 78:
NULL, yyvsp[-1])))); ;
break;}
case 79:
#line 257 "pars0grm.y"
#line 260 "pars0grm.y"
{ yyval = pars_func(&pars_sum_token,
que_node_list_add_last(NULL,
yyvsp[-1])); ;
break;}
case 80:
#line 263 "pars0grm.y"
#line 266 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 81:
#line 264 "pars0grm.y"
#line 267 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 82:
#line 266 "pars0grm.y"
#line 269 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-2], yyvsp[0]); ;
break;}
case 83:
#line 270 "pars0grm.y"
#line 273 "pars0grm.y"
{ yyval = pars_select_list(&pars_star_denoter,
NULL); ;
break;}
case 84:
#line 273 "pars0grm.y"
#line 276 "pars0grm.y"
{ yyval = pars_select_list(yyvsp[-2], yyvsp[0]); ;
break;}
case 85:
#line 274 "pars0grm.y"
#line 277 "pars0grm.y"
{ yyval = pars_select_list(yyvsp[0], NULL); ;
break;}
case 86:
#line 278 "pars0grm.y"
#line 281 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 87:
#line 279 "pars0grm.y"
#line 282 "pars0grm.y"
{ yyval = yyvsp[0]; ;
break;}
case 88:
#line 283 "pars0grm.y"
#line 286 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 89:
#line 285 "pars0grm.y"
#line 288 "pars0grm.y"
{ yyval = &pars_update_token; ;
break;}
case 90:
#line 289 "pars0grm.y"
#line 292 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 91:
#line 291 "pars0grm.y"
#line 294 "pars0grm.y"
{ yyval = &pars_consistent_token; ;
break;}
case 92:
#line 295 "pars0grm.y"
#line 298 "pars0grm.y"
{ yyval = &pars_asc_token; ;
break;}
case 93:
#line 296 "pars0grm.y"
#line 299 "pars0grm.y"
{ yyval = &pars_asc_token; ;
break;}
case 94:
#line 297 "pars0grm.y"
#line 300 "pars0grm.y"
{ yyval = &pars_desc_token; ;
break;}
case 95:
#line 301 "pars0grm.y"
#line 304 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 96:
#line 303 "pars0grm.y"
#line 306 "pars0grm.y"
{ yyval = pars_order_by(yyvsp[-1], yyvsp[0]); ;
break;}
case 97:
#line 312 "pars0grm.y"
#line 315 "pars0grm.y"
{ yyval = pars_select_statement(yyvsp[-6], yyvsp[-4], yyvsp[-3],
yyvsp[-2], yyvsp[-1], yyvsp[0]); ;
break;}
case 98:
#line 318 "pars0grm.y"
#line 321 "pars0grm.y"
{ yyval = yyvsp[0]; ;
break;}
case 99:
#line 323 "pars0grm.y"
#line 326 "pars0grm.y"
{ yyval = pars_insert_statement(yyvsp[-4], yyvsp[-1], NULL); ;
break;}
case 100:
#line 325 "pars0grm.y"
#line 328 "pars0grm.y"
{ yyval = pars_insert_statement(yyvsp[-1], NULL, yyvsp[0]); ;
break;}
case 101:
#line 329 "pars0grm.y"
#line 332 "pars0grm.y"
{ yyval = pars_column_assignment(yyvsp[-2], yyvsp[0]); ;
break;}
case 102:
#line 333 "pars0grm.y"
#line 336 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 103:
#line 335 "pars0grm.y"
#line 338 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-2], yyvsp[0]); ;
break;}
case 104:
#line 341 "pars0grm.y"
#line 344 "pars0grm.y"
{ yyval = yyvsp[0]; ;
break;}
case 105:
#line 347 "pars0grm.y"
#line 350 "pars0grm.y"
{ yyval = pars_update_statement_start(FALSE,
yyvsp[-2], yyvsp[0]); ;
break;}
case 106:
#line 353 "pars0grm.y"
#line 356 "pars0grm.y"
{ yyval = pars_update_statement(yyvsp[-1], NULL, yyvsp[0]); ;
break;}
case 107:
#line 358 "pars0grm.y"
#line 361 "pars0grm.y"
{ yyval = pars_update_statement(yyvsp[-1], yyvsp[0], NULL); ;
break;}
case 108:
#line 363 "pars0grm.y"
#line 366 "pars0grm.y"
{ yyval = pars_update_statement_start(TRUE,
yyvsp[0], NULL); ;
break;}
case 109:
#line 369 "pars0grm.y"
#line 372 "pars0grm.y"
{ yyval = pars_update_statement(yyvsp[-1], NULL, yyvsp[0]); ;
break;}
case 110:
#line 374 "pars0grm.y"
#line 377 "pars0grm.y"
{ yyval = pars_update_statement(yyvsp[-1], yyvsp[0], NULL); ;
break;}
case 111:
#line 379 "pars0grm.y"
#line 382 "pars0grm.y"
{ yyval = pars_row_printf_statement(yyvsp[0]); ;
break;}
case 112:
#line 384 "pars0grm.y"
#line 387 "pars0grm.y"
{ yyval = pars_assignment_statement(yyvsp[-2], yyvsp[0]); ;
break;}
case 113:
#line 390 "pars0grm.y"
#line 393 "pars0grm.y"
{ yyval = pars_elsif_element(yyvsp[-2], yyvsp[0]); ;
break;}
case 114:
#line 394 "pars0grm.y"
#line 397 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 115:
#line 396 "pars0grm.y"
#line 399 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-1], yyvsp[0]); ;
break;}
case 116:
#line 400 "pars0grm.y"
#line 403 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 117:
#line 402 "pars0grm.y"
#line 405 "pars0grm.y"
{ yyval = yyvsp[0]; ;
break;}
case 118:
#line 403 "pars0grm.y"
#line 406 "pars0grm.y"
{ yyval = yyvsp[0]; ;
break;}
case 119:
#line 410 "pars0grm.y"
#line 413 "pars0grm.y"
{ yyval = pars_if_statement(yyvsp[-5], yyvsp[-3], yyvsp[-2]); ;
break;}
case 120:
#line 416 "pars0grm.y"
#line 419 "pars0grm.y"
{ yyval = pars_while_statement(yyvsp[-4], yyvsp[-2]); ;
break;}
case 121:
#line 424 "pars0grm.y"
#line 427 "pars0grm.y"
{ yyval = pars_for_statement(yyvsp[-8], yyvsp[-6], yyvsp[-4], yyvsp[-2]); ;
break;}
case 122:
#line 428 "pars0grm.y"
#line 431 "pars0grm.y"
{ yyval = pars_return_statement(); ;
break;}
case 123:
#line 433 "pars0grm.y"
#line 436 "pars0grm.y"
{ yyval = pars_open_statement(
ROW_SEL_OPEN_CURSOR, yyvsp[0]); ;
break;}
case 124:
#line 439 "pars0grm.y"
#line 442 "pars0grm.y"
{ yyval = pars_open_statement(
ROW_SEL_CLOSE_CURSOR, yyvsp[0]); ;
break;}
case 125:
#line 445 "pars0grm.y"
#line 448 "pars0grm.y"
{ yyval = pars_fetch_statement(yyvsp[-2], yyvsp[0]); ;
break;}
case 126:
#line 449 "pars0grm.y"
#line 452 "pars0grm.y"
{ yyval = pars_column_def(yyvsp[-1], yyvsp[0]); ;
break;}
case 127:
#line 453 "pars0grm.y"
#line 456 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 128:
#line 455 "pars0grm.y"
#line 458 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-2], yyvsp[0]); ;
break;}
case 129:
#line 459 "pars0grm.y"
#line 462 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 130:
#line 461 "pars0grm.y"
#line 464 "pars0grm.y"
{ yyval = &pars_int_token;
/* pass any non-NULL pointer */ ;
break;}
case 131:
#line 468 "pars0grm.y"
#line 471 "pars0grm.y"
{ yyval = pars_create_table(yyvsp[-4], yyvsp[-2], yyvsp[0]); ;
break;}
case 132:
#line 472 "pars0grm.y"
#line 475 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 133:
#line 474 "pars0grm.y"
#line 477 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-2], yyvsp[0]); ;
break;}
case 134:
#line 478 "pars0grm.y"
#line 481 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 135:
#line 479 "pars0grm.y"
#line 482 "pars0grm.y"
{ yyval = &pars_unique_token; ;
break;}
case 136:
#line 483 "pars0grm.y"
#line 486 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 137:
#line 484 "pars0grm.y"
#line 487 "pars0grm.y"
{ yyval = &pars_clustered_token; ;
break;}
case 138:
#line 492 "pars0grm.y"
#line 495 "pars0grm.y"
{ yyval = pars_create_index(yyvsp[-8], yyvsp[-7], yyvsp[-5], yyvsp[-3], yyvsp[-1]); ;
break;}
case 139:
#line 497 "pars0grm.y"
#line 500 "pars0grm.y"
{ yyval = pars_commit_statement(); ;
break;}
case 140:
#line 502 "pars0grm.y"
#line 505 "pars0grm.y"
{ yyval = pars_rollback_statement(); ;
break;}
case 141:
#line 506 "pars0grm.y"
#line 509 "pars0grm.y"
{ yyval = &pars_int_token; ;
break;}
case 142:
#line 507 "pars0grm.y"
#line 510 "pars0grm.y"
{ yyval = &pars_char_token; ;
break;}
case 143:
#line 512 "pars0grm.y"
#line 515 "pars0grm.y"
{ yyval = pars_parameter_declaration(yyvsp[-2],
PARS_INPUT, yyvsp[0]); ;
break;}
case 144:
#line 515 "pars0grm.y"
#line 518 "pars0grm.y"
{ yyval = pars_parameter_declaration(yyvsp[-2],
PARS_OUTPUT, yyvsp[0]); ;
break;}
case 145:
#line 520 "pars0grm.y"
#line 523 "pars0grm.y"
{ yyval = NULL; ;
break;}
case 146:
#line 521 "pars0grm.y"
#line 524 "pars0grm.y"
{ yyval = que_node_list_add_last(NULL, yyvsp[0]); ;
break;}
case 147:
#line 523 "pars0grm.y"
#line 526 "pars0grm.y"
{ yyval = que_node_list_add_last(yyvsp[-2], yyvsp[0]); ;
break;}
case 148:
#line 528 "pars0grm.y"
#line 531 "pars0grm.y"
{ yyval = pars_variable_declaration(yyvsp[-2], yyvsp[-1]); ;
break;}
case 152:
#line 540 "pars0grm.y"
#line 543 "pars0grm.y"
{ yyval = pars_cursor_declaration(yyvsp[-3], yyvsp[-1]); ;
break;}
case 156:
#line 556 "pars0grm.y"
#line 559 "pars0grm.y"
{ yyval = pars_procedure_definition(yyvsp[-9], yyvsp[-7],
yyvsp[-1]); ;
break;}
......@@ -1866,5 +1866,5 @@ case 156:
#endif
return 1;
}
#line 560 "pars0grm.y"
#line 563 "pars0grm.y"
......@@ -13,8 +13,6 @@ the InnoDB parser.
%{
/* The value of the semantic attribute is a pointer to a query tree node
que_node_t */
#define YYSTYPE que_node_t*
#define alloca mem_alloc
#include <math.h>
......@@ -25,6 +23,8 @@ que_node_t */
#include "que0que.h"
#include "row0sel.h"
#define YYSTYPE que_node_t*
/* #define __STDC__ */
int
......
......@@ -26,6 +26,8 @@ How to make the InnoDB parser and lexer C files:
5. Rename lex.yy.c to lexyy.c.
6. Remove the #include of unistd.h from about line 2500 of lexyy.c
These instructions seem to work at least with bison-1.28 and flex-2.5.4 on
Linux.
*******************************************************/
......
......@@ -1348,7 +1348,9 @@ row_create_table_for_mysql(
"InnoDB: creating an InnoDB table with the same name in another\n"
"InnoDB: database and moving the .frm file to the current database.\n"
"InnoDB: Then MySQL thinks the table exists, and DROP TABLE will\n"
"InnoDB: succeed.\n");
"InnoDB: succeed.\n"
"InnoDB: You can look further help from section 15.1 of\n"
"InnoDB: http://www.innodb.com/ibman.html\n");
}
trx->error_state = DB_SUCCESS;
......@@ -1867,7 +1869,9 @@ row_drop_table_for_mysql(
" InnoDB: Error: table %s does not exist in the InnoDB internal\n"
"InnoDB: data dictionary though MySQL is trying to drop it.\n"
"InnoDB: Have you copied the .frm file of the table to the\n"
"InnoDB: MySQL database directory from another database?\n",
"InnoDB: MySQL database directory from another database?\n"
"InnoDB: You can look further help from section 15.1 of\n"
"InnoDB: http://www.innodb.com/ibman.html\n",
name);
goto funct_exit;
}
......@@ -2189,7 +2193,9 @@ row_rename_table_for_mysql(
fprintf(stderr,
" InnoDB: Error: table %s exists in the InnoDB internal data\n"
"InnoDB: dictionary though MySQL is trying rename table %s to it.\n"
"InnoDB: Have you deleted the .frm file and not used DROP TABLE?\n",
"InnoDB: Have you deleted the .frm file and not used DROP TABLE?\n"
"InnoDB: You can look further help from section 15.1 of\n"
"InnoDB: http://www.innodb.com/ibman.html\n",
new_name, old_name);
fprintf(stderr,
......
objid tablename oid test
1 t1 4 9
2 metatable 1 9
3 metaindex 1 9
objid tablename oid
1 t1 4
2 metatable 1
3 metaindex 1
-- source include/have_bdb.inc
#
# Small basic test for ALTER TABLE bug ..
#
drop table if exists t1;
create table t1(objid BIGINT not null, tablename varchar(64), oid BIGINT not null, test BIGINT, PRIMARY KEY (objid), UNIQUE(tablename)) type=BDB;
insert into t1 values(1, 't1',4,9);
insert into t1 values(2, 'metatable',1,9);
insert into t1 values(3, 'metaindex',1,9 );
select * from t1;
alter table t1 drop column test;
-- source include/have_bdb.inc
select * from t1;
drop table t1;
\ No newline at end of file
......@@ -971,7 +971,9 @@ Cannot find table %s from the internal data dictionary\n\
of InnoDB though the .frm file for the table exists. Maybe you\n\
have deleted and recreated InnoDB data files but have forgotten\n\
to delete the corresponding .frm files of InnoDB tables, or you\n\
have moved .frm files to another database?",
have moved .frm files to another database?\n\
Look from section 15.1 of http://www.innodb.com/ibman.html\n\
how you can resolve the problem.\n",
norm_name);
free_share(share);
......
......@@ -1665,11 +1665,6 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
VOID(pthread_cond_broadcast(&COND_refresh));
goto err;
}
#ifdef HAVE_BERKELEY_DB
extern bool berkeley_flush_logs(void);
if (old_db_type == DB_TYPE_BERKELEY_DB && berkeley_flush_logs())
goto err;
#endif
thd->proc_info="end";
mysql_update_log.write(thd, thd->query,thd->query_length);
if (mysql_bin_log.is_open())
......@@ -1679,6 +1674,14 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
}
VOID(pthread_cond_broadcast(&COND_refresh));
VOID(pthread_mutex_unlock(&LOCK_open));
#ifdef HAVE_BERKELEY_DB
extern bool berkeley_flush_logs(void);
if (old_db_type == DB_TYPE_BERKELEY_DB)
{
(void)berkeley_flush_logs();
table=open_ltable(thd,table_list,TL_READ);
}
#endif
end_temporary:
sprintf(tmp_name,ER(ER_INSERT_INFO),(ulong) (copied+deleted),
......
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