Bug #29585 Can't create Falcon table
Submitted: 5 Jul 2007 21:50 Modified: 6 Jul 2007 15:53
Reporter: Vadim TKACHENKO Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S2 (Serious)
Version:6.0-alpha OS:Any
Assigned to: CPU Architecture:Any

[5 Jul 2007 21:50] Vadim TKACHENKO
Description:
I get error errno: 138 when I try to create next table:
CREATE TABLE customer (
    ->   c_id int(11) NOT NULL default '0',
    ->   c_d_id int(11) NOT NULL default '0',
    ->   c_w_id int(11) NOT NULL default '0',
    ->   c_first varchar(16) default NULL,
    ->   c_middle char(2) default NULL,
    ->   c_last varchar(16) default NULL,
    ->   c_street_1 varchar(20) default NULL,
    ->   c_street_2 varchar(20) default NULL,
    ->   c_city varchar(20) default NULL,
    ->   c_state char(2) default NULL,
    ->   c_zip varchar(9) default NULL,
    ->   c_phone varchar(16) default NULL,
    ->   c_since timestamp NOT NULL,
    ->   c_credit char(2) default NULL,
    ->   c_credit_lim decimal(24,12) default NULL,
    ->   c_discount double default NULL,
    ->   c_balance decimal(24,12) default NULL,
    ->   c_ytd_payment decimal(24,12) default NULL,
    ->   c_payment_cnt double default NULL,
    ->   c_delivery_cnt double default NULL,
    ->   c_data text,
    ->   PRIMARY KEY  (c_w_id,c_d_id,c_id),
    ->   KEY c_w_id (c_w_id,c_d_id,c_last,c_first)
    -> ) engine = Falcon;
ERROR 1005 (HY000): Can't create table 'test.customer' (errno: 138)

How to repeat:
CREATE TABLE customer (
       c_id int(11) NOT NULL default '0',
       c_d_id int(11) NOT NULL default '0',
       c_w_id int(11) NOT NULL default '0',
       c_first varchar(16) default NULL,
       c_middle char(2) default NULL,
       c_last varchar(16) default NULL,
       c_street_1 varchar(20) default NULL,
       c_street_2 varchar(20) default NULL,
       c_city varchar(20) default NULL,
       c_state char(2) default NULL,
       c_zip varchar(9) default NULL,
       c_phone varchar(16) default NULL,
       c_since timestamp NOT NULL,
       c_credit char(2) default NULL,
       c_credit_lim decimal(24,12) default NULL,
       c_discount double default NULL,
       c_balance decimal(24,12) default NULL,
       c_ytd_payment decimal(24,12) default NULL,
       c_payment_cnt double default NULL,
       c_delivery_cnt double default NULL,
       c_data text,
       PRIMARY KEY  (c_w_id,c_d_id,c_id),
       KEY c_w_id (c_w_id,c_d_id,c_last,c_first)
     ) engine = Falcon;
ERROR 1005 (HY000): Can't create table 'test.customer' (errno: 138)
[5 Jul 2007 22:42] Hakan Küçükyılmaz
Can't repeat. Please start with an empty database with no falcon files at all. There where some changes to Falcon's internal format.

hakan@lu0011:~$ mysqladmin -uroot  create test
hakan@lu0011:~$ mysql -uroot test
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 6.0.1-alpha-valgrind-max-debug Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

[00:39] root@test>CREATE TABLE customer (
    ->        c_id int(11) NOT NULL default '0',
    ->        c_d_id int(11) NOT NULL default '0',
    ->        c_w_id int(11) NOT NULL default '0',
    ->        c_first varchar(16) default NULL,
    ->        c_middle char(2) default NULL,
    ->        c_last varchar(16) default NULL,
    ->        c_street_1 varchar(20) default NULL,
    ->        c_street_2 varchar(20) default NULL,
    ->        c_city varchar(20) default NULL,
    ->        c_state char(2) default NULL,
    ->        c_zip varchar(9) default NULL,
    ->        c_phone varchar(16) default NULL,
    ->        c_since timestamp NOT NULL,
    ->        c_credit char(2) default NULL,
    ->        c_credit_lim decimal(24,12) default NULL,
    ->        c_discount double default NULL,
    ->        c_balance decimal(24,12) default NULL,
    ->        c_ytd_payment decimal(24,12) default NULL,
    ->        c_payment_cnt double default NULL,
    ->        c_delivery_cnt double default NULL,
    ->        c_data text,
    ->        PRIMARY KEY  (c_w_id,c_d_id,c_id),
    ->        KEY c_w_id (c_w_id,c_d_id,c_last,c_first)
    ->      ) engine = Falcon;
Query OK, 0 rows affected (0.32 sec)

[00:40] root@test>describe customer
    -> ;
+----------------+----------------+------+-----+-------------------+-------+
| Field          | Type           | Null | Key | Default           | Extra |
+----------------+----------------+------+-----+-------------------+-------+
| c_id           | int(11)        | NO   | PRI | 0                 |       |
| c_d_id         | int(11)        | NO   | PRI | 0                 |       |
| c_w_id         | int(11)        | NO   | PRI | 0                 |       |
| c_first        | varchar(16)    | YES  |     | NULL              |       |
| c_middle       | char(2)        | YES  |     | NULL              |       |
| c_last         | varchar(16)    | YES  |     | NULL              |       |
| c_street_1     | varchar(20)    | YES  |     | NULL              |       |
| c_street_2     | varchar(20)    | YES  |     | NULL              |       |
| c_city         | varchar(20)    | YES  |     | NULL              |       |
| c_state        | char(2)        | YES  |     | NULL              |       |
| c_zip          | varchar(9)     | YES  |     | NULL              |       |
| c_phone        | varchar(16)    | YES  |     | NULL              |       |
| c_since        | timestamp      | NO   |     | CURRENT_TIMESTAMP |       |
| c_credit       | char(2)        | YES  |     | NULL              |       |
| c_credit_lim   | decimal(24,12) | YES  |     | NULL              |       |
| c_discount     | double         | YES  |     | NULL              |       |
| c_balance      | decimal(24,12) | YES  |     | NULL              |       |
| c_ytd_payment  | decimal(24,12) | YES  |     | NULL              |       |
| c_payment_cnt  | double         | YES  |     | NULL              |       |
| c_delivery_cnt | double         | YES  |     | NULL              |       |
| c_data         | text           | YES  |     | NULL              |       |
+----------------+----------------+------+-----+-------------------+-------+
21 rows in set (0.04 sec)
[6 Jul 2007 5:45] Vadim TKACHENKO
I tried on empty test database.

The version I'm using is from http://dev.mysql.com/downloads/mysql/6.0.html

Maybe I should use newer version, which one ?
[6 Jul 2007 8:35] Hakan Küçükyılmaz
Vadim,

you can build from latest bk source or wait for our next release. There will be a new version soon.

Best regards,

Hakan
[6 Jul 2007 15:05] Vadim TKACHENKO
Hakan,

I'm trying lastest bk-tree and follow instruction from
http://dev.mysql.com/doc/falcon/en/building-falcon.html

compilation was failed:

gmake[2]: Entering directory `/home/vadim/bk-client2.0/mysql-6.0-falcon/sql'
gmake[2]: warning: -jN forced in submake: disabling jobserver mode.
d --verbose sql_yacc.yy
gmake[2]: d: Command not found
gmake -j 4 gen_lex_hash
gmake[2]: [sql_yacc.cc] Error 127 (ignored)
if test -f y.tab.h; then \
  to=`echo "sql_yacc_H" | sed \
                -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
                -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \
  sed -e "/^#/!b" -e "s/Y_TAB_H/$to/g" -e "s|y\.tab\.h|sql_yacc.h|" \
            y.tab.h >sql_yacc.ht; \
  rm -f y.tab.h; \
  if cmp -s sql_yacc.ht sql_yacc.h; then \
    rm -f sql_yacc.ht ;\
  else \
    mv sql_yacc.ht sql_yacc.h; \
  fi; \
fi
if test -f y.output; then \
  mv y.output sql_yacc.output; \
fi
rm -f mini_client_errors.c
sed '/^#/ s|y\.tab\.c|sql_yacc.cc|' y.tab.c >sql_yacc.cct && mv sql_yacc.cct sql_yacc.cc
/bin/ln -s ../libmysql/errmsg.c mini_client_errors.c
rm -f pack.c
sed: can't read y.tab.c: No such file or directory
/bin/ln -s ../sql-common/pack.c pack.c
gmake[3]: Entering directory `/home/vadim/bk-client2.0/mysql-6.0-falcon/sql'
gmake[2]: *** [sql_yacc.cc] Error 2
gmake[2]: *** Waiting for unfinished jobs....
gmake[3]: warning: -jN forced in submake: disabling jobserver mode.
rm -f client.c
gmake[2]: *** Waiting for unfinished jobs....
/bin/ln -s ../sql-common/client.c client.c
gmake[2]: *** Waiting for unfinished jobs....
rm -f my_time.c
gmake[2]: *** Waiting for unfinished jobs....
/bin/ln -s ../sql-common/my_time.c my_time.c
gmake[2]: *** Waiting for unfinished jobs....
rm -f my_user.c
gmake[2]: *** Waiting for unfinished jobs....
/bin/ln -s ../sql-common/my_user.c my_user.c
gmake[2]: *** Waiting for unfinished jobs....
if gcc -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr/local/mysql\"" -DDATADIR="\"/usr/local/mysql/var\"" -DSHAREDIR="\"/usr/local/mysql/share/mysql\"" -DLIBDIR="\"/usr/local/mysql/lib/mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I../zlib -I../include -I../include -I../regex -I.     -g -DSAFE_MUTEX -DSAFEMALLOC -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -mtune=nocona -DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS  -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC -DSAFE_MUTEX   -fno-implicit-templates -fno-exceptions -fno-rtti -MT gen_lex_hash.o -MD -MP -MF ".deps/gen_lex_hash.Tpo" -c -o gen_lex_hash.o gen_lex_hash.cc; \
then mv -f ".deps/gen_lex_hash.Tpo" ".deps/gen_lex_hash.Po"; else rm -f ".deps/gen_lex_hash.Tpo"; exit 1; fi
/bin/sh ../libtool --preserve-dup-deps --mode=link --tag=CXX gcc  -g -DSAFE_MUTEX -DSAFEMALLOC -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -mtune=nocona -DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS  -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC -DSAFE_MUTEX   -fno-implicit-templates -fno-exceptions -fno-rtti  -rdynamic  -o gen_lex_hash -static gen_lex_hash.o ../vio/libvio.a ../mysys/libmysys.a ../dbug/libdbug.a ../regex/libregex.a ../strings/libmystrings.a ../zlib/libzlt.la  -lpthread -lrt -lcrypt -lnsl -lm  -lpthread 
mkdir .libs
gcc -g -DSAFE_MUTEX -DSAFEMALLOC -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused-function -Wunused-label -Wunused-value -Wunused-variable -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -mtune=nocona -DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS -DSAFEMALLOC -DPEDANTIC_SAFEMALLOC -DSAFE_MUTEX -fno-implicit-templates -fno-exceptions -fno-rtti -rdynamic -o gen_lex_hash gen_lex_hash.o  ../vio/libvio.a ../mysys/libmysys.a ../dbug/libdbug.a ../regex/libregex.a ../strings/libmystrings.a ../zlib/.libs/libzlt.a -lpthread -lrt -lcrypt -lnsl -lm -lpthread
gmake[3]: Leaving directory `/home/vadim/bk-client2.0/mysql-6.0-falcon/sql'
./gen_lex_hash > lex_hash.h-t
/bin/mv lex_hash.h-t lex_hash.h
gmake[2]: Leaving directory `/home/vadim/bk-client2.0/mysql-6.0-falcon/sql'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/home/vadim/bk-client2.0/mysql-6.0-falcon'
gmake: *** [all] Error 2

Please advice what I should fix
[6 Jul 2007 15:43] Hakan Küçükyılmaz
Something looks terribly wrong. Either our sources or your build system.

gmake[2]: Entering directory
`/home/vadim/bk-client2.0/mysql-6.0-falcon/sql'
gmake[2]: warning: -jN forced in submake: disabling jobserver mode.
d --verbose sql_yacc.yy
gmake[2]: d: Command not found

That looks weird. Can you try to build a MySQL 5.1 from BK?

Thanks,

Hakan
[6 Jul 2007 15:53] Vadim TKACHENKO
Hakan, 

I fixed that.

I had no installed bison on my system.

Thank you for help