summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorunknown <bk@work.mysql.com>2000-07-31 21:29:14 +0200
committerunknown <bk@work.mysql.com>2000-07-31 21:29:14 +0200
commit84626f52fb1ca40ebe0175dfda8cc1a2931651c7 (patch)
treed253a359142dfc1ed247d5d4365d86972ea31109 /sql/field.cc
parent3be46690f46f27f3e671de9a615d24d1554b9991 (diff)
downloadmariadb-git-84626f52fb1ca40ebe0175dfda8cc1a2931651c7.tar.gz
Import changeset
Docs/Flags/australia.eps: First import - 3.23.10 Docs/Flags/australia.gif: First import - 3.23.10 Docs/Flags/australia.txt: First import - 3.23.10 Docs/Flags/austria.eps: First import - 3.23.10 Docs/Flags/austria.gif: First import - 3.23.10 Docs/Flags/austria.txt: First import - 3.23.10 Docs/Flags/brazil.eps: First import - 3.23.10 Docs/Flags/brazil.gif: First import - 3.23.10 Docs/Flags/brazil.txt: First import - 3.23.10 Docs/Flags/bulgaria.eps: First import - 3.23.10 Docs/Flags/bulgaria.gif: First import - 3.23.10 Docs/Flags/bulgaria.txt: First import - 3.23.10 Docs/Flags/canada.eps: First import - 3.23.10 Docs/Flags/canada.gif: First import - 3.23.10 Docs/Flags/canada.txt: First import - 3.23.10 Docs/Flags/chile.eps: First import - 3.23.10 Docs/Flags/chile.gif: First import - 3.23.10 Docs/Flags/chile.txt: First import - 3.23.10 Docs/Flags/china.eps: First import - 3.23.10 Docs/Flags/china.gif: First import - 3.23.10 Docs/Flags/china.txt: First import - 3.23.10 Docs/Flags/croatia.eps: First import - 3.23.10 Docs/Flags/croatia.gif: First import - 3.23.10 Docs/Flags/croatia.txt: First import - 3.23.10 Docs/Flags/czech-republic.eps: First import - 3.23.10 Docs/Flags/czech-republic.gif: First import - 3.23.10 Docs/Flags/czech-republic.txt: First import - 3.23.10 Docs/Flags/denmark.eps: First import - 3.23.10 Docs/Flags/denmark.gif: First import - 3.23.10 Docs/Flags/denmark.txt: First import - 3.23.10 Docs/Flags/estonia.eps: First import - 3.23.10 Docs/Flags/estonia.gif: First import - 3.23.10 Docs/Flags/estonia.txt: First import - 3.23.10 Docs/Flags/finland.eps: First import - 3.23.10 Docs/Flags/finland.gif: First import - 3.23.10 Docs/Flags/finland.txt: First import - 3.23.10 Docs/Flags/france.eps: First import - 3.23.10 Docs/Flags/france.gif: First import - 3.23.10 Docs/Flags/france.txt: First import - 3.23.10 Docs/Flags/germany.eps: First import - 3.23.10 Docs/Flags/germany.gif: First import - 3.23.10 Docs/Flags/germany.txt: First import - 3.23.10 Docs/Flags/great-britain.eps: First import - 3.23.10 Docs/Flags/great-britain.gif: First import - 3.23.10 Docs/Flags/great-britain.txt: First import - 3.23.10 Docs/Flags/greece.eps: First import - 3.23.10 Docs/Flags/greece.gif: First import - 3.23.10 Docs/Flags/greece.txt: First import - 3.23.10 Docs/Flags/hungary.eps: First import - 3.23.10 Docs/Flags/hungary.gif: First import - 3.23.10 Docs/Flags/hungary.txt: First import - 3.23.10 Docs/Flags/iceland.eps: First import - 3.23.10 Docs/Flags/iceland.gif: First import - 3.23.10 Docs/Flags/iceland.txt: First import - 3.23.10 Docs/Flags/ireland.eps: First import - 3.23.10 Docs/Flags/ireland.gif: First import - 3.23.10 Docs/Flags/ireland.txt: First import - 3.23.10 Docs/Flags/island.eps: First import - 3.23.10 Docs/Flags/island.gif: First import - 3.23.10 Docs/Flags/island.txt: First import - 3.23.10 Docs/Flags/israel.eps: First import - 3.23.10 Docs/Flags/israel.gif: First import - 3.23.10 Docs/Flags/israel.txt: First import - 3.23.10 Docs/Flags/italy.eps: First import - 3.23.10 Docs/Flags/italy.gif: First import - 3.23.10 Docs/Flags/italy.txt: First import - 3.23.10 Docs/Flags/japan.eps: First import - 3.23.10 Docs/Flags/japan.gif: First import - 3.23.10 Docs/Flags/japan.txt: First import - 3.23.10 Docs/Flags/kroatia.eps: First import - 3.23.10 Docs/Flags/kroatia.gif: First import - 3.23.10 Docs/Flags/kroatia.txt: First import - 3.23.10 Docs/Flags/netherlands.eps: First import - 3.23.10 Docs/Flags/netherlands.gif: First import - 3.23.10 Docs/Flags/netherlands.txt: First import - 3.23.10 Docs/Flags/poland.eps: First import - 3.23.10 Docs/Flags/poland.gif: First import - 3.23.10 Docs/Flags/poland.txt: First import - 3.23.10 Docs/Flags/portugal.eps: First import - 3.23.10 Docs/Flags/portugal.gif: First import - 3.23.10 Docs/Flags/portugal.txt: First import - 3.23.10 Docs/Flags/romania.eps: First import - 3.23.10 Docs/Flags/romania.gif: First import - 3.23.10 Docs/Flags/romania.txt: First import - 3.23.10 Docs/Flags/russia.eps: First import - 3.23.10 Docs/Flags/russia.gif: First import - 3.23.10 Docs/Flags/russia.txt: First import - 3.23.10 Docs/Flags/singapore.eps: First import - 3.23.10 Docs/Flags/singapore.gif: First import - 3.23.10 Docs/Flags/singapore.txt: First import - 3.23.10 Docs/Flags/south-africa.eps: First import - 3.23.10 Docs/Flags/south-africa.gif: First import - 3.23.10 Docs/Flags/south-africa.txt: First import - 3.23.10 Docs/Flags/south-africa1.eps: First import - 3.23.10 Docs/Flags/south-africa1.gif: First import - 3.23.10 Docs/Flags/south-africa1.txt: First import - 3.23.10 Docs/Flags/south-korea.eps: First import - 3.23.10 Docs/Flags/south-korea.gif: First import - 3.23.10 Docs/Flags/south-korea.txt: First import - 3.23.10 Docs/Flags/spain.eps: First import - 3.23.10 Docs/Flags/spain.gif: First import - 3.23.10 Docs/Flags/spain.txt: First import - 3.23.10 Docs/Flags/sweden.eps: First import - 3.23.10 Docs/Flags/sweden.gif: First import - 3.23.10 Docs/Flags/sweden.txt: First import - 3.23.10 Docs/Flags/switzerland.eps: First import - 3.23.10 Docs/Flags/switzerland.gif: First import - 3.23.10 Docs/Flags/switzerland.txt: First import - 3.23.10 Docs/Flags/taiwan.eps: First import - 3.23.10 Docs/Flags/taiwan.gif: First import - 3.23.10 Docs/Flags/taiwan.txt: First import - 3.23.10 Docs/Flags/ukraine.eps: First import - 3.23.10 Docs/Flags/ukraine.gif: First import - 3.23.10 Docs/Flags/ukraine.txt: First import - 3.23.10 Docs/Flags/usa.eps: First import - 3.23.10 Docs/Flags/usa.gif: First import - 3.23.10 Docs/Flags/usa.txt: First import - 3.23.10 Docs/Images/mysql-logo.gif: First import - 3.23.10 Docs/To-be-included-in-the-manual/MySQL-for-dummies: First import - 3.23.10 README: First import - 3.23.10 config.guess: First import - 3.23.10 dbug/dbug_long.h: First import - 3.23.10 dbug/example1.c: First import - 3.23.10 dbug/example2.c: First import - 3.23.10 dbug/example3.c: First import - 3.23.10 dbug/factorial.c: First import - 3.23.10 dbug/main.c: First import - 3.23.10 dbug/monty.doc: First import - 3.23.10 dbug/readme.prof: First import - 3.23.10 dbug/sanity.c: First import - 3.23.10 dbug/user.r: First import - 3.23.10 heap/ChangeLog: First import - 3.23.10 install-sh: First import - 3.23.10 ltconfig: First import - 3.23.10 ltmain.sh: First import - 3.23.10 missing: First import - 3.23.10 mit-pthreads/COPYRIGHT: First import - 3.23.10 mit-pthreads/FAQ: First import - 3.23.10 mit-pthreads/NOTES_OSR5_BUILD_SKUNKWARE97: First import - 3.23.10 mit-pthreads/NOTES: First import - 3.23.10 mit-pthreads/README: First import - 3.23.10 mit-pthreads/TODO-mysql: First import - 3.23.10 mit-pthreads/Whats_New: First import - 3.23.10 mit-pthreads/bin/Makefile.in: First import - 3.23.10 mit-pthreads/bin/finger/Makefile.in: First import - 3.23.10 mit-pthreads/bin/finger/finger.c: First import - 3.23.10 mit-pthreads/bin/finger/net.c: First import - 3.23.10 mit-pthreads/config/COPYING.GNU: First import - 3.23.10 mit-pthreads/config/COPYRIGHT: First import - 3.23.10 mit-pthreads/config/GNUmakefile.in: First import - 3.23.10 mit-pthreads/config/Makefile.in: First import - 3.23.10 mit-pthreads/config/acconfig.h: First import - 3.23.10 mit-pthreads/config/aclocal.m4: First import - 3.23.10 mit-pthreads/config/config.flags.in: First import - 3.23.10 mit-pthreads/config/config.guess: First import - 3.23.10 mit-pthreads/config/config.sub: First import - 3.23.10 mit-pthreads/config/configure.org: First import - 3.23.10 mit-pthreads/config/install-sh: First import - 3.23.10 mit-pthreads/configure: First import - 3.23.10 mit-pthreads/gen/GNUmakefile.inc: First import - 3.23.10 mit-pthreads/gen/Makefile.inc: First import - 3.23.10 mit-pthreads/gen/ctime.c: First import - 3.23.10 mit-pthreads/gen/difftime.c: First import - 3.23.10 mit-pthreads/gen/directory.c: First import - 3.23.10 mit-pthreads/gen/eprintf.c: First import - 3.23.10 mit-pthreads/gen/getcwd.c: First import - 3.23.10 mit-pthreads/gen/getpwent.c: First import - 3.23.10 mit-pthreads/gen/getpwnamuid.c: First import - 3.23.10 mit-pthreads/gen/getwd.c: First import - 3.23.10 mit-pthreads/gen/isatty.c: First import - 3.23.10 mit-pthreads/gen/popen.c: First import - 3.23.10 mit-pthreads/gen/pwd_internal.c: First import - 3.23.10 mit-pthreads/gen/pwd_internal.h: First import - 3.23.10 mit-pthreads/gen/syslog.c: First import - 3.23.10 mit-pthreads/gen/time.c: First import - 3.23.10 mit-pthreads/include/Makefile.inc: First import - 3.23.10 mit-pthreads/include/arpa/inet.h: First import - 3.23.10 mit-pthreads/include/arpa/nameser.h: First import - 3.23.10 mit-pthreads/include/dirent.h: First import - 3.23.10 mit-pthreads/include/endian.h: First import - 3.23.10 mit-pthreads/include/errno.h: First import - 3.23.10 mit-pthreads/include/math.h: First import - 3.23.10 mit-pthreads/include/netdb.h: First import - 3.23.10 mit-pthreads/include/pthread.h: First import - 3.23.10 mit-pthreads/include/pthread/cleanup.h: First import - 3.23.10 mit-pthreads/include/pthread/debug_out.h: First import - 3.23.10 mit-pthreads/include/pthread/fd.h: First import - 3.23.10 mit-pthreads/include/pthread/fd_pipe.h: First import - 3.23.10 mit-pthreads/include/pthread/kernel.h: First import - 3.23.10 mit-pthreads/include/pthread/kthread.h: First import - 3.23.10 mit-pthreads/include/pthread/mutex.h: First import - 3.23.10 mit-pthreads/include/pthread/prio_queue.h: First import - 3.23.10 mit-pthreads/include/pthread/pthread_attr.h: First import - 3.23.10 mit-pthreads/include/pthread/pthread_once.h: First import - 3.23.10 mit-pthreads/include/pthread/queue.h: First import - 3.23.10 mit-pthreads/include/pthread/sleep.h: First import - 3.23.10 mit-pthreads/include/pthread/specific.h: First import - 3.23.10 mit-pthreads/include/pthread/state.def: First import - 3.23.10 mit-pthreads/include/pthread/types.h: First import - 3.23.10 mit-pthreads/include/pthread/unistd.h: First import - 3.23.10 mit-pthreads/include/pthread/util.h: First import - 3.23.10 mit-pthreads/include/pthread/version.h: First import - 3.23.10 mit-pthreads/include/pthread/xtypes.h: First import - 3.23.10 mit-pthreads/include/pwd.h: First import - 3.23.10 mit-pthreads/include/resolv.h: First import - 3.23.10 mit-pthreads/include/sched.h: First import - 3.23.10 mit-pthreads/include/signal.h: First import - 3.23.10 mit-pthreads/include/stdio.h: First import - 3.23.10 mit-pthreads/include/stdlib.h: First import - 3.23.10 mit-pthreads/include/string.h: First import - 3.23.10 mit-pthreads/include/syslog.h: First import - 3.23.10 mit-pthreads/include/time.h: First import - 3.23.10 mit-pthreads/include/timers.h: First import - 3.23.10 mit-pthreads/include/tzfile.h: First import - 3.23.10 mit-pthreads/include/unistd.h: First import - 3.23.10 mit-pthreads/lib/Makefile.in: First import - 3.23.10 mit-pthreads/lib/libpthreadutil/Makefile.in: First import - 3.23.10 mit-pthreads/lib/libpthreadutil/pthread_atexit.c: First import - 3.23.10 mit-pthreads/lib/libpthreadutil/pthread_tad.c: First import - 3.23.10 mit-pthreads/lib/libpthreadutil/pthreadutil.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/__math.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/__signal.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/__string.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/__time.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/cdefs.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/compat.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/dirent.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/signal.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/socket.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/timers.h: First import - 3.23.10 mit-pthreads/machdep/alpha-osf1/uio.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-1.1/compat.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-1.1/dirent.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-1.1/errno.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-1.1/socket.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-1.1/timers.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/__math.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/__path.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/__signal.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/__string.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/__time.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/compat.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/dirent.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/errno.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/time.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/timers.h: First import - 3.23.10 mit-pthreads/machdep/bsdi-2.0/wait.h: First import - 3.23.10 mit-pthreads/machdep/engine-alpha-netbsd-1.1.c: First import - 3.23.10 mit-pthreads/machdep/engine-alpha-netbsd-1.1.h: First import - 3.23.10 mit-pthreads/machdep/engine-alpha-netbsd-1.3.c: First import - 3.23.10 mit-pthreads/machdep/engine-alpha-netbsd-1.3.h: First import - 3.23.10 mit-pthreads/machdep/engine-alpha-osf1.c: First import - 3.23.10 mit-pthreads/machdep/engine-alpha-osf1.h: First import - 3.23.10 mit-pthreads/machdep/engine-arm32-netbsd-1.3.c: First import - 3.23.10 mit-pthreads/machdep/engine-arm32-netbsd-1.3.h: First import - 3.23.10 mit-pthreads/machdep/engine-hppa-hpux-10.20.c: First import - 3.23.10 mit-pthreads/machdep/engine-hppa-hpux-10.20.h: First import - 3.23.10 mit-pthreads/machdep/engine-hppa-hpux-9.03.c: First import - 3.23.10 mit-pthreads/machdep/engine-hppa-hpux-9.03.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-bsdi-1.1.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-bsdi-1.1.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-bsdi-2.0.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-bsdi-2.0.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-freebsd-1.1.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-freebsd-1.1.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-freebsd-2.0.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-freebsd-2.0.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-linux-1.0.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-linux-1.0.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-netbsd-0.9.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-netbsd-0.9.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-netbsd-1.0.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-netbsd-1.0.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-netbsd-1.3.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-netbsd-1.3.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-openbsd-2.0.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-openbsd-2.0.h: First import - 3.23.10 mit-pthreads/machdep/engine-i386-sco-3.2v5.c: First import - 3.23.10 mit-pthreads/machdep/engine-i386-sco-3.2v5.h: First import - 3.23.10 mit-pthreads/machdep/engine-ip22-irix-5.2.c: First import - 3.23.10 mit-pthreads/machdep/engine-ip22-irix-5.2.h: First import - 3.23.10 mit-pthreads/machdep/engine-m68000-netbsd.c: First import - 3.23.10 mit-pthreads/machdep/engine-m68000-netbsd.h: First import - 3.23.10 mit-pthreads/machdep/engine-r2000-ultrix-4.2.c: First import - 3.23.10 mit-pthreads/machdep/engine-r2000-ultrix-4.2.h: First import - 3.23.10 mit-pthreads/machdep/engine-romp-bsd.c: First import - 3.23.10 mit-pthreads/machdep/engine-romp-bsd.h: First import - 3.23.10 mit-pthreads/machdep/engine-sparc-netbsd-1.3.c: First import - 3.23.10 mit-pthreads/machdep/engine-sparc-netbsd-1.3.h: First import - 3.23.10 mit-pthreads/machdep/engine-sparc-sunos-4.1.3.c: First import - 3.23.10 mit-pthreads/machdep/engine-sparc-sunos-4.1.3.h: First import - 3.23.10 mit-pthreads/machdep/engine-sparc-sunos-5.3.c: First import - 3.23.10 mit-pthreads/machdep/engine-sparc-sunos-5.3.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-1.1/compat.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-1.1/dirent.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-1.1/socket.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-1.1/timers.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/__math.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/__path.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/__signal.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/__string.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/__time.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/compat.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/dirent.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/errno.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/timers.h: First import - 3.23.10 mit-pthreads/machdep/freebsd-2.0/wait.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/__math.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/__signal.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/__string.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/__time.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/cdefs.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/compat.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/dirent.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/socket.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/stdtypes.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/time.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/timers.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/uio.h: First import - 3.23.10 mit-pthreads/machdep/hpux-10.20/wait.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/__math.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/__signal.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/__string.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/__time.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/cdefs.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/compat.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/dirent.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/socket.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/stdtypes.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/time.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/timers.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/uio.h: First import - 3.23.10 mit-pthreads/machdep/hpux-9.03/wait.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/__math.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/__signal.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/__string.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/__time.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/compat.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/dirent.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/posix/__signal.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/socket.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/syscall.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/timers.h: First import - 3.23.10 mit-pthreads/machdep/i386-sco-3.2v5/trash.can: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/__math.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/__signal.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/__string.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/__time.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/compat.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/dirent.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/socket.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/timers.h: First import - 3.23.10 mit-pthreads/machdep/irix-5.2/wait.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/__math.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/__path.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/__signal.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/__string.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/__time.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/cdefs.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/compat.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/dirent.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/errno.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/socket.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/timers.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/uio.h: First import - 3.23.10 mit-pthreads/machdep/linux-1.0/wait.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-0.9/dirent.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/__math.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/__path.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/__signal.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/__string.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/__time.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/compat.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/dirent.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/errno.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/time.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/timers.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.0/wait.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/__math.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/__path.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/__signal.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/__string.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/__time.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/compat.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/dirent.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/errno.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/time.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/timers.h: First import - 3.23.10 mit-pthreads/machdep/netbsd-1.1/wait.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/__math.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/__path.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/__signal.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/__string.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/__time.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/compat.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/dirent.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/errno.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/timers.h: First import - 3.23.10 mit-pthreads/machdep/openbsd-2.0/wait.h: First import - 3.23.10 mit-pthreads/machdep/posix-alpha-osf1.h: First import - 3.23.10 mit-pthreads/machdep/posix-bsdi-1.1.h: First import - 3.23.10 mit-pthreads/machdep/posix-bsdi-2.0.h: First import - 3.23.10 mit-pthreads/machdep/posix-freebsd-1.1.h: First import - 3.23.10 mit-pthreads/machdep/posix-freebsd-2.0.h: First import - 3.23.10 mit-pthreads/machdep/posix-hpux-10.20.h: First import - 3.23.10 mit-pthreads/machdep/posix-hpux-9.03.h: First import - 3.23.10 mit-pthreads/machdep/posix-i386-sco-3.2v5.h: First import - 3.23.10 mit-pthreads/machdep/posix-irix-5.2.h: First import - 3.23.10 mit-pthreads/machdep/posix-linux-1.0.h: First import - 3.23.10 mit-pthreads/machdep/posix-netbsd-0.9.h: First import - 3.23.10 mit-pthreads/machdep/posix-netbsd-1.0.h: First import - 3.23.10 mit-pthreads/machdep/posix-netbsd-1.1.h: First import - 3.23.10 mit-pthreads/machdep/posix-openbsd-2.0.h: First import - 3.23.10 mit-pthreads/machdep/posix-romp-bsd.h: First import - 3.23.10 mit-pthreads/machdep/posix-sco-3.2v5.h: First import - 3.23.10 mit-pthreads/machdep/posix-sunos-4.1.3.h: First import - 3.23.10 mit-pthreads/machdep/posix-sunos-5.3.h: First import - 3.23.10 mit-pthreads/machdep/posix-sunos-5.5.h: First import - 3.23.10 mit-pthreads/machdep/posix-ultrix-4.2.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/__math.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/__signal.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/__string.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/__time.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/compat.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/dirent.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/posix/__signal.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/socket.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/syscall.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/timers.h: First import - 3.23.10 mit-pthreads/machdep/sco-3.2v5/trash.can: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/__math.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/__path.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/__signal.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/__string.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/__time.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/cdefs.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/compat.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/dirent.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/fcntlcom.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/signal.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/stat.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/time.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/timers.h: First import - 3.23.10 mit-pthreads/machdep/sunos-4.1.3/wait.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/__math.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/__signal.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/__string.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/__time.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/cdefs.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/compat.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/dirent.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/socket.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/timers.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.3/uio.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/__math.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/__signal.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/__string.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/__time.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/cdefs.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/compat.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/dirent.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/socket.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/timers.h: First import - 3.23.10 mit-pthreads/machdep/sunos-5.5/uio.h: First import - 3.23.10 mit-pthreads/machdep/syscall-alpha-netbsd-1.1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-alpha-netbsd-1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-alpha-osf1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-arm32-netbsd-1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-hppa-hpux-10.20.S: First import - 3.23.10 mit-pthreads/machdep/syscall-hppa-hpux-9.03.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-bsdi-1.1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-bsdi-2.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-freebsd-1.1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-freebsd-2.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-linux-1.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-netbsd-0.9.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-netbsd-1.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-netbsd-1.1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-netbsd-1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-openbsd-2.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-i386-sco-3.2v5.S: First import - 3.23.10 mit-pthreads/machdep/syscall-ip22-irix-5.2.S: First import - 3.23.10 mit-pthreads/machdep/syscall-m68000-netbsd.S: First import - 3.23.10 mit-pthreads/machdep/syscall-r2000-ultrix-4.2.S: First import - 3.23.10 mit-pthreads/machdep/syscall-romp-bsd.S: First import - 3.23.10 mit-pthreads/machdep/syscall-sparc-netbsd-1.1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-sparc-netbsd-1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-sparc-sunos-4.1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-sparc-sunos-5.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-sparc-sunos4.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-alpha-netbsd-1.1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-alpha-netbsd-1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-alpha-osf1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-arm32-netbsd-1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-hppa-hpux-10.20.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-hppa-hpux-9.03.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-i386-bsdi-2.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-i386-freebsd-2.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-i386-netbsd-1.1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-i386-netbsd-1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-i386-netbsd1.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-i386-openbsd-2.0.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-i386-sco-3.2v5.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-ip22-irix-5.2.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-m68000-netbsd.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-r2000-ultrix-4.2.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-sparc-netbsd-1.1.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-sparc-netbsd-1.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-sparc-sunos-5.3.S: First import - 3.23.10 mit-pthreads/machdep/syscall-template-sparc-sunos4.S: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/__math.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/__signal.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/__stdio.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/__stdlib.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/__string.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/__time.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/__unistd.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/cdefs.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/compat.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/dirent.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/errno.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/time.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/timers.h: First import - 3.23.10 mit-pthreads/machdep/ultrix-4.2/wait.h: First import - 3.23.10 mit-pthreads/machdep/unistd-i386-freebsd-1.1.h: First import - 3.23.10 mit-pthreads/machdep/unistd-i386-linux-1.0.h: First import - 3.23.10 mit-pthreads/machdep/unistd-sparc-sunos-4.1.3.h: First import - 3.23.10 mit-pthreads/net/GNUmakefile.inc: First import - 3.23.10 mit-pthreads/net/gethostbyaddr.c: First import - 3.23.10 mit-pthreads/net/gethostbyname.c: First import - 3.23.10 mit-pthreads/net/gethostent.c: First import - 3.23.10 mit-pthreads/net/getnetbyaddr.c: First import - 3.23.10 mit-pthreads/net/getnetbyname.c: First import - 3.23.10 mit-pthreads/net/getnetent.c: First import - 3.23.10 mit-pthreads/net/getproto.c: First import - 3.23.10 mit-pthreads/net/getprotoent.c: First import - 3.23.10 mit-pthreads/net/getprotoname.c: First import - 3.23.10 mit-pthreads/net/getservbyname.c: First import - 3.23.10 mit-pthreads/net/getservbyport.c: First import - 3.23.10 mit-pthreads/net/getservent.c: First import - 3.23.10 mit-pthreads/net/herror.c: First import - 3.23.10 mit-pthreads/net/inet_addr.c: First import - 3.23.10 mit-pthreads/net/inet_lnaof.c: First import - 3.23.10 mit-pthreads/net/inet_makeaddr.c: First import - 3.23.10 mit-pthreads/net/inet_netof.c: First import - 3.23.10 mit-pthreads/net/inet_network.c: First import - 3.23.10 mit-pthreads/net/inet_ntoa.c: First import - 3.23.10 mit-pthreads/net/net_internal.c: First import - 3.23.10 mit-pthreads/net/net_internal.h: First import - 3.23.10 mit-pthreads/net/proto_internal.c: First import - 3.23.10 mit-pthreads/net/proto_internal.h: First import - 3.23.10 mit-pthreads/net/res_comp.c: First import - 3.23.10 mit-pthreads/net/res_debug.c: First import - 3.23.10 mit-pthreads/net/res_init.c: First import - 3.23.10 mit-pthreads/net/res_internal.c: First import - 3.23.10 mit-pthreads/net/res_internal.h: First import - 3.23.10 mit-pthreads/net/res_mkquery.c: First import - 3.23.10 mit-pthreads/net/res_query.c: First import - 3.23.10 mit-pthreads/net/res_querydomain.c: First import - 3.23.10 mit-pthreads/net/res_search.c: First import - 3.23.10 mit-pthreads/net/res_send.c: First import - 3.23.10 mit-pthreads/net/serv_internal.c: First import - 3.23.10 mit-pthreads/net/serv_internal.h: First import - 3.23.10 mit-pthreads/patches/Streepy.html: First import - 3.23.10 mit-pthreads/patches/Streepy2.html: First import - 3.23.10 mit-pthreads/patches/bill_lear: First import - 3.23.10 mit-pthreads/patches/chris_demetriou: First import - 3.23.10 mit-pthreads/patches/mevans: First import - 3.23.10 mit-pthreads/patches/p153: First import - 3.23.10 mit-pthreads/patches/p155: First import - 3.23.10 mit-pthreads/pg++: First import - 3.23.10 mit-pthreads/pgcc: First import - 3.23.10 mit-pthreads/pthreads/GNUmakefile.inc: First import - 3.23.10 mit-pthreads/pthreads/Makefile.inc: First import - 3.23.10 mit-pthreads/pthreads/_exit.c: First import - 3.23.10 mit-pthreads/pthreads/cleanup.c: First import - 3.23.10 mit-pthreads/pthreads/cond.c: First import - 3.23.10 mit-pthreads/pthreads/condattr.c: First import - 3.23.10 mit-pthreads/pthreads/dump_state.c: First import - 3.23.10 mit-pthreads/pthreads/errno.c: First import - 3.23.10 mit-pthreads/pthreads/fd_pipe.c: First import - 3.23.10 mit-pthreads/pthreads/file.c: First import - 3.23.10 mit-pthreads/pthreads/globals.c: First import - 3.23.10 mit-pthreads/pthreads/info.c: First import - 3.23.10 mit-pthreads/pthreads/init.cc: First import - 3.23.10 mit-pthreads/pthreads/malloc.c: First import - 3.23.10 mit-pthreads/pthreads/mutex.c: First import - 3.23.10 mit-pthreads/pthreads/mutexattr.c: First import - 3.23.10 mit-pthreads/pthreads/panic.c: First import - 3.23.10 mit-pthreads/pthreads/prio_queue.c: First import - 3.23.10 mit-pthreads/pthreads/process.c: First import - 3.23.10 mit-pthreads/pthreads/pthread.c: First import - 3.23.10 mit-pthreads/pthreads/pthread_attr.c: First import - 3.23.10 mit-pthreads/pthreads/pthread_cancel.c: First import - 3.23.10 mit-pthreads/pthreads/pthread_detach.c: First import - 3.23.10 mit-pthreads/pthreads/pthread_init.c: First import - 3.23.10 mit-pthreads/pthreads/pthread_join.c: First import - 3.23.10 mit-pthreads/pthreads/pthread_kill.c: First import - 3.23.10 mit-pthreads/pthreads/pthread_once.c: First import - 3.23.10 mit-pthreads/pthreads/queue.c: First import - 3.23.10 mit-pthreads/pthreads/readv.c: First import - 3.23.10 mit-pthreads/pthreads/schedparam.c: First import - 3.23.10 mit-pthreads/pthreads/select.c: First import - 3.23.10 mit-pthreads/pthreads/sig.c: First import - 3.23.10 mit-pthreads/pthreads/sleep.c: First import - 3.23.10 mit-pthreads/pthreads/specific.c: First import - 3.23.10 mit-pthreads/pthreads/stat.c: First import - 3.23.10 mit-pthreads/pthreads/wait.c: First import - 3.23.10 mit-pthreads/pthreads/writev.c: First import - 3.23.10 mit-pthreads/scripts/GNUmakefile.inc: First import - 3.23.10 mit-pthreads/scripts/Makefile.inc: First import - 3.23.10 mit-pthreads/scripts/pgcc.sh: First import - 3.23.10 mit-pthreads/stdio/GNUmakefile.inc: First import - 3.23.10 mit-pthreads/stdio/Makefile.inc: First import - 3.23.10 mit-pthreads/stdio/README: First import - 3.23.10 mit-pthreads/stdio/clrerr.c: First import - 3.23.10 mit-pthreads/stdio/fclose.c: First import - 3.23.10 mit-pthreads/stdio/fdopen.c: First import - 3.23.10 mit-pthreads/stdio/feof.c: First import - 3.23.10 mit-pthreads/stdio/ferror.c: First import - 3.23.10 mit-pthreads/stdio/fflush.c: First import - 3.23.10 mit-pthreads/stdio/fgetc.c: First import - 3.23.10 mit-pthreads/stdio/fgetline.c: First import - 3.23.10 mit-pthreads/stdio/fgetpos.c: First import - 3.23.10 mit-pthreads/stdio/fgets.c: First import - 3.23.10 mit-pthreads/stdio/fileno.c: First import - 3.23.10 mit-pthreads/stdio/findfp.c: First import - 3.23.10 mit-pthreads/stdio/flags.c: First import - 3.23.10 mit-pthreads/stdio/floatio.h: First import - 3.23.10 mit-pthreads/stdio/fopen.c: First import - 3.23.10 mit-pthreads/stdio/fprintf.c: First import - 3.23.10 mit-pthreads/stdio/fpurge.c: First import - 3.23.10 mit-pthreads/stdio/fputc.c: First import - 3.23.10 mit-pthreads/stdio/fputs.c: First import - 3.23.10 mit-pthreads/stdio/fread.c: First import - 3.23.10 mit-pthreads/stdio/freopen.c: First import - 3.23.10 mit-pthreads/stdio/fscanf.c: First import - 3.23.10 mit-pthreads/stdio/fseek.c: First import - 3.23.10 mit-pthreads/stdio/fsetpos.c: First import - 3.23.10 mit-pthreads/stdio/ftell.c: First import - 3.23.10 mit-pthreads/stdio/funopen.c: First import - 3.23.10 mit-pthreads/stdio/fvwrite.c: First import - 3.23.10 mit-pthreads/stdio/fvwrite.h: First import - 3.23.10 mit-pthreads/stdio/fwalk.c: First import - 3.23.10 mit-pthreads/stdio/fwrite.c: First import - 3.23.10 mit-pthreads/stdio/getc.c: First import - 3.23.10 mit-pthreads/stdio/getc_unlocked.c: First import - 3.23.10 mit-pthreads/stdio/getchar.c: First import - 3.23.10 mit-pthreads/stdio/getchar_unlocked.c: First import - 3.23.10 mit-pthreads/stdio/gets.c: First import - 3.23.10 mit-pthreads/stdio/getw.c: First import - 3.23.10 mit-pthreads/stdio/glue.h: First import - 3.23.10 mit-pthreads/stdio/local.h: First import - 3.23.10 mit-pthreads/stdio/makebuf.c: First import - 3.23.10 mit-pthreads/stdio/mktemp.c: First import - 3.23.10 mit-pthreads/stdio/perror.c: First import - 3.23.10 mit-pthreads/stdio/printf.c: First import - 3.23.10 mit-pthreads/stdio/putc.c: First import - 3.23.10 mit-pthreads/stdio/putc_unlocked.c: First import - 3.23.10 mit-pthreads/stdio/putchar.c: First import - 3.23.10 mit-pthreads/stdio/putchar_unlocked.c: First import - 3.23.10 mit-pthreads/stdio/puts.c: First import - 3.23.10 mit-pthreads/stdio/putw.c: First import - 3.23.10 mit-pthreads/stdio/refill.c: First import - 3.23.10 mit-pthreads/stdio/remove.c: First import - 3.23.10 mit-pthreads/stdio/rewind.c: First import - 3.23.10 mit-pthreads/stdio/rget.c: First import - 3.23.10 mit-pthreads/stdio/scanf.c: First import - 3.23.10 mit-pthreads/stdio/setbuf.c: First import - 3.23.10 mit-pthreads/stdio/setbuffer.c: First import - 3.23.10 mit-pthreads/stdio/setvbuf.c: First import - 3.23.10 mit-pthreads/stdio/snprintf.c: First import - 3.23.10 mit-pthreads/stdio/sprintf.c: First import - 3.23.10 mit-pthreads/stdio/sscanf.c: First import - 3.23.10 mit-pthreads/stdio/stdio.c: First import - 3.23.10 mit-pthreads/stdio/strerror.c: First import - 3.23.10 mit-pthreads/stdio/tempnam.c: First import - 3.23.10 mit-pthreads/stdio/tmpfile.c: First import - 3.23.10 mit-pthreads/stdio/tmpnam.c: First import - 3.23.10 mit-pthreads/stdio/ungetc.c: First import - 3.23.10 mit-pthreads/stdio/vfprintf.c: First import - 3.23.10 mit-pthreads/stdio/vfscanf.c: First import - 3.23.10 mit-pthreads/stdio/vprintf.c: First import - 3.23.10 mit-pthreads/stdio/vscanf.c: First import - 3.23.10 mit-pthreads/stdio/vsnprintf.c: First import - 3.23.10 mit-pthreads/stdio/vsprintf.c: First import - 3.23.10 mit-pthreads/stdio/vsscanf.c: First import - 3.23.10 mit-pthreads/stdio/wbuf.c: First import - 3.23.10 mit-pthreads/stdio/wsetup.c: First import - 3.23.10 mit-pthreads/stdio/xprintf.c: First import - 3.23.10 mit-pthreads/stdlib/GNUmakefile.inc: First import - 3.23.10 mit-pthreads/stdlib/Makefile.inc: First import - 3.23.10 mit-pthreads/stdlib/abort.c: First import - 3.23.10 mit-pthreads/stdlib/atexit.h: First import - 3.23.10 mit-pthreads/stdlib/exit.c: First import - 3.23.10 mit-pthreads/stdlib/rand.c: First import - 3.23.10 mit-pthreads/stdlib/random.c: First import - 3.23.10 mit-pthreads/stdlib/strtod.c: First import - 3.23.10 mit-pthreads/stdlib/strtol.c: First import - 3.23.10 mit-pthreads/stdlib/strtoul.c: First import - 3.23.10 mit-pthreads/stdlib/system.c: First import - 3.23.10 mit-pthreads/string/GNUmakefile.inc: First import - 3.23.10 mit-pthreads/string/Makefile.inc: First import - 3.23.10 mit-pthreads/string/strtok.c: First import - 3.23.10 mit-pthreads/tests/Makefile.in: First import - 3.23.10 mit-pthreads/tests/README: First import - 3.23.10 mit-pthreads/tests/bench_fcntl.c: First import - 3.23.10 mit-pthreads/tests/bench_pipe.c: First import - 3.23.10 mit-pthreads/tests/bench_read.c: First import - 3.23.10 mit-pthreads/tests/p_bench_getpid.c: First import - 3.23.10 mit-pthreads/tests/p_bench_mutex.c: First import - 3.23.10 mit-pthreads/tests/p_bench_pthread_create.c: First import - 3.23.10 mit-pthreads/tests/p_bench_read.c: First import - 3.23.10 mit-pthreads/tests/p_bench_semaphore.c: First import - 3.23.10 mit-pthreads/tests/p_bench_yield.c: First import - 3.23.10 mit-pthreads/tests/test_create.c: First import - 3.23.10 mit-pthreads/tests/test_cwd.c: First import - 3.23.10 mit-pthreads/tests/test_execve.c: First import - 3.23.10 mit-pthreads/tests/test_fcntl.c: First import - 3.23.10 mit-pthreads/tests/test_fork.c: First import - 3.23.10 mit-pthreads/tests/test_netdb.c: First import - 3.23.10 mit-pthreads/tests/test_pause.c: First import - 3.23.10 mit-pthreads/tests/test_preemption.c: First import - 3.23.10 mit-pthreads/tests/test_preemption_float.c: First import - 3.23.10 mit-pthreads/tests/test_pthread_cond_timedwait.c: First import - 3.23.10 mit-pthreads/tests/test_pthread_join.c: First import - 3.23.10 mit-pthreads/tests/test_pthread_mutex.c: First import - 3.23.10 mit-pthreads/tests/test_pw.c: First import - 3.23.10 mit-pthreads/tests/test_readdir.c: First import - 3.23.10 mit-pthreads/tests/test_select.c: First import - 3.23.10 mit-pthreads/tests/test_setjmp.c: First import - 3.23.10 mit-pthreads/tests/test_sleep.c: First import - 3.23.10 mit-pthreads/tests/test_sock_1.c: First import - 3.23.10 mit-pthreads/tests/test_sock_2.c: First import - 3.23.10 mit-pthreads/tests/test_sock_2a.c: First import - 3.23.10 mit-pthreads/tests/test_stdio_1.c: First import - 3.23.10 mit-pthreads/tests/test_switch.c: First import - 3.23.10 mysys/COPYING.LIB: First import - 3.23.10 mysys/getopt.c: First import - 3.23.10 readline/COPYING: First import - 3.23.10 readline/INSTALL: First import - 3.23.10 readline/Makefile.am: First import - 3.23.10 readline/README: First import - 3.23.10 readline/ansi_stdlib.h: First import - 3.23.10 readline/bind.c: First import - 3.23.10 readline/callback.c: First import - 3.23.10 readline/chardefs.h: First import - 3.23.10 readline/configure.in: First import - 3.23.10 readline/configure: First import - 3.23.10 readline/display.c: First import - 3.23.10 readline/emacs_keymap.c: First import - 3.23.10 readline/funmap.c: First import - 3.23.10 readline/histexpand.c: First import - 3.23.10 readline/histfile.c: First import - 3.23.10 readline/histlib.h: First import - 3.23.10 readline/history.c: First import - 3.23.10 readline/history.h: First import - 3.23.10 readline/histsearch.c: First import - 3.23.10 readline/input.c: First import - 3.23.10 readline/isearch.c: First import - 3.23.10 readline/keymaps.c: First import - 3.23.10 readline/keymaps.h: First import - 3.23.10 readline/kill.c: First import - 3.23.10 readline/macro.c: First import - 3.23.10 readline/nls.c: First import - 3.23.10 readline/parens.c: First import - 3.23.10 readline/posixdir.h: First import - 3.23.10 readline/posixjmp.h: First import - 3.23.10 readline/posixstat.h: First import - 3.23.10 readline/readline.c: First import - 3.23.10 readline/readline.h: First import - 3.23.10 readline/rlconf.h: First import - 3.23.10 readline/rldefs.h: First import - 3.23.10 readline/rltty.c: First import - 3.23.10 readline/rltty.h: First import - 3.23.10 readline/rlwinsize.h: First import - 3.23.10 readline/search.c: First import - 3.23.10 readline/shell.c: First import - 3.23.10 readline/signals.c: First import - 3.23.10 readline/tcap.h: First import - 3.23.10 readline/terminal.c: First import - 3.23.10 readline/tilde.c: First import - 3.23.10 readline/tilde.h: First import - 3.23.10 readline/undo.c: First import - 3.23.10 readline/util.c: First import - 3.23.10 readline/vi_keymap.c: First import - 3.23.10 readline/vi_mode.c: First import - 3.23.10 readline/xmalloc.c: First import - 3.23.10 regex/CHANGES: First import - 3.23.10 regex/COPYRIGHT: First import - 3.23.10 regex/README: First import - 3.23.10 regex/WHATSNEW: First import - 3.23.10 regex/cclass.h: First import - 3.23.10 regex/cname.h: First import - 3.23.10 regex/debug.c: First import - 3.23.10 regex/debug.ih: First import - 3.23.10 regex/engine.c: First import - 3.23.10 regex/engine.ih: First import - 3.23.10 regex/main.ih: First import - 3.23.10 regex/regcomp.ih: First import - 3.23.10 regex/regerror.c: First import - 3.23.10 regex/regerror.ih: First import - 3.23.10 regex/regex.3: First import - 3.23.10 regex/regex.7: First import - 3.23.10 regex/regex.h: First import - 3.23.10 regex/regfree.c: First import - 3.23.10 regex/reginit.c: First import - 3.23.10 regex/split.c: First import - 3.23.10 regex/tests: First import - 3.23.10 scripts/msql2mysql.sh: First import - 3.23.10 scripts/mysql_fix_privilege_tables.sh: First import - 3.23.10 scripts/mysql_setpermission.sh: First import - 3.23.10 scripts/mysqlaccess.conf: First import - 3.23.10 scripts/mysqlbug.sh: First import - 3.23.10 sql-bench/Data/ATIS/aircraft.txt: First import - 3.23.10 sql-bench/Data/ATIS/airline.txt: First import - 3.23.10 sql-bench/Data/ATIS/airport.txt: First import - 3.23.10 sql-bench/Data/ATIS/airport_service.txt: First import - 3.23.10 sql-bench/Data/ATIS/city.txt: First import - 3.23.10 sql-bench/Data/ATIS/class_of_service.txt: First import - 3.23.10 sql-bench/Data/ATIS/code_description.txt: First import - 3.23.10 sql-bench/Data/ATIS/compound_class.txt: First import - 3.23.10 sql-bench/Data/ATIS/connect_leg.txt: First import - 3.23.10 sql-bench/Data/ATIS/connection.txt: First import - 3.23.10 sql-bench/Data/ATIS/date_day.txt: First import - 3.23.10 sql-bench/Data/ATIS/day_name.txt: First import - 3.23.10 sql-bench/Data/ATIS/dual_carrier.txt: First import - 3.23.10 sql-bench/Data/ATIS/fare.txt: First import - 3.23.10 sql-bench/Data/ATIS/flight.txt: First import - 3.23.10 sql-bench/Data/ATIS/flight_class.txt: First import - 3.23.10 sql-bench/Data/ATIS/flight_day.txt: First import - 3.23.10 sql-bench/Data/ATIS/flight_fare.txt: First import - 3.23.10 sql-bench/Data/ATIS/food_service.txt: First import - 3.23.10 sql-bench/Data/ATIS/ground_service.txt: First import - 3.23.10 sql-bench/Data/ATIS/month_name.txt: First import - 3.23.10 sql-bench/Data/ATIS/restrict_carrier.txt: First import - 3.23.10 sql-bench/Data/ATIS/restrict_class.txt: First import - 3.23.10 sql-bench/Data/ATIS/restriction.txt: First import - 3.23.10 sql-bench/Data/ATIS/state.txt: First import - 3.23.10 sql-bench/Data/ATIS/stop.txt: First import - 3.23.10 sql-bench/Data/ATIS/stop1.txt: First import - 3.23.10 sql-bench/Data/ATIS/time_interval.txt: First import - 3.23.10 sql-bench/Data/ATIS/time_zone.txt: First import - 3.23.10 sql-bench/Data/ATIS/transport.txt: First import - 3.23.10 sql-bench/Data/Wisconsin/onek.data: First import - 3.23.10 sql-bench/Data/Wisconsin/tenk.data: First import - 3.23.10 sql-bench/README: First import - 3.23.10 sql-bench/Results/ATIS-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/ATIS-AdabasD-Linux_2.0.35_i686-cmp-adabasd,mysql: First import - 3.23.10 sql-bench/Results/ATIS-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/ATIS-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/ATIS-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql-bench/Results/ATIS-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/ATIS-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/ATIS-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/ATIS-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/ATIS-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/ATIS-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/ATIS-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/ATIS-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/ATIS-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/ATIS-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/ATIS-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/ATIS-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/ATIS-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/ATIS-oracle_fast-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/ATIS-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/ATIS-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/ATIS-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/RUN-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/RUN-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/RUN-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/RUN-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql-bench/Results/RUN-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/RUN-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/RUN-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/RUN-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/RUN-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/RUN-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/RUN-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/RUN-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/RUN-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/RUN-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/RUN-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/RUN-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/RUN-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/RUN-oracle_fast-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/RUN-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/RUN-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/RUN-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/alter-table-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/alter-table-AdabasD-Linux_2.0.35_i686-cmp-adabasd,mysql: First import - 3.23.10 sql-bench/Results/alter-table-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/alter-table-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/alter-table-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql-bench/Results/alter-table-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/alter-table-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/alter-table-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/alter-table-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/alter-table-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/alter-table-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/alter-table-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/alter-table-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/alter-table-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/alter-table-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/alter-table-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/alter-table-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/alter-table-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/alter-table-oracle_fast-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/alter-table-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/alter-table-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/alter-table-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/big-tables-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/big-tables-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/big-tables-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/big-tables-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql-bench/Results/big-tables-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/big-tables-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/big-tables-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/big-tables-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/big-tables-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/big-tables-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/big-tables-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/big-tables-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/big-tables-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/big-tables-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/big-tables-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/big-tables-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/big-tables-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/big-tables-oracle_fast-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/big-tables-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/big-tables-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/big-tables-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/connect-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/connect-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/connect-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/connect-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql-bench/Results/connect-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/connect-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/connect-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/connect-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/connect-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/connect-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/connect-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/connect-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/connect-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/connect-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/connect-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/connect-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/connect-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/connect-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/connect-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/connect-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/create-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/create-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/create-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/create-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql-bench/Results/create-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/create-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/create-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/create-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/create-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/create-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/create-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/create-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/create-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/create-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/create-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/create-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/create-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/create-oracle_fast-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/create-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/create-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/insert-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql-bench/Results/select-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-HP_UX_B.10.20_9000_778: First import - 3.23.10 sql/md5.c: First import - 3.23.10 sql/share/norwegian-ny/.cvsignore: First import - 3.23.10 sql/share/norwegian/.cvsignore: First import - 3.23.10 stamp-h.in: First import - 3.23.10 strings/ChangeLog: First import - 3.23.10 strings/bfill.c: First import - 3.23.10 strings/bmove.c: First import - 3.23.10 strings/strend.c: First import - 3.23.10 strings/strstr.c: First import - 3.23.10 strings/strxnmov.c: First import - 3.23.10 tests/auto_increment.res: First import - 3.23.10 tests/auto_increment.tst: First import - 3.23.10 tests/function.res: First import - 3.23.10 tests/function.tst: First import - 3.23.10 tests/grant.res: First import - 3.23.10 tests/lock_test.res: First import - 3.23.10 tests/table_types.pl: First import - 3.23.10 tests/udf_test.res: First import - 3.23.10 tests/udf_test: First import - 3.23.10 sql-bench/Results-linux/ATIS-mysql-Linux_2.0.33_i586-cmp-access,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/ATIS-mysql-Linux_2.0.33_i586-cmp-ms-sql,mysql,sybase: ***MISSING WEAVE*** sql-bench/Results-linux/RUN-mysql-Linux_2.0.33_i586-cmp-access,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/RUN-mysql-Linux_2.0.33_i586-cmp-ms-sql,mysql,sybase: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-mysql-Linux_2.0.33_i586-cmp-access,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-mysql-Linux_2.0.33_i586-cmp-ms-sql,mysql,sybase: ***MISSING WEAVE*** sql-bench/Results-linux/connect-mysql-Linux_2.0.33_i586-cmp-access,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/connect-mysql-Linux_2.0.33_i586-cmp-ms-sql,mysql,sybase: ***MISSING WEAVE*** sql-bench/Results-linux/create-mysql-Linux_2.0.33_i586-cmp-access,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/create-mysql-Linux_2.0.33_i586-cmp-ms-sql,mysql,sybase: ***MISSING WEAVE*** sql-bench/Results-linux/insert-mysql-Linux_2.0.33_i586-cmp-access,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/insert-mysql-Linux_2.0.33_i586-cmp-ms-sql,mysql,sybase: ***MISSING WEAVE*** sql-bench/Results-linux/select-mysql-Linux_2.0.33_i586-cmp-access,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/select-mysql-Linux_2.0.33_i586-cmp-ms-sql,mysql,sybase: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-mysql-Linux_2.0.33_i586-cmp-access,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-mysql-Linux_2.0.33_i586-cmp-ms-sql,mysql,sybase: ***MISSING WEAVE*** sql-bench/Results-win32/ATIS-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/ATIS-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/ATIS-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/ATIS-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/ATIS-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/ATIS-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/ATIS-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/ATIS-sybase_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/RUN-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/RUN-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/RUN-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/RUN-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/RUN-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/RUN-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/RUN-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/RUN-sybase_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/alter-table-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/alter-table-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/alter-table-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/alter-table-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/alter-table-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/alter-table-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/alter-table-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/alter-table-sybase_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/big-tables-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/big-tables-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/big-tables-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/big-tables-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/big-tables-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/big-tables-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/big-tables-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/big-tables-sybase_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/connect-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/connect-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/connect-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/connect-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/connect-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/connect-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/connect-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/connect-sybase_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/create-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/create-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/create-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/create-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/create-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/create-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/create-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/create-sybase_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/insert-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/insert-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/insert-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/insert-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/insert-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/insert-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/insert-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/insert-sybase_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/select-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/select-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/select-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/select-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/select-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/select-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/select-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/wisconsin-db2_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/wisconsin-informix_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/wisconsin-ms-sql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/wisconsin-mysql-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/wisconsin-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/wisconsin-oracle_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results-win32/wisconsin-solid_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase: First import - 3.23.10 sql-bench/Results/create-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/insert-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/insert-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/insert-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/insert-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/insert-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/insert-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/insert-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/insert-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/insert-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/insert-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/insert-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/insert-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/insert-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/insert-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/insert-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/insert-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/insert-oracle_fast-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/insert-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/insert-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/insert-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/select-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/select-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/select-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/select-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/select-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/select-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/select-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/select-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/select-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/select-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/select-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/select-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/select-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/select-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/select-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/select-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/select-oracle_fast-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/select-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/select-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/select-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/wisconsin-Adabas-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/wisconsin-msql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-3.21-Linux_2.2.1_i686: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-Linux_2.0.35_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-Linux_2.2.10_i686: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-Linux_2.2.1_i686-cmp-adabas,mysql: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-SunOS_5.5.1_sun4u: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-SunOS_5.6_sun4m: ***MISSING WEAVE*** sql-bench/Results/wisconsin-mysql-SunOS_5.7_sun4m: First import - 3.23.10 sql-bench/Results/wisconsin-mysql-SunOS_5.7_sun4u: First import - 3.23.10 sql-bench/Results/wisconsin-mysql_3.21-Linux_2.0.35_i686: First import - 3.23.10 sql-bench/Results/wisconsin-mysql_fast-Linux_2.2.10_i686-cmp-msql,mysql: First import - 3.23.10 sql-bench/Results/wisconsin-mysql_odbc-win98: First import - 3.23.10 sql-bench/Results/wisconsin-oracle-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/wisconsin-oracle_fast-Linux_2.0.36_i686-cmp-mysql,oracle: First import - 3.23.10 sql-bench/Results/wisconsin-pg-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/wisconsin-pg_fast-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/Results/wisconsin-solid-Linux_2.0.36_i686-cmp-mysql,pg,solid: First import - 3.23.10 sql-bench/limits/Adabas.cfg: First import - 3.23.10 sql-bench/limits/Adabas.comment: First import - 3.23.10 sql-bench/limits/Informix.cfg: First import - 3.23.10 sql-bench/limits/Informix.comment: First import - 3.23.10 sql-bench/limits/access.comment: First import - 3.23.10 sql-bench/limits/access_odbc.cfg: First import - 3.23.10 sql-bench/limits/db2.cfg: First import - 3.23.10 sql-bench/limits/empress.cfg: First import - 3.23.10 sql-bench/limits/empress.comment: First import - 3.23.10 sql-bench/limits/ms-sql65.cfg: First import - 3.23.10 sql-bench/limits/msql.cfg: First import - 3.23.10 sql-bench/limits/mysql-3.22.cfg: First import - 3.23.10 sql-bench/limits/pg.comment: First import - 3.23.10 sql-bench/limits/solid-nt4.cfg: First import - 3.23.10 sql-bench/limits/solid.cfg: First import - 3.23.10 sql-bench/limits/sybase.cfg: First import - 3.23.10 support-files/binary-configure.sh: First import - 3.23.10 support-files/mysql-log-rotate.sh: First import - 3.23.10 mkinstalldirs: Update to 3.23.11 Docs/mysqld_error.txt: Update to 3.23.11 man/mysql.1: Update to 3.23.11 mysys/ChangeLog: Update to 3.23.11 scripts/mysqlaccess.sh: Update to 3.23.11 strings/Attic/ptr_cmp.c: Update to 3.23.11 dbug/dbug_analyze.c: Update for 3.23.12 dbug/doinstall.sh: Update for 3.23.12 dbug/install.sh: Update for 3.23.12 dbug/mklintlib.sh: Update for 3.23.12 dbug/qmake.cmd: Update for 3.23.12 dbug/vargs.h: Update for 3.23.12 isam/test_all.res: Update for 3.23.12 isam/test_all: Update for 3.23.12 myisam/NEWS: Update for 3.23.12 myisam/common_words: ***MISSING WEAVE*** myisam/mi_test_all.res: Update for 3.23.12 myisam/test_pack: Update for 3.23.12 scripts/safe_mysqld-watch.sh: Update for 3.23.12 sql/ha_hash.h: Update for 3.23.12 sql/nt_servc.h: Update for 3.23.12 strings/READ-ME: Update for 3.23.12 strings/bzero.c: Update for 3.23.12 strings/latin2.def: Update for 3.23.12 strings/memset.c: Update for 3.23.12 strings/strcat.c: Update for 3.23.12 strings/strchr.c: Update for 3.23.12 strings/strcmp.c: Update for 3.23.12 strings/string.doc: Update for 3.23.12 strings/strings-not-used.h: Update for 3.23.12 strings/strlen.c: Update for 3.23.12 strings/strrchr.c: Update for 3.23.12 strings/t_ctype.h: Update for 3.23.12 Build-tools/Do-create-perl-rpms: Initial checkin of MySQL build environment. Build-tools/Do-local-patch-file: Initial checkin of MySQL build environment. Build-tools/newest: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-01.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-02.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-03.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-04.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-05.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-06.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-07.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-08.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-09.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-10.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-11.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-12.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-13.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-14.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-15.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-16.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-17.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql-compatible.jpg: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql_anim-01.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql_anim-02.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql_anim-03.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql_anim-04.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql_anim-05.gif: Initial checkin of MySQL build environment. Docs/MySQL-logos/mysql_anim-06.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/afghanistan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/albania.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/algeria.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/andorra.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/angola.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/antartica.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/antigua-and-barbuda.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/argentina.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/armenia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/australia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/austria.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/azerbaijan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/bahamas.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/bahrein.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/bangladesh.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/barbados.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/belarus.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/belgium.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/belize.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/benin.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/bermuda.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/bhutan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/bolivia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/bosnia-and-herzegovina.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/botswana.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/brazil.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/brunei.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/bulgaria.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/burkina-faso.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/burma.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/burundi.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/cambodia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/cameroon.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/canada.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/cape-verde.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/central-african-republic.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/chad.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/chile.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/china.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/colombia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/comoros.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/congo.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/costa-rica.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/cote-d-ivoire.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/croatia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/cuba.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/cyprus.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/czech-republic.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/denmark-original-incorrect.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/denmark.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/djibouti.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/dominica.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/dominican-republic.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/ecuador.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/egypt.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/el-salvador.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/equatorial-guinea.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/eritrea.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/estonia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/ethiopia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/fiji.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/finland.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/france.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/gabon.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/gambia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/georgia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/germany.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/ghana.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/great-britain.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/greece.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/greenland.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/grenada.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/guatemala.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/guinea-bissau.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/guinea.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/guyana.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/haiti.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/honduras.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/hungary.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/iceland.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/india.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/indonesia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/iran.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/iraq.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/ireland.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/israel.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/italy.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/jamaica.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/japan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/jordan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/kazakhstan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/kenya.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/kiribati.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/kuwait.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/kyrgyzstan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/laos.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/latvia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/lebanon.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/lesotho.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/liberia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/libya.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/liechtenstein.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/lithuania.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/luxembourg.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/macedonia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/madagascar.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/malawi.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/malaysia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/maldives.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/mali.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/malta.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/marshall.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/mauritania.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/mauritius.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/mexico.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/micronesia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/moldova.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/monaco.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/mongolia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/morocco.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/mozambique.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/namibia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/nauru.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/nepal.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/netherlands.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/new-zealand.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/nicaragua.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/niger.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/nigeria.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/north-korea.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/norway.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/oman.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/pakistan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/panama.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/papua-new-guinea.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/paraguay.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/peru.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/philippines.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/poland.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/portugal.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/qatar.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/romania.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/russia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/rwanda.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/saint-kitts-and-nevis.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/saint-lucia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/samoa.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/sao-tome-and-principe.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/saudi-arabia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/senegal.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/seychelles.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/sierra-leone.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/singapore.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/slovakia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/slovenia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/solomon-islands.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/somalia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/south-africa.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/south-korea.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/spain.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/sri-lanka.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/sudan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/suriname.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/swaziland.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/sweden.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/sweden2.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/switzerland.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/syria.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/taiwan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/tajikistan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/tanzania.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/thailand.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/togo.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/tonga.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/trinidad-and-tobago.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/tunisia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/turkey.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/turkmenistan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/tuvalu.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/uganda.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/ukraine.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/united-arab-emirates.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/united-states-of-america.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/uruguay.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/usa.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/uzbekistan.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/vanuatu.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/venezuela.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/vietnam.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/vincent-and-grenadines.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/yemen.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/yugoslavia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/zaire.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/zambia.gif: Initial checkin of MySQL build environment. Docs/Raw-Flags/zimbabwe.gif: Initial checkin of MySQL build environment. Docs/Support/generate-flag-images: Initial checkin of MySQL build environment. Docs/Support/generate-mirror-listing.pl: Initial checkin of MySQL build environment. Docs/Support/generate-text-files.pl: Initial checkin of MySQL build environment. Docs/Support/make-makefile: Initial checkin of MySQL build environment. Docs/Support/texinfo.tex: Initial checkin of MySQL build environment. Docs/Translations/myodbc-br.texi: Initial checkin of MySQL build environment. man/.cvsignore: Initial checkin of MySQL build environment. mit-pthreads/include/pthread/config.h: Initial checkin of MySQL build environment. readline/.cvsignore: Initial checkin of MySQL build environment. sql/share/.cvsignore: Initial checkin of MySQL build environment. tests/.cvsignore: Initial checkin of MySQL build environment. libmysql/acconfig.h: ***MISSING WEAVE*** libmysql/acinclude.m4: Configure stuff for libmysql. libmysql/configure.in: Configure stuff for libmysql. mit-pthreads/.cvsignore: More work on initial build mit-pthreads/include/pthread/cond.h: Update to 3.23.12 mit-pthreads/machdep/engine-i386-linux-2.0.c: Update to 3.23.12 mit-pthreads/machdep/engine-i386-linux-2.0.h: Update to 3.23.12 mit-pthreads/machdep/posix-linux-2.0.h: Update to 3.23.12 mit-pthreads/machdep/unistd-i386-linux-2.0.h: Update to 3.23.12 sql/add_errmsg: Update to 3.23.12 sql/watchdog_mysqld: Update to 3.23.12 strings/Attic/memory.h: Update to 3.23.12 dbug/.cvsignore: Update to 3.23.12 heap/.cvsignore: Update to 3.23.12 merge/.cvsignore: Update to 3.23.12 mit-pthreads/bin/.cvsignore: Update to 3.23.12 mit-pthreads/bin/finger/.cvsignore: Update to 3.23.12 mit-pthreads/lib/.cvsignore: Update to 3.23.12 mit-pthreads/lib/libpthreadutil/.cvsignore: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/__math.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/__path.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/__signal.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/__stdio.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/__stdlib.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/__string.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/__time.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/cdefs.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/compat.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/dirent.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/errno.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/socket.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/socketcall.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/timers.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/uio.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/wait.h: Update to 3.23.12 mit-pthreads/tests/.cvsignore: Update to 3.23.12 myisammrg/.cvsignore: Update to 3.23.12 regex/.cvsignore: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/extra/bits/local_lim.h: Update to 3.23.12 mit-pthreads/machdep/linux-2.0/extra/bits/socket.h: Update to 3.23.12 vio/.cvsignore: Update for 3.23.12 vio/Vio.cc: Update for 3.23.12 vio/VioAcceptorFd.cc: Update for 3.23.12 vio/VioAcceptorFd.h: Update for 3.23.12 vio/VioConnectorFd.cc: Update for 3.23.12 vio/VioConnectorFd.h: Update for 3.23.12 vio/VioFd.cc: Update for 3.23.12 vio/VioFd.h: Update for 3.23.12 vio/VioPipe.cc: Update for 3.23.12 vio/VioSSL.cc: Update for 3.23.12 vio/VioSSL.h: Update for 3.23.12 vio/VioSSLAcceptorFd.cc: Update for 3.23.12 vio/VioSSLFactoriesFd.cc: Update for 3.23.12 vio/VioSSLFactoriesFd.h: Update for 3.23.12 vio/VioSocket.cc: Update for 3.23.12 vio/VioSocket.h: Update for 3.23.12 vio/version.cc: Update for 3.23.12 vio/vio-global.h: Update for 3.23.12 vio/vioelitexx.cc: Update for 3.23.12 vio/viotest-ssl.cc: Update for 3.23.12 vio/viotest-sslconnect.cc: Update for 3.23.12 vio/viotest.cc: Update for 3.23.12 vio/viotypes.h: Update for 3.23.12 strings/strxmov.c: Update to 3.23.12a sql/md5.h: Lots of patches for Alpha-Linux Docs/Images/empty.png: *** empty log message *** Docs/Images/flag-background.pnm: *** empty log message *** NEW-RPMS/.cvsignore: Changes for new build environment sql-bench/example.bat: Update for 3.23.12a sql-bench/pwd.bat: Update for 3.23.12a sql-bench/uname.bat: Update for 3.23.12a sql-bench/Results/Attic/ATIS-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results/Attic/RUN-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results/Attic/alter-table-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results/Attic/big-tables-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results/Attic/connect-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results/Attic/create-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results/Attic/insert-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results/Attic/select-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results/Attic/wisconsin-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results-linux/ATIS-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/ATIS-mysql-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/ATIS-mysql-Linux_dynamic: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/ATIS-mysql-Linux_pgcc: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/ATIS-mysql-Linux_static: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/ATIS-mysql_fast-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/ATIS-mysql_local_tcp-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/ATIS-mysql_new-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/RUN-mysql-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/RUN-mysql-Linux_dynamic: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/RUN-mysql-Linux_pgcc: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/RUN-mysql-Linux_static: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/RUN-mysql_fast-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/RUN-mysql_local_tcp-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/RUN-mysql_new-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/big-tables-mysql-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/big-tables-mysql-Linux_dynamic: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/big-tables-mysql-Linux_pgcc: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/big-tables-mysql-Linux_static: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/big-tables-mysql_fast-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/big-tables-mysql_local_tcp-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/big-tables-mysql_new-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/connect-mysql-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/connect-mysql-Linux_dynamic: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/connect-mysql-Linux_pgcc: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/connect-mysql-Linux_static: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/connect-mysql_fast-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/connect-mysql_local_tcp-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/connect-mysql_new-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/create-mysql-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/create-mysql-Linux_dynamic: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/create-mysql-Linux_pgcc: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/create-mysql-Linux_static: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/create-mysql_fast-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/create-mysql_local_tcp-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/create-mysql_new-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/insert-mysql-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/insert-mysql-Linux_dynamic: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/insert-mysql-Linux_pgcc: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/insert-mysql-Linux_static: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/insert-mysql_fast-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/insert-mysql_local_tcp-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/insert-mysql_new-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/select-mysql-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/select-mysql-Linux_dynamic: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/select-mysql-Linux_pgcc: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/select-mysql-Linux_static: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/select-mysql_fast-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/select-mysql_local_tcp-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/select-mysql_new-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/wisconsin-mysql-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/wisconsin-mysql-Linux_dynamic: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/wisconsin-mysql-Linux_pgcc: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/wisconsin-mysql-Linux_static: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/wisconsin-mysql_fast-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/wisconsin-mysql_local_tcp-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/Attic/wisconsin-mysql_new-Linux_2.0.33_i586: ***MISSING WEAVE*** sql-bench/Results-linux/alter-table-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results-linux/connect-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results-linux/insert-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results-linux/select-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/.cvsignore: Update of benchmarks sql-bench/Results-win32/ATIS-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/ATIS-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/RUN-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/RUN-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/alter-table-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/alter-table-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/big-tables-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/big-tables-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/connect-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/connect-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/create-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/create-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/insert-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/insert-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/select-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/select-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/wisconsin-access_odbc-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-win32/wisconsin-mysql-win98-cmp-access,mysql: Update of benchmarks sql-bench/Results-linux/RUN-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** sql-bench/Results-linux/create-mysql-Linux_2.2.12_20smp_i686: ***MISSING WEAVE*** Docs/Images/Attic/mysql5.gif: Second copy Docs/Images/Attic/html-fs.gif: Moved to web...icons Docs/Images/Attic/mysql-01.gif: Moved to web...icons Docs/Images/Attic/mysql-02.gif: Moved to web...icons Docs/Images/Attic/mysql-03.gif: Moved to web...icons Docs/Images/Attic/mysql-04.gif: Moved to web...icons Docs/Images/Attic/mysql-05.gif: Moved to web...icons Docs/Images/Attic/mysql-06.gif: Moved to web...icons Docs/Images/Attic/mysql-07.gif: Moved to web...icons Docs/Images/Attic/mysql-08.gif: Moved to web...icons Docs/Images/Attic/mysql-09.gif: Moved to web...icons Docs/Images/Attic/mysql-10.gif: Moved to web...icons Docs/Images/Attic/mysql-11.gif: Moved to web...icons Docs/Images/Attic/mysql-12.gif: Moved to web...icons Docs/Images/Attic/mysql-13.gif: Moved to web...icons Docs/Images/Attic/mysql-14.gif: Moved to web...icons Docs/Images/Attic/mysql-15.gif: Moved to web...icons Docs/Images/Attic/mysql-16.gif: Moved to web...icons Docs/Images/Attic/mysql-17.gif: Moved to web...icons Docs/Images/Attic/mysql-18.gif: Moved to web...icons Docs/Images/Attic/mysql-19.gif: Moved to web...icons Docs/Images/Attic/mysql-compatible.jpg: Moved to web...icons Docs/Images/Attic/mysql_anim-01.gif: Moved to web...icons Docs/Images/Attic/mysql_anim-02.gif: Moved to web...icons Docs/Images/Attic/mysql_anim-03.gif: Moved to web...icons Docs/Images/Attic/mysql_anim-04.gif: Moved to web...icons Docs/Images/Attic/mysql_anim-05.gif: Moved to web...icons Docs/Images/Attic/mysql_anim-06.gif: Moved to web...icons Docs/Images/Attic/powered-by-MySQL-transparent.gif: Moved to web...icons scripts/mysql_zap.sh: Fixes from the Debian maintainer Build-tools/Do-patch-file: Update at work myisam/TODO: Fixes for raid + other things regex/utils.h: Renamed some portability defines heap/make-ccc: First version isam/make-ccc: First version merge/make-ccc: First version myisam/make-ccc: First version myisammrg/make-ccc: First version mysys/make-ccc: First version regex/make-ccc: First version strings/make-ccc: First version sql/share/romanian/errmsg.sys: ***MISSING WEAVE*** Docs/manual-license-spanish.texi: Update to 3.23.13 BUILD/test-alpha-ccc: Bug patches from mailing list sql-bench/Results-win32/ATIS-mysql-win98: Bug patches from mailing list sql-bench/Results-win32/RUN-mysql-win98: Bug patches from mailing list sql-bench/Results-win32/alter-table-mysql-win98: Bug patches from mailing list sql-bench/Results-win32/big-tables-mysql-win98: Bug patches from mailing list sql-bench/Results-win32/connect-mysql-win98: Bug patches from mailing list sql-bench/Results-win32/create-mysql-win98: Bug patches from mailing list sql-bench/Results-win32/insert-mysql-win98: Bug patches from mailing list sql-bench/Results-win32/select-mysql-win98: Bug patches from mailing list sql-bench/Results-win32/wisconsin-mysql-win98: Bug patches from mailing list mit-pthreads/Changes-mysql: Updated for Linux mit-pthreads/config/config.h.in: Updated for Linux mit-pthreads/config/configure.in: Updated for Linux mit-pthreads/config/configure: Updated for Linux mit-pthreads/gen/ttyname.c: Updated for Linux mit-pthreads/machdep/syscall-i386-linux-2.0.S: Updated for Linux mit-pthreads/machdep/linux-2.0/__unistd.h: Updated for Linux mit-pthreads/net/Makefile.inc: Updated for Linux mit-pthreads/pthreads/fd.c: Updated for Linux mit-pthreads/pthreads/fd_kern.c: Updated for Linux mit-pthreads/pthreads/fd_sysv.c: Updated for Linux mit-pthreads/pthreads/signal.c: Updated for Linux mit-pthreads/pthreads/wrapper.c: Updated for Linux mit-pthreads/stdlib/getopt.c: Updated for Linux sql/share/charsets/cp1251.conf: Updates for 3.23.14 sql/share/charsets/croat.conf: Updates for 3.23.14 sql/share/charsets/danish.conf: Updates for 3.23.14 sql/share/charsets/dec8.conf: Updates for 3.23.14 sql/share/charsets/dos.conf: Updates for 3.23.14 sql/share/charsets/german1.conf: Updates for 3.23.14 sql/share/charsets/greek.conf: Updates for 3.23.14 sql/share/charsets/hebrew.conf: Updates for 3.23.14 sql/share/charsets/hp8.conf: Updates for 3.23.14 sql/share/charsets/hungarian.conf: Updates for 3.23.14 sql/share/charsets/koi8_ru.conf: Updates for 3.23.14 sql/share/charsets/koi8_ukr.conf: Updates for 3.23.14 sql/share/charsets/latin1.conf: Updates for 3.23.14 sql/share/charsets/latin2.conf: Updates for 3.23.14 sql/share/charsets/swe7.conf: Updates for 3.23.14 sql/share/charsets/usa7.conf: Updates for 3.23.14 sql/share/charsets/win1251.conf: Updates for 3.23.14 sql/share/charsets/win1251ukr.conf: Updates for 3.23.14 sql/Attic/mybinlogdump.cc: Fix for binary log include/Attic/m_ctype.h.in: Update for dynamic character sets strings/Attic/ct_init.c: Update for dynamic character sets strings/Attic/ctype-cp1251.c: Update for dynamic character sets strings/Attic/ctype-cp1257.c: Update for dynamic character sets strings/Attic/ctype-croat.c: Update for dynamic character sets strings/Attic/ctype-danish.c: Update for dynamic character sets strings/Attic/ctype-dec8.c: Update for dynamic character sets strings/Attic/ctype-dos.c: Update for dynamic character sets strings/Attic/ctype-estonia.c: Update for dynamic character sets strings/Attic/ctype-german1.c: Update for dynamic character sets strings/Attic/ctype-greek.c: Update for dynamic character sets strings/Attic/ctype-hebrew.c: Update for dynamic character sets strings/Attic/ctype-hp8.c: Update for dynamic character sets strings/Attic/ctype-hungarian.c: Update for dynamic character sets strings/Attic/ctype-koi8_ru.c: Update for dynamic character sets strings/Attic/ctype-koi8_ukr.c: Update for dynamic character sets strings/Attic/ctype-latin1.c: Update for dynamic character sets strings/Attic/ctype-latin2.c: Update for dynamic character sets strings/Attic/ctype-swe7.c: Update for dynamic character sets strings/Attic/ctype-usa7.c: Update for dynamic character sets strings/Attic/ctype-win1250.c: Update for dynamic character sets strings/Attic/ctype-win1251.c: Update for dynamic character sets strings/Attic/ctype-win1251ukr.c: Update for dynamic character sets mysys/.cvsignore: Update for dynamic character set handling client/Attic/libmysql.c: Update of new character sets. sql/share/charsets/Index: Update to 3.23.14 sql/share/charsets/README: Update to 3.23.14 sql/share/charsets/cp1257.conf: Update to 3.23.14 sql/share/charsets/estonia.conf: Update to 3.23.14 sql/share/charsets/win1250.conf: Update to 3.23.14 strings/.cvsignore: Update to 3.23.14 strings/Attic/bootstrap-ctype.c: Update to 3.23.14 strings/Attic/ctype.c.in: Update to 3.23.14 strings/ctype-ujis.c: Update to 3.23.14 BUILD/.cvsignore: Portability changes libmysql/.cvsignore: Portability changes mit-pthreads/GNUmakefile: Modifications to get MySQL 3.23.14 to build mit-pthreads/config.flags: ***MISSING WEAVE*** mit-pthreads/include/pthread/ac-types.h: Modifications to get MySQL 3.23.14 to build mit-pthreads/include/pthread/paths.h: Modifications to get MySQL 3.23.14 to build regex/main.c: Portability fixes sql/Attic/mini_client_errors.c: fixed up dependencies and symlinking in mini_client Build-tools/cvs-sanity-check: added a script to do a build from fresh CVS for sanity checking - make Tim, Tonu, and everybody else who has had problems with the stuff out of CVS not compiling happy include/t_ctype.h: Small updates by monty include/.cvsignore: Update to 3.23.15 include/mysql_version.h.in: Update to 3.23.15 isam/ChangeLog: Update to 3.23.15 sql-bench/limits/interbase.cfg: character sets patches + fix of order by sql-bench/Results-linux/ATIS-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results-linux/RUN-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results-linux/alter-table-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results-linux/create-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results-linux/insert-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results-linux/select-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** Docs/net_doc.txt: Fixes for Win32 sql/share/Makefile.am: Update at work to get MySQL to configure include/Attic/mysql_com.h.in: Update of benchmarks and other small stuff sql-bench/Results-linux/ATIS-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/ATIS-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/RUN-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/RUN-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/alter-table-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/alter-table-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/connect-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/connect-interbase-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results-linux/connect-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/create-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/create-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/insert-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/insert-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/select-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/select-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-interbase-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-mysql-Linux_2.2.14_5.0_i686-cmp-interbase,mysql: ***MISSING WEAVE*** sql-bench/limits/mimer.cfg: Update of benchmarks and other small stuff sql/Attic/mini_client.c: Update to get Berkeley db to work. sql/Attic/net_serv.c: Update to get Berkeley db to work. sql/Attic/lex_hash.h: lex_hash.h is a pain in the neck for cvs diff scripts/mysql_convert_table_format.sh: Update for 3.23.16 include/getopt.h: Update for 3.23.16 Docs/Support/.cvsignore: Update for build scripts/mysqlhotcopy.sh: Update for 3.23.16 Docs/Attic/myisam.doc: Mirror addition, Broken Image fix, renamed myisam.doc -> myisam.txt (because it's really text. :). Docs/myisam.txt: Mirror addition, Broken Image fix, renamed myisam.doc -> myisam.txt (because it's really text. :). sql-bench/ChangeLog: Updates for 3.23.17 tests/big_record.pl: Updates for 3.23.17 tests/export.pl: Updates for 3.23.17 tests/fork2_test.pl: Updates for 3.23.17 tests/fork3_test.pl: Updates for 3.23.17 tests/fork_test.pl: Updates for 3.23.17 tests/grant.pl: Updates for 3.23.17 tests/insert_and_repair.pl: Updates for 3.23.17 tests/lock_test.pl: Updates for 3.23.17 tests/pmail.pl: Updates for 3.23.17 sql/.cvsignore: Update for 3.23.17 sql-bench/Results/Attic/ATIS-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/ATIS-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/ATIS-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/ATIS-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/ATIS-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/RUN-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/RUN-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/RUN-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/RUN-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/RUN-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/alter-table-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/alter-table-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/alter-table-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/alter-table-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/alter-table-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/big-tables-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/big-tables-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/big-tables-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/big-tables-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/big-tables-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/connect-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/connect-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/connect-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/connect-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/connect-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/create-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/create-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/create-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/create-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/create-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/insert-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/insert-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/insert-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/insert-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/insert-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/select-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/select-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/select-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/select-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/select-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/wisconsin-mysql-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/wisconsin-mysql-Linux_2.2.1_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/wisconsin-mysql_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/wisconsin-pg-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/Attic/wisconsin-pg_fast-Linux_2.2.10_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/ATIS-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/RUN-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/alter-table-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/big-tables-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/connect-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/create-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/insert-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/select-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/wisconsin-pg-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** support-files/Attic/my-example.cnf.sh: Updates to 3.23.17 support-files/Attic/my-huge.cfg.sh: Update for 3.23.17 support-files/Attic/my-large.cfg.sh: Update for 3.23.17 support-files/Attic/my-medium.cfg.sh: Update for 3.23.17 support-files/Attic/my-small.cfg.sh: Update for 3.23.17 sql-bench/limits/pg.cfg: Updates to 3.23.17 support-files/my-small.cnf.sh: Updates to 3.23.17 dbug/dbug.c: update 3.23.17 for Monty mysys/getopt1.c: update 3.23.17 for Monty readline/complete.c: update 3.23.17 for Monty regex/regcomp.c: update 3.23.17 for Monty regex/regex2.h: update 3.23.17 for Monty regex/regexec.c: update 3.23.17 for Monty regex/regexp.c: update 3.23.17 for Monty sql-bench/Results/ATIS-mysql-win98: update 3.23.17 for Monty sql-bench/Results/RUN-mysql-win98: update 3.23.17 for Monty sql-bench/Results/alter-table-mysql-win98: update 3.23.17 for Monty sql-bench/Results/big-tables-mysql-win98: update 3.23.17 for Monty sql-bench/Results/connect-mysql-win98: update 3.23.17 for Monty sql-bench/Results/create-mysql-win98: update 3.23.17 for Monty sql-bench/Results/insert-mysql-win98: update 3.23.17 for Monty sql-bench/Results/select-mysql-win98: update 3.23.17 for Monty sql-bench/Results/wisconsin-mysql-win98: update 3.23.17 for Monty sql-bench/Results-linux/ATIS-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/alter-table-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/create-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/insert-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** tests/test_delayed_insert.pl: update 3.23.17 for Monty vio/Vio.h: update 3.23.17 for Monty vio/VioPipe.h: update 3.23.17 for Monty vio/violite.h: update 3.23.17 for Monty sql-bench/limits/access.cfg: Update for 3.23.17 sql-bench/limits/ms-sql.cfg: Update for 3.23.17 sql-bench/limits/oracle.cfg: Update for 3.23.17 BUILD/compile-alpha-ccc: Update to 3.23.18 BUILD/compile-alpha-debug: Update to 3.23.18 BUILD/compile-alpha: Update to 3.23.18 BUILD/compile-pentium-gcov: Update to 3.23.18 BUILD/compile-pentium-myodbc: Update to 3.23.18 BUILD/compile-pentium: Update to 3.23.18 BUILD/compile-solaris-sparc-purify: Update to 3.23.18 BUILD/compile-solaris-sparc: Update to 3.23.18 client/Attic/net.c: Update to 3.23.18 sql-bench/Results/ATIS-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results/RUN-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results/alter-table-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results/big-tables-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results/connect-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results/create-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results/insert-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results/select-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results/wisconsin-mysql-Linux_2.2.14_i686_xeon: Update to 3.23.18 sql-bench/Results-linux/RUN-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/connect-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/select-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** mysql-test/mybin/mysql-test_install_db: Initial checkin of mysql-test subdir. mysql-test/mysql-test-run: Quick commit before I checkout a new tree. Docs/Tutorial-MySQL-final.txt: Update for 3.23.19-beta Build-tools/Do-rpm: Fix of wrong CVS update sql-bench/Results/ATIS-mysql-NT_4.0: Fix of wrong CVS update sql-bench/Results/RUN-mysql-NT_4.0: Fix of wrong CVS update sql-bench/Results/alter-table-mysql-NT_4.0: Fix of wrong CVS update sql-bench/Results/big-tables-mysql-NT_4.0: Fix of wrong CVS update sql-bench/Results/connect-mysql-NT_4.0: Fix of wrong CVS update sql-bench/Results/create-mysql-NT_4.0: Fix of wrong CVS update sql-bench/Results/insert-mysql-NT_4.0: Fix of wrong CVS update sql-bench/Results/select-mysql-NT_4.0: Fix of wrong CVS update sql-bench/Results/wisconsin-mysql-NT_4.0: Fix of wrong CVS update acconfig.h: Change of copyright to GPL/LGPL client/.cvsignore: Change of copyright to GPL/LGPL client/completion_hash.h: Change of copyright to GPL/LGPL client/connect_test.c: Change of copyright to GPL/LGPL client/errmsg.c: Change of copyright to GPL/LGPL client/insert_test.c: Change of copyright to GPL/LGPL client/list_test.c: Change of copyright to GPL/LGPL client/my_readline.h: Change of copyright to GPL/LGPL client/password.c: Change of copyright to GPL/LGPL client/readline.cc: Change of copyright to GPL/LGPL client/select_test.c: Change of copyright to GPL/LGPL client/showdb_test.c: Change of copyright to GPL/LGPL client/sql_string.cc: Change of copyright to GPL/LGPL client/sql_string.h: Change of copyright to GPL/LGPL client/ssl_test.c: Change of copyright to GPL/LGPL client/thread_test.c: Change of copyright to GPL/LGPL client/violite.c: Change of copyright to GPL/LGPL dbug/Makefile.am: Change of copyright to GPL/LGPL extra/comp_err.c: Change of copyright to GPL/LGPL extra/perror.c: Change of copyright to GPL/LGPL extra/replace.c: Change of copyright to GPL/LGPL extra/resolveip.c: Change of copyright to GPL/LGPL heap/Makefile.am: Change of copyright to GPL/LGPL heap/_check.c: Change of copyright to GPL/LGPL heap/_rectest.c: Change of copyright to GPL/LGPL heap/heapdef.h: Change of copyright to GPL/LGPL heap/hp_block.c: Change of copyright to GPL/LGPL heap/hp_clear.c: Change of copyright to GPL/LGPL heap/hp_close.c: Change of copyright to GPL/LGPL heap/hp_create.c: Change of copyright to GPL/LGPL heap/hp_delete.c: Change of copyright to GPL/LGPL heap/hp_extra.c: Change of copyright to GPL/LGPL heap/hp_hash.c: Change of copyright to GPL/LGPL heap/hp_info.c: Change of copyright to GPL/LGPL heap/hp_open.c: Change of copyright to GPL/LGPL heap/hp_panic.c: Change of copyright to GPL/LGPL heap/hp_rename.c: Change of copyright to GPL/LGPL heap/hp_rfirst.c: Change of copyright to GPL/LGPL heap/hp_rlast.c: Change of copyright to GPL/LGPL heap/hp_rnext.c: Change of copyright to GPL/LGPL heap/hp_rprev.c: Change of copyright to GPL/LGPL heap/hp_rrnd.c: Change of copyright to GPL/LGPL heap/hp_rsame.c: Change of copyright to GPL/LGPL heap/hp_scan.c: Change of copyright to GPL/LGPL heap/hp_static.c: Change of copyright to GPL/LGPL heap/hp_test1.c: Change of copyright to GPL/LGPL heap/hp_test2.c: Change of copyright to GPL/LGPL heap/hp_update.c: Change of copyright to GPL/LGPL heap/hp_write.c: Change of copyright to GPL/LGPL include/dbug.h: Change of copyright to GPL/LGPL include/hash.h: Change of copyright to GPL/LGPL include/heap.h: Change of copyright to GPL/LGPL include/m_ctype.h: Change of copyright to GPL/LGPL include/m_string.h: Change of copyright to GPL/LGPL include/merge.h: Change of copyright to GPL/LGPL include/my_alarm.h: Change of copyright to GPL/LGPL include/my_dir.h: Change of copyright to GPL/LGPL include/my_list.h: Change of copyright to GPL/LGPL include/my_net.h: Change of copyright to GPL/LGPL include/my_no_pthread.h: Change of copyright to GPL/LGPL include/my_nosys.h: Change of copyright to GPL/LGPL include/my_pthread.h: Change of copyright to GPL/LGPL include/my_sys.h: Change of copyright to GPL/LGPL include/my_tree.h: Change of copyright to GPL/LGPL include/myisammrg.h: Change of copyright to GPL/LGPL include/myisampack.h: Change of copyright to GPL/LGPL include/mysys_err.h: Change of copyright to GPL/LGPL include/nisam.h: Change of copyright to GPL/LGPL include/queues.h: Change of copyright to GPL/LGPL include/raid.h: Change of copyright to GPL/LGPL include/sslopt-case.h: Change of copyright to GPL/LGPL include/sslopt-longopts.h: Change of copyright to GPL/LGPL include/sslopt-usage.h: Change of copyright to GPL/LGPL include/sslopt-vars.h: Change of copyright to GPL/LGPL include/thr_alarm.h: Change of copyright to GPL/LGPL include/thr_lock.h: Change of copyright to GPL/LGPL include/violite.h: Change of copyright to GPL/LGPL isam/Makefile.am: Change of copyright to GPL/LGPL isam/_cache.c: Change of copyright to GPL/LGPL isam/_dynrec.c: Change of copyright to GPL/LGPL isam/_key.c: Change of copyright to GPL/LGPL isam/_locking.c: Change of copyright to GPL/LGPL isam/_packrec.c: Change of copyright to GPL/LGPL isam/_page.c: Change of copyright to GPL/LGPL isam/_search.c: Change of copyright to GPL/LGPL isam/_statrec.c: Change of copyright to GPL/LGPL isam/changed.c: Change of copyright to GPL/LGPL isam/close.c: Change of copyright to GPL/LGPL isam/create.c: Change of copyright to GPL/LGPL isam/delete.c: Change of copyright to GPL/LGPL isam/extra.c: Change of copyright to GPL/LGPL isam/isamchk.c: Change of copyright to GPL/LGPL isam/isamlog.c: Change of copyright to GPL/LGPL isam/log.c: Change of copyright to GPL/LGPL isam/open.c: Change of copyright to GPL/LGPL isam/pack_isam.c: Change of copyright to GPL/LGPL isam/panic.c: Change of copyright to GPL/LGPL isam/range.c: Change of copyright to GPL/LGPL isam/rfirst.c: Change of copyright to GPL/LGPL isam/rkey.c: Change of copyright to GPL/LGPL isam/rlast.c: Change of copyright to GPL/LGPL isam/rnext.c: Change of copyright to GPL/LGPL isam/rprev.c: Change of copyright to GPL/LGPL isam/rrnd.c: Change of copyright to GPL/LGPL isam/rsame.c: Change of copyright to GPL/LGPL isam/rsamepos.c: Change of copyright to GPL/LGPL isam/sort.c: Change of copyright to GPL/LGPL isam/static.c: Change of copyright to GPL/LGPL isam/test1.c: Change of copyright to GPL/LGPL isam/test3.c: Change of copyright to GPL/LGPL libmysql/Makefile.am: Change of copyright to GPL/LGPL libmysql/conf_to_src.c: Change of copyright to GPL/LGPL libmysql/dll.c: Change of copyright to GPL/LGPL libmysql/get_password.c: Change of copyright to GPL/LGPL libmysql/password.c: Change of copyright to GPL/LGPL libmysql/violite.c: Change of copyright to GPL/LGPL man/Makefile.am: Change of copyright to GPL/LGPL merge/Makefile.am: Change of copyright to GPL/LGPL merge/_locking.c: Change of copyright to GPL/LGPL merge/close.c: Change of copyright to GPL/LGPL merge/create.c: Change of copyright to GPL/LGPL merge/delete.c: Change of copyright to GPL/LGPL merge/extra.c: Change of copyright to GPL/LGPL merge/info.c: Change of copyright to GPL/LGPL merge/mrgdef.h: Change of copyright to GPL/LGPL merge/open.c: Change of copyright to GPL/LGPL merge/panic.c: Change of copyright to GPL/LGPL merge/rrnd.c: Change of copyright to GPL/LGPL merge/rsame.c: Change of copyright to GPL/LGPL merge/static.c: Change of copyright to GPL/LGPL merge/update.c: Change of copyright to GPL/LGPL myisam/ft_eval.c: Change of copyright to GPL/LGPL myisam/ft_eval.h: Change of copyright to GPL/LGPL myisam/ft_parser.c: Change of copyright to GPL/LGPL myisam/ft_static.c: Change of copyright to GPL/LGPL myisam/ft_stem.c: Change of copyright to GPL/LGPL myisam/ft_stopwords.c: Change of copyright to GPL/LGPL myisam/ft_test1.c: Change of copyright to GPL/LGPL myisam/ft_test1.h: Change of copyright to GPL/LGPL myisam/ftdefs.h: Change of copyright to GPL/LGPL myisam/fulltext.h: Change of copyright to GPL/LGPL myisam/mi_cache.c: Change of copyright to GPL/LGPL myisam/mi_changed.c: Change of copyright to GPL/LGPL myisam/mi_checksum.c: Change of copyright to GPL/LGPL myisam/mi_dbug.c: Change of copyright to GPL/LGPL myisam/mi_delete_all.c: Change of copyright to GPL/LGPL myisam/mi_delete_table.c: Change of copyright to GPL/LGPL myisam/mi_dynrec.c: Change of copyright to GPL/LGPL myisam/mi_info.c: Change of copyright to GPL/LGPL myisam/mi_key.c: Change of copyright to GPL/LGPL myisam/mi_packrec.c: Change of copyright to GPL/LGPL myisam/mi_page.c: Change of copyright to GPL/LGPL myisam/mi_range.c: Change of copyright to GPL/LGPL myisam/mi_rename.c: Change of copyright to GPL/LGPL myisam/mi_rfirst.c: Change of copyright to GPL/LGPL myisam/mi_rkey.c: Change of copyright to GPL/LGPL myisam/mi_rlast.c: Change of copyright to GPL/LGPL myisam/mi_rnext.c: Change of copyright to GPL/LGPL myisam/mi_rprev.c: Change of copyright to GPL/LGPL myisam/mi_rrnd.c: Change of copyright to GPL/LGPL myisam/mi_rsame.c: Change of copyright to GPL/LGPL myisam/mi_rsamepos.c: Change of copyright to GPL/LGPL myisam/mi_scan.c: Change of copyright to GPL/LGPL myisam/mi_static.c: Change of copyright to GPL/LGPL myisam/mi_statrec.c: Change of copyright to GPL/LGPL myisam/mi_test1.c: Change of copyright to GPL/LGPL myisam/mi_test2.c: Change of copyright to GPL/LGPL myisam/mi_test3.c: Change of copyright to GPL/LGPL myisam/mi_unique.c: Change of copyright to GPL/LGPL myisam/myisamlog.c: Change of copyright to GPL/LGPL myisam/sort.c: Change of copyright to GPL/LGPL myisammrg/Makefile.am: Change of copyright to GPL/LGPL myisammrg/mymrgdef.h: Change of copyright to GPL/LGPL myisammrg/myrg_close.c: Change of copyright to GPL/LGPL myisammrg/myrg_create.c: Change of copyright to GPL/LGPL myisammrg/myrg_delete.c: Change of copyright to GPL/LGPL myisammrg/myrg_extra.c: Change of copyright to GPL/LGPL myisammrg/myrg_info.c: Change of copyright to GPL/LGPL myisammrg/myrg_locking.c: Change of copyright to GPL/LGPL myisammrg/myrg_open.c: Change of copyright to GPL/LGPL myisammrg/myrg_panic.c: Change of copyright to GPL/LGPL myisammrg/myrg_rrnd.c: Change of copyright to GPL/LGPL myisammrg/myrg_rsame.c: Change of copyright to GPL/LGPL myisammrg/myrg_static.c: Change of copyright to GPL/LGPL myisammrg/myrg_update.c: Change of copyright to GPL/LGPL mysys/Makefile.am: Change of copyright to GPL/LGPL mysys/array.c: Change of copyright to GPL/LGPL mysys/charset.c: Change of copyright to GPL/LGPL mysys/checksum.c: Change of copyright to GPL/LGPL mysys/default.c: Change of copyright to GPL/LGPL mysys/errors.c: Change of copyright to GPL/LGPL mysys/getvar.c: Change of copyright to GPL/LGPL mysys/hash.c: Change of copyright to GPL/LGPL mysys/list.c: Change of copyright to GPL/LGPL mysys/make-conf.c: Change of copyright to GPL/LGPL mysys/mf_brkhant.c: Change of copyright to GPL/LGPL mysys/mf_cache.c: Change of copyright to GPL/LGPL mysys/mf_casecnv.c: Change of copyright to GPL/LGPL mysys/mf_dirname.c: Change of copyright to GPL/LGPL mysys/mf_fn_ext.c: Change of copyright to GPL/LGPL mysys/mf_format.c: Change of copyright to GPL/LGPL mysys/mf_getdate.c: Change of copyright to GPL/LGPL mysys/mf_iocache.c: Change of copyright to GPL/LGPL mysys/mf_keycache.c: Change of copyright to GPL/LGPL mysys/mf_loadpath.c: Change of copyright to GPL/LGPL mysys/mf_pack2.c: Change of copyright to GPL/LGPL mysys/mf_path.c: Change of copyright to GPL/LGPL mysys/mf_qsort.c: Change of copyright to GPL/LGPL mysys/mf_qsort2.c: Change of copyright to GPL/LGPL mysys/mf_radix.c: Change of copyright to GPL/LGPL mysys/mf_reccache.c: ***MISSING WEAVE*** mysys/mf_same.c: Change of copyright to GPL/LGPL mysys/mf_sleep.c: Change of copyright to GPL/LGPL mysys/mf_sort.c: Change of copyright to GPL/LGPL mysys/mf_soundex.c: Change of copyright to GPL/LGPL mysys/mf_stripp.c: Change of copyright to GPL/LGPL mysys/mf_unixpath.c: Change of copyright to GPL/LGPL mysys/mf_util.c: Change of copyright to GPL/LGPL mysys/mf_wcomp.c: Change of copyright to GPL/LGPL mysys/mf_wfile.c: Change of copyright to GPL/LGPL mysys/mulalloc.c: Change of copyright to GPL/LGPL mysys/my_alarm.c: Change of copyright to GPL/LGPL mysys/my_alloc.c: Change of copyright to GPL/LGPL mysys/my_append.c: Change of copyright to GPL/LGPL mysys/my_chsize.c: Change of copyright to GPL/LGPL mysys/my_clock.c: Change of copyright to GPL/LGPL mysys/my_compress.c: Change of copyright to GPL/LGPL mysys/my_copy.c: Change of copyright to GPL/LGPL mysys/my_create.c: Change of copyright to GPL/LGPL mysys/my_delete.c: Change of copyright to GPL/LGPL mysys/my_div.c: Change of copyright to GPL/LGPL mysys/my_error.c: Change of copyright to GPL/LGPL mysys/my_fopen.c: Change of copyright to GPL/LGPL mysys/my_fstream.c: Change of copyright to GPL/LGPL mysys/my_getwd.c: Change of copyright to GPL/LGPL mysys/my_init.c: Change of copyright to GPL/LGPL mysys/my_lib.c: Change of copyright to GPL/LGPL mysys/my_lock.c: Change of copyright to GPL/LGPL mysys/my_lockmem.c: Change of copyright to GPL/LGPL mysys/my_lread.c: Change of copyright to GPL/LGPL mysys/my_lwrite.c: Change of copyright to GPL/LGPL mysys/my_malloc.c: Change of copyright to GPL/LGPL mysys/my_messnc.c: Change of copyright to GPL/LGPL mysys/my_mkdir.c: Change of copyright to GPL/LGPL mysys/my_net.c: Change of copyright to GPL/LGPL mysys/my_once.c: Change of copyright to GPL/LGPL mysys/my_open.c: Change of copyright to GPL/LGPL mysys/my_pread.c: Change of copyright to GPL/LGPL mysys/my_pthread.c: Change of copyright to GPL/LGPL mysys/my_quick.c: Change of copyright to GPL/LGPL mysys/my_read.c: Change of copyright to GPL/LGPL mysys/my_realloc.c: Change of copyright to GPL/LGPL mysys/my_redel.c: Change of copyright to GPL/LGPL mysys/my_rename.c: Change of copyright to GPL/LGPL mysys/my_seek.c: Change of copyright to GPL/LGPL mysys/my_static.c: Change of copyright to GPL/LGPL mysys/my_static.h: Change of copyright to GPL/LGPL mysys/my_tempnam.c: Change of copyright to GPL/LGPL mysys/my_vsnprintf.c: Change of copyright to GPL/LGPL mysys/my_wincond.c: Change of copyright to GPL/LGPL mysys/my_winthread.c: Change of copyright to GPL/LGPL mysys/my_write.c: Change of copyright to GPL/LGPL mysys/mysys_priv.h: Change of copyright to GPL/LGPL mysys/ptr_cmp.c: Change of copyright to GPL/LGPL mysys/queues.c: Change of copyright to GPL/LGPL mysys/raid.cc: Change of copyright to GPL/LGPL mysys/safemalloc.c: Change of copyright to GPL/LGPL mysys/string.c: Change of copyright to GPL/LGPL mysys/test_charset.c: Change of copyright to GPL/LGPL mysys/test_dir.c: Change of copyright to GPL/LGPL mysys/test_fn.c: Change of copyright to GPL/LGPL mysys/test_vsnprintf.c: Change of copyright to GPL/LGPL mysys/testhash.c: Change of copyright to GPL/LGPL mysys/thr_alarm.c: Change of copyright to GPL/LGPL mysys/thr_lock.c: Change of copyright to GPL/LGPL mysys/thr_mutex.c: Change of copyright to GPL/LGPL mysys/thr_rwlock.c: Change of copyright to GPL/LGPL mysys/tree.c: Change of copyright to GPL/LGPL mysys/typelib.c: Change of copyright to GPL/LGPL regex/Makefile.am: Change of copyright to GPL/LGPL sql/cache_manager.cc: Change of copyright to GPL/LGPL sql/cache_manager.h: Change of copyright to GPL/LGPL sql/convert.cc: Change of copyright to GPL/LGPL sql/custom_conf.h: Change of copyright to GPL/LGPL sql/derror.cc: Change of copyright to GPL/LGPL sql/field_conv.cc: Change of copyright to GPL/LGPL sql/frm_crypt.cc: Change of copyright to GPL/LGPL sql/ha_heap.cc: Change of copyright to GPL/LGPL sql/ha_heap.h: Change of copyright to GPL/LGPL sql/ha_isam.cc: Change of copyright to GPL/LGPL sql/ha_isammrg.cc: Change of copyright to GPL/LGPL sql/hash_filo.cc: Change of copyright to GPL/LGPL sql/hash_filo.h: Change of copyright to GPL/LGPL sql/hostname.cc: Change of copyright to GPL/LGPL sql/init.cc: Change of copyright to GPL/LGPL sql/item_buff.cc: Change of copyright to GPL/LGPL sql/item_cmpfunc.h: Change of copyright to GPL/LGPL sql/item_create.cc: Change of copyright to GPL/LGPL sql/item_create.h: Change of copyright to GPL/LGPL sql/item_strfunc.cc: Change of copyright to GPL/LGPL sql/item_strfunc.h: Change of copyright to GPL/LGPL sql/item_sum.cc: Change of copyright to GPL/LGPL sql/item_sum.h: Change of copyright to GPL/LGPL sql/item_uniq.cc: Change of copyright to GPL/LGPL sql/item_uniq.h: Change of copyright to GPL/LGPL sql/key.cc: Change of copyright to GPL/LGPL sql/lex_symbol.h: Change of copyright to GPL/LGPL sql/lock.cc: Change of copyright to GPL/LGPL sql/matherr.c: Change of copyright to GPL/LGPL sql/mf_iocache.cc: Change of copyright to GPL/LGPL sql/mini_client.h: Change of copyright to GPL/LGPL sql/my_lock.c: Change of copyright to GPL/LGPL sql/opt_sum.cc: Change of copyright to GPL/LGPL sql/password.c: Change of copyright to GPL/LGPL sql/procedure.cc: Change of copyright to GPL/LGPL sql/procedure.h: Change of copyright to GPL/LGPL sql/sql_acl.h: Change of copyright to GPL/LGPL sql/sql_analyse.cc: Change of copyright to GPL/LGPL sql/sql_cache.cc: Change of copyright to GPL/LGPL sql/sql_crypt.cc: Change of copyright to GPL/LGPL sql/sql_crypt.h: Change of copyright to GPL/LGPL sql/sql_list.cc: Change of copyright to GPL/LGPL sql/sql_list.h: Change of copyright to GPL/LGPL sql/sql_map.cc: Change of copyright to GPL/LGPL sql/sql_map.h: Change of copyright to GPL/LGPL sql/sql_string.h: Change of copyright to GPL/LGPL sql/sql_test.cc: Change of copyright to GPL/LGPL sql/sql_udf.cc: Change of copyright to GPL/LGPL sql/sql_udf.h: Change of copyright to GPL/LGPL sql/thr_malloc.cc: Change of copyright to GPL/LGPL sql/udf_example.cc: Change of copyright to GPL/LGPL sql/unireg.cc: Change of copyright to GPL/LGPL sql/unireg.h: Change of copyright to GPL/LGPL sql/violite.c: Change of copyright to GPL/LGPL sql-bench/Makefile.am: Change of copyright to GPL/LGPL sql-bench/bench-init.pl.sh: Change of copyright to GPL/LGPL sql-bench/copy-db.sh: Change of copyright to GPL/LGPL sql-bench/run-all-tests.sh: Change of copyright to GPL/LGPL sql-bench/server-cfg.sh: Change of copyright to GPL/LGPL sql-bench/test-ATIS.sh: Change of copyright to GPL/LGPL sql-bench/test-alter-table.sh: Change of copyright to GPL/LGPL sql-bench/test-big-tables.sh: Change of copyright to GPL/LGPL sql-bench/test-connect.sh: Change of copyright to GPL/LGPL sql-bench/test-create.sh: Change of copyright to GPL/LGPL sql-bench/test-insert.sh: Change of copyright to GPL/LGPL sql-bench/test-select.sh: Change of copyright to GPL/LGPL sql-bench/test-wisconsin.sh: Change of copyright to GPL/LGPL sql-bench/Results/ATIS-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/ATIS-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/ATIS-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/ATIS-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results/RUN-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/RUN-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/RUN-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/RUN-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results/alter-table-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/alter-table-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/alter-table-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/alter-table-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results/big-tables-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/big-tables-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/big-tables-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/big-tables-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results/connect-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/connect-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/connect-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/connect-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results/create-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/create-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/create-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/create-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results/insert-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/insert-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/insert-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/select-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/select-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/select-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/wisconsin-mysql-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/wisconsin-mysql_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** sql-bench/Results/wisconsin-pg_fast-Linux_2.2.14_5.0_i686-cmp-mysql,pg: ***MISSING WEAVE*** strings/Makefile.am: Change of copyright to GPL/LGPL strings/README: Change of copyright to GPL/LGPL strings/atof.c: Change of copyright to GPL/LGPL strings/bchange.c: Change of copyright to GPL/LGPL strings/bcmp.c: Change of copyright to GPL/LGPL strings/bcopy-duff.c: Change of copyright to GPL/LGPL strings/bmove512.c: Change of copyright to GPL/LGPL strings/bmove_upp-sparc.s: Change of copyright to GPL/LGPL strings/bmove_upp.c: Change of copyright to GPL/LGPL strings/conf_to_src.c: Change of copyright to GPL/LGPL strings/ctype-big5.c: Change of copyright to GPL/LGPL strings/ctype-euc_kr.c: Change of copyright to GPL/LGPL strings/ctype-gb2312.c: Change of copyright to GPL/LGPL strings/ctype-sjis.c: Change of copyright to GPL/LGPL strings/ctype.c: Change of copyright to GPL/LGPL strings/do_ctype.c: Change of copyright to GPL/LGPL strings/int2str.c: Change of copyright to GPL/LGPL strings/is_prefix.c: Change of copyright to GPL/LGPL strings/llstr.c: Change of copyright to GPL/LGPL strings/longlong2str-x86.s: Change of copyright to GPL/LGPL strings/longlong2str.c: Change of copyright to GPL/LGPL strings/macros.asm: Change of copyright to GPL/LGPL strings/memcmp.c: Change of copyright to GPL/LGPL strings/memcpy.c: Change of copyright to GPL/LGPL strings/ptr_cmp.asm: Change of copyright to GPL/LGPL strings/str2int.c: Change of copyright to GPL/LGPL strings/str_test.c: Change of copyright to GPL/LGPL strings/strappend-sparc.s: Change of copyright to GPL/LGPL strings/strappend.c: Change of copyright to GPL/LGPL strings/strcend.c: Change of copyright to GPL/LGPL strings/strcont.c: Change of copyright to GPL/LGPL strings/strend-sparc.s: Change of copyright to GPL/LGPL strings/strfill.c: Change of copyright to GPL/LGPL strings/strings-x86.s: Change of copyright to GPL/LGPL strings/strings.asm: Change of copyright to GPL/LGPL strings/strinstr-sparc.s: Change of copyright to GPL/LGPL strings/strinstr.c: Change of copyright to GPL/LGPL strings/strmake-sparc.s: Change of copyright to GPL/LGPL strings/strmake.c: Change of copyright to GPL/LGPL strings/strmov-sparc.s: Change of copyright to GPL/LGPL strings/strmov.c: Change of copyright to GPL/LGPL strings/strnmov-sparc.s: Change of copyright to GPL/LGPL strings/strnmov.c: Change of copyright to GPL/LGPL strings/strstr-sparc.s: Change of copyright to GPL/LGPL strings/strto.c: Change of copyright to GPL/LGPL strings/strtol.c: Change of copyright to GPL/LGPL strings/strtoll.c: Change of copyright to GPL/LGPL strings/strtoul.c: Change of copyright to GPL/LGPL strings/strtoull.c: Change of copyright to GPL/LGPL strings/strxmov-sparc.s: Change of copyright to GPL/LGPL strings/strxmov.asm: Change of copyright to GPL/LGPL strings/udiv.c: Change of copyright to GPL/LGPL support-files/Makefile.am: Change of copyright to GPL/LGPL tests/Makefile.am: Change of copyright to GPL/LGPL vio/Makefile.am: Change of copyright to GPL/LGPL isam/.cvsignore: Updates for 3.23.19 myisam/.cvsignore: Updates for 3.23.19 sql-bench/Results/insert-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results/select-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql-bench/Results/wisconsin-pg_fast-Linux_2.2.14_5.0_i686: ***MISSING WEAVE*** sql/sql_analyse.h: Fix bug when memory wasn't freed sql/mysqlbinlog.cc: Small fixes sql/share/romanian/errmsg.txt: ***MISSING WEAVE*** include/mysql_com.h: Replication update/LOAD TABLE FROM MASTER + other fixes client/mysql-test.c: ***MISSING WEAVE*** myisam/Attic/ft_global.h: This file is now in include/ extra/Attic/print_defaults.c: Updates for text search + ORDER BY extra/Makefile.am: Updates for text search + ORDER BY extra/my_print_defaults.c: Updates for text search + ORDER BY include/mysqld_error.h: Updates for text search + ORDER BY sql/item_cmpfunc.cc: Updates for text search + ORDER BY sql/opt_range.h: Updates for text search + ORDER BY sql/sql_lex.cc: Updates for text search + ORDER BY sql-bench/crash-me.sh: Updates for text search + ORDER BY sql-bench/limits/mysql.cfg: Updates for text search + ORDER BY sql/share/czech/errmsg.sys: Updates for text search + ORDER BY sql/share/czech/errmsg.txt: Updates for text search + ORDER BY sql/share/danish/errmsg.sys: Updates for text search + ORDER BY sql/share/danish/errmsg.txt: Updates for text search + ORDER BY sql/share/dutch/errmsg.sys: Updates for text search + ORDER BY sql/share/dutch/errmsg.txt: Updates for text search + ORDER BY sql/share/english/errmsg.sys: Updates for text search + ORDER BY sql/share/english/errmsg.txt: Updates for text search + ORDER BY sql/share/estonia/errmsg.sys: Updates for text search + ORDER BY sql/share/estonia/errmsg.txt: Updates for text search + ORDER BY sql/share/french/errmsg.sys: Updates for text search + ORDER BY sql/share/french/errmsg.txt: Updates for text search + ORDER BY sql/share/german/errmsg.sys: Updates for text search + ORDER BY sql/share/german/errmsg.txt: Updates for text search + ORDER BY sql/share/greek/errmsg.sys: Updates for text search + ORDER BY sql/share/greek/errmsg.txt: Updates for text search + ORDER BY sql/share/hungarian/errmsg.sys: Updates for text search + ORDER BY sql/share/hungarian/errmsg.txt: Updates for text search + ORDER BY sql/share/japanese/errmsg.sys: Updates for text search + ORDER BY sql/share/japanese/errmsg.txt: Updates for text search + ORDER BY sql/share/korean/errmsg.sys: Updates for text search + ORDER BY sql/share/korean/errmsg.txt: Updates for text search + ORDER BY sql/share/norwegian/errmsg.txt: Updates for text search + ORDER BY sql/share/norwegian-ny/errmsg.txt: Updates for text search + ORDER BY sql/share/polish/errmsg.sys: Updates for text search + ORDER BY sql/share/polish/errmsg.txt: Updates for text search + ORDER BY sql/share/portuguese/errmsg.sys: Updates for text search + ORDER BY sql/share/portuguese/errmsg.txt: Updates for text search + ORDER BY sql/share/romania/errmsg.sys: Updates for text search + ORDER BY sql/share/romania/errmsg.txt: Updates for text search + ORDER BY sql/share/russian/errmsg.sys: Updates for text search + ORDER BY sql/share/russian/errmsg.txt: Updates for text search + ORDER BY sql/share/slovak/errmsg.sys: Updates for text search + ORDER BY sql/share/slovak/errmsg.txt: Updates for text search + ORDER BY sql/share/spanish/errmsg.sys: Updates for text search + ORDER BY sql/share/spanish/errmsg.txt: Updates for text search + ORDER BY sql/share/swedish/errmsg.OLD: Updates for text search + ORDER BY sql/share/swedish/errmsg.sys: Updates for text search + ORDER BY sql/share/swedish/errmsg.txt: Updates for text search + ORDER BY support-files/mysql.server-sys5.sh: Updates for text search + ORDER BY extra/.cvsignore: Fix for update + BDB tables isam/_dbug.c: Fix for update + BDB tables myisam/mi_delete.c: Fix for update + BDB tables myisam/mi_rnext_same.c: Fix for update + BDB tables myisam/mi_search.c: Fix for update + BDB tables sql/table.cc: Fix of core dump bugs myisam/Makefile.am: Aded missing file sql/ha_berkeley.h: Fix DELETE FROM table_name problem Build-tools/Do-all-build-steps: Update to final 3.23.20 Build-tools/mysql-copyright-2: Update to final 3.23.20 Build-tools/mysql-copyright: Update to final 3.23.20 Docs/.cvsignore: Update to final 3.23.20 scripts/make_binary_distribution.sh: Update to final 3.23.20 Docs/internals.texi: Fix of licenses issues. sql/ha_isam.h: Added patch by Sergei for MATCH + some bug fixes. sql/ha_isammrg.h: Added patch by Sergei for MATCH + some bug fixes. sql/ha_myisammrg.h: Added patch by Sergei for MATCH + some bug fixes. myisam/ft_search.c: Fix of portability bug include/ft_global.h: Fix of portability bug sql/log_event.cc: One more safety fix sql/log_event.h: One more safety fix isam/test2.c: Update to 3.23.21 isam/update.c: Update to 3.23.21 myisam/ChangeLog: Update to 3.23.21 myisam/mi_test_all.sh: Update to 3.23.21 myisam/mi_update.c: Update to 3.23.21 myisam/mi_write.c: Update to 3.23.21 scripts/.cvsignore: Update to 3.23.21 scripts/mysql_config.sh: Update to 3.23.21 sql/filesort.cc: Update to 3.23.21 Docs/Support/texi2html: removed NOSAVE attrib from TABLE tags, non-standard HTML. include/Attic/config-win32.h: Made update log ASCII 0 safe myisam/mi_test_all: ***MISSING WEAVE*** sql/sql_acl.cc: Made update log ASCII 0 safe sql/sql_db.cc: Made update log ASCII 0 safe sql/sql_delete.cc: Made update log ASCII 0 safe sql/sql_insert.cc: Made update log ASCII 0 safe sql/sql_load.cc: Made update log ASCII 0 safe sql/sql_select.h: Made update log ASCII 0 safe sql/sql_update.cc: Made update log ASCII 0 safe sql/table.h: Made update log ASCII 0 safe strings/ctype-czech.c: Made update log ASCII 0 safe support-files/maxsql.spec.sh: Made update log ASCII 0 safe client/mysqlimport.c: Update to 3.23.21 client/mysqlshow.c: Update to 3.23.21 include/mysql.h: Added mysql_character_set_name() mit-pthreads/net/gethostname.c: Added mysql_character_set_name() scripts/Makefile.am: Added mysql_character_set_name() client/Makefile.am: portability fixes scripts/mysql_install_db.sh: portability fixes support-files/mysql.spec.sh: Added mysql_config config.h.in: ***MISSING WEAVE*** client/mysqldump.c: Small fixes heap/hp_rkey.c: Small fixes sql-bench/compare-results.sh: Small fixes tests/mail_to_db.pl: Small fixes acinclude.m4: Configure updates for 3.23.22 BUILD/compile-pentium-debug: Configure updates for 3.23.22 Docs/Makefile.am: Configure updates for 3.23.22 client/get_password.c: Configure updates for 3.23.22 client/mysqladmin.c: Configure updates for 3.23.22 include/Makefile.am: Configure updates for 3.23.22 include/my_global.h: ***MISSING WEAVE*** isam/info.c: Configure updates for 3.23.22 isam/isamdef.h: Configure updates for 3.23.22 isam/write.c: Configure updates for 3.23.22 sql/records.cc: Configure updates for 3.23.22 sql-bench/print-limit-table: Configure updates for 3.23.22 sql-bench/limits/mysql-3.23.cfg: Configure updates for 3.23.22 support-files/my-huge.cnf.sh: Configure updates for 3.23.22 support-files/my-large.cnf.sh: Configure updates for 3.23.22 support-files/my-medium.cnf.sh: Configure updates for 3.23.22 myisam/ft_update.c: This is to make ft-code to ignore keyseg.length at all and to index the whole VARCHAR/BLOB instead... Makefile.am: Fixed gen_lex_hash recursion myisam/myisampack.c: Fixes for 3.23.22 sql/ChangeLog: Fixes for 3.23.22 sql/nt_servc.cc: Fixes for 3.23.22 sql/sql_class.cc: Fixes for 3.23.22 include/my_base.h: Fix for BDB and MERGE tables sql/ha_myisammrg.cc: Fix for BDB and MERGE tables Docs/LICENSE: Update for 3.23.22 config.sub: Update for ia64 Build-tools/Do-compile-all: ***MISSING WEAVE*** scripts/safe_mysqld.sh: Small bug fixes for 3.23.22 support-files/.cvsignore: Small bug fixes for 3.23.22 scripts/mysql_find_rows.sh: Critical bug fixes sql/sql_class.h: SHOW SLAVE STATUS, change in SHOW MASTER STATUS repl-tests/include/master-slave.inc: Replication test cases repl-tests/test-dump/run.test: Replication test cases repl-tests/test-dump/table-dump-check.master: Replication test cases repl-tests/test-dump/table-dump-select.master: Replication test cases repl-tests/test-repl-ts/repl-timestamp.master: Replication test cases repl-tests/test-repl-ts/run.test: Replication test cases repl-tests/test-repl/foo-dump-master.master: Replication test cases repl-tests/test-repl/foo-dump-slave.master: Replication test cases repl-tests/test-repl/run.test: Replication test cases repl-tests/test-repl/sum-wlen-master.master: Replication test cases repl-tests/test-repl/sum-wlen-slave.master: Replication test cases Images/.cvsignore: Update of div reported bugs include/config-win.h: Update of div reported bugs mysys/mf_pack.c: Update of div reported bugs sql/field.cc: Update of div reported bugs sql/field.h: Update of div reported bugs sql/ha_myisam.h: Update of div reported bugs sql/handler.h: Update of div reported bugs sql/item.cc: Update of div reported bugs sql/item_func.h: Update of div reported bugs sql/item_timefunc.cc: Update of div reported bugs sql/item_timefunc.h: Update of div reported bugs sql/sql_string.cc: Update of div reported bugs sql/sql_table.cc: Update of div reported bugs sql/structs.h: Update of div reported bugs sql/time.cc: Update of div reported bugs strings/ctype-gbk.c: Update of div reported bugs strings/ctype-tis620.c: Update of div reported bugs strings/r_strinstr.c: Update of div reported bugs strings/strnlen.c: Update of div reported bugs support-files/mysql.server.sh: Update of div reported bugs myisam/mi_locking.c: Small bug fixes myisam/myisamdef.h: Small bug fixes mysys/my_thr_init.c: Small bug fixes myisam/mi_close.c: Changed mutex THR_lock_isam -> THR_lock_myisam myisam/mi_create.c: Changed mutex THR_lock_isam -> THR_lock_myisam myisam/mi_extra.c: Changed mutex THR_lock_isam -> THR_lock_myisam myisam/mi_log.c: Changed mutex THR_lock_isam -> THR_lock_myisam myisam/mi_open.c: Changed mutex THR_lock_isam -> THR_lock_myisam myisam/mi_panic.c: Changed mutex THR_lock_isam -> THR_lock_myisam myisam/myisamchk.c: Changed mutex THR_lock_isam -> THR_lock_myisam sql/item_func.cc: Don't let MySQL use ft-keys in non-ft way sql/opt_range.cc: Don't let MySQL use ft-keys in non-ft way sql-bench/Results-linux/ATIS-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/RUN-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/alter-table-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/connect-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/create-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/insert-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/select-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql/share/italian/errmsg.sys: new translated error messages sql/share/italian/errmsg.txt: new translated error messages libmysql/errmsg.c: Fix to get 'Too big packet' error + fixes for Ia64 libmysql/libmysql.c: Fix to get 'Too big packet' error + fixes for Ia64 libmysql/net.c: Fix to get 'Too big packet' error + fixes for Ia64 include/errmsg.h: Fix to get 'Too big packet' mysql.proj: Update for 3.23.22 client/mysql.cc: Fix for rehash on reconnect (By Jeremey) readline/rlstdc.h: portability fixes sql/Makefile.am: Hack to force lex_hash.h to be generated sql/ha_berkeley.cc: Fixes for Berekely DB sql/handler.cc: Fixes for Berekely DB sql/item.h: Small fixes for 3.23.22 sql/net_serv.cc: Small fixes for 3.23.22 client/completion_hash.cc: Fixes for Ia64 sql/mini_client.cc: Fixes for Ia64 sql/sql_select.cc: Fixes for Ia64 .cvsignore: Update at work for release myisam/mi_check.c: Fix bug in ANALYZE TABLE sql/ha_myisam.cc: Fix bug in ANALYZE TABLE include/myisam.h: Fix bug in ANALYZE TABLE configure.in: Fix for AIX 4.3 Build-tools/Do-compile: Fix for local perl libraries sql/sql_show.cc: Fix for show processlist on SCO include/global.h: Fix for AIX 4.3 BUILD/compile-ia64-O0-sgicc: Last minute updates for 3.23.22 BUILD/compile-ia64-O0: Last minute updates for 3.23.22 BUILD/compile-ia64-O2-sgicc: Last minute updates for 3.23.22 BUILD/compile-ia64-O2: Last minute updates for 3.23.22 BUILD/compile-ia64-O6: Last minute updates for 3.23.22 Docs/manual.texi: Added paragraph in introduction pointing to SQL and MySQL books, for newbies. sql/gen_lex_hash.cc: CHANGE MASTER TO and other fixes sql/lex.h: CHANGE MASTER TO and other fixes sql/log.cc: CHANGE MASTER TO and other fixes sql/mysql_priv.h: CHANGE MASTER TO and other fixes sql/mysqld.cc: CHANGE MASTER TO and other fixes sql/net_pkg.cc: CHANGE MASTER TO and other fixes sql/slave.cc: CHANGE MASTER TO and other fixes sql/sql_base.cc: CHANGE MASTER TO and other fixes sql/sql_lex.h: CHANGE MASTER TO and other fixes sql/sql_parse.cc: CHANGE MASTER TO and other fixes sql/sql_yacc.yy: CHANGE MASTER TO and other fixes
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc4576
1 files changed, 4576 insertions, 0 deletions
diff --git a/sql/field.cc b/sql/field.cc
new file mode 100644
index 00000000000..c903ea456a5
--- /dev/null
+++ b/sql/field.cc
@@ -0,0 +1,4576 @@
+/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+
+/*
+ NOTES:
+ Some of the number class uses the system functions strtol(), strtoll()...
+ To avoid patching the end \0 or copying the buffer unnecessary, all calls
+ to system functions are wrapped to a String object that adds the end null
+ if it only if it isn't there.
+ This adds some overhead when assigning numbers from strings but makes
+ everything simpler.
+ */
+
+/*****************************************************************************
+** This file implements classes defined in field.h
+*****************************************************************************/
+
+#ifdef __GNUC__
+#pragma implementation // gcc: Class implementation
+#endif
+
+#include "mysql_priv.h"
+#include "sql_select.h"
+#include <m_ctype.h>
+#include <errno.h>
+#ifdef HAVE_FCONVERT
+#include <floatingpoint.h>
+#endif
+
+/*****************************************************************************
+** Instansiate templates and static variables
+*****************************************************************************/
+
+#ifdef __GNUC__
+template class List<create_field>;
+template class List_iterator<create_field>;
+#endif
+
+struct st_decstr {
+ uint nr_length,nr_dec,sign,extra;
+ char sign_char;
+};
+
+uchar Field_null::null[1]={1};
+const char field_separator=',';
+
+/*****************************************************************************
+** Static help functions
+*****************************************************************************/
+
+ /*
+ ** Calculate length of number and it's parts
+ ** Increment cuted_fields if wrong number
+ */
+
+static bool
+number_dec(struct st_decstr *sdec, const char *str, const char *end)
+{
+ sdec->sign=sdec->extra=0;
+ if (str == end)
+ {
+ current_thd->cuted_fields++;
+ sdec->nr_length=sdec->nr_dec=sdec->sign=0;
+ sdec->extra=1; // We must put one 0 before .
+ return 1;
+ }
+
+ if (*str == '-' || *str == '+') /* sign */
+ {
+ sdec->sign_char= *str;
+ sdec->sign=1;
+ str++;
+ }
+ const char *start=str;
+ while (str != end && isdigit(*str))
+ str++;
+ if (!(sdec->nr_length=(uint) (str-start)))
+ sdec->extra=1; // We must put one 0 before .
+ start=str;
+ if (str != end && *str == '.')
+ {
+ str++;
+ start=str;
+ while (str != end && isdigit(*str))
+ str++;
+ }
+ sdec->nr_dec=(uint) (str-start);
+ if (current_thd->count_cuted_fields)
+ {
+ while (str != end && isspace(*str))
+ str++; /* purecov: inspected */
+ if (str != end)
+ {
+ current_thd->cuted_fields++;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+void Field_num::prepend_zeros(String *value)
+{
+ int diff;
+ if ((diff= (int) (field_length - value->length())) > 0)
+ {
+ bmove_upp((char*) value->ptr()+field_length,value->ptr()+value->length(),
+ value->length());
+ bfill((char*) value->ptr(),diff,'0');
+ value->length(field_length);
+ (void) value->c_ptr_quick(); // Avoid warnings in purify
+ }
+}
+
+/*
+** Test if given number is a int (or a fixed format float with .000)
+** This is only used to give warnings in ALTER TABLE or LOAD DATA...
+*/
+
+bool test_if_int(const char *str,int length)
+{
+ const char *end=str+length;
+
+ while (str != end && isspace(*str)) // Allow start space
+ str++; /* purecov: inspected */
+ if (str != end && (*str == '-' || *str == '+'))
+ str++;
+ if (str == end)
+ return 0; // Error: Empty string
+ for ( ; str != end ; str++)
+ {
+ if (!isdigit(*str))
+ {
+ if (*str == '.')
+ { // Allow '.0000'
+ for (str++ ; str != end && *str == '0'; str++) ;
+ if (str == end)
+ return 1;
+ }
+ if (!isspace(*str))
+ return 0;
+ for (str++ ; str != end ; str++)
+ if (!isspace(*str))
+ return 0;
+ return 1;
+ }
+ }
+ return 1;
+}
+
+
+static bool test_if_real(const char *str,int length)
+{
+ while (length && isspace(*str))
+ { // Allow start space
+ length--; str++;
+ }
+ if (!length)
+ return 0;
+ if (*str == '+' || *str == '-')
+ {
+ length--; str++;
+ if (!length || !(isdigit(*str) || *str == '.'))
+ return 0;
+ }
+ while (length && isdigit(*str))
+ {
+ length--; str++;
+ }
+ if (!length)
+ return 1;
+ if (*str == '.')
+ {
+ length--; str++;
+ while (length && isdigit(*str))
+ {
+ length--; str++;
+ }
+ }
+ if (!length)
+ return 1;
+ if (*str == 'E' || *str == 'e')
+ {
+ if (length < 3 || (str[1] != '+' && str[1] != '-') || !isdigit(str[2]))
+ return 0;
+ length-=3;
+ str+=3;
+ while (length && isdigit(*str))
+ {
+ length--; str++;
+ }
+ }
+ for ( ; length ; length--, str++)
+ { // Allow end space
+ if (!isspace(*str))
+ return 0;
+ }
+ return 1;
+}
+
+
+/****************************************************************************
+** Functions for the base classes
+** This is a unpacked number.
+****************************************************************************/
+
+Field::Field(char *ptr_arg,uint32 length_arg,uchar *null_ptr_arg,
+ uint null_bit_arg,
+ utype unireg_check_arg, const char *field_name_arg,
+ struct st_table *table_arg)
+ :ptr(ptr_arg),null_ptr(null_ptr_arg),null_bit(null_bit_arg),
+ table(table_arg),query_id(0),key_start(0),part_of_key(0),
+ table_name(table_arg ? table_arg->table_name : 0),
+ field_name(field_name_arg), unireg_check(unireg_check_arg),
+ field_length(length_arg)
+{
+ flags=null_ptr ? 0: NOT_NULL_FLAG;
+}
+
+uint Field::offset()
+{
+ return (uint) (ptr - (char*) table->record[0]);
+}
+
+
+void Field::copy_from_tmp(int row_offset)
+{
+ memcpy(ptr,ptr+row_offset,pack_length());
+ if (null_ptr)
+ {
+ *null_ptr= ((null_ptr[0] & (uchar) ~(uint) null_bit) |
+ null_ptr[row_offset] & (uchar) null_bit);
+ }
+}
+
+
+bool Field::send(String *packet)
+{
+ if (is_null())
+ return net_store_null(packet);
+ char buff[MAX_FIELD_WIDTH];
+ String tmp(buff,sizeof(buff));
+ val_str(&tmp,&tmp);
+ CONVERT *convert;
+ if ((convert=current_thd->convert_set))
+ return convert->store(packet,tmp.ptr(),tmp.length());
+ return net_store_data(packet,tmp.ptr(),tmp.length());
+}
+
+
+void Field_num::add_zerofill_and_unsigned(String &res) const
+{
+ res.length(strlen(res.ptr())); // Fix length
+ if (unsigned_flag)
+ res.append(" unsigned");
+ if (zerofill)
+ res.append(" zerofill");
+}
+
+void Field_num::make_field(Send_field *field)
+{
+ field->table_name=table_name;
+ field->col_name=field_name;
+ field->length=field_length;
+ field->type=type();
+ field->flags=table->maybe_null ? (flags & ~NOT_NULL_FLAG) : flags;
+ field->decimals=dec;
+}
+
+
+void Field_str::make_field(Send_field *field)
+{
+ field->table_name=table_name;
+ field->col_name=field_name;
+ field->length=field_length;
+ field->type=type();
+ field->flags=table->maybe_null ? (flags & ~NOT_NULL_FLAG) : flags;
+ field->decimals=0;
+}
+
+
+uint Field::fill_cache_field(CACHE_FIELD *copy)
+{
+ copy->str=ptr;
+ copy->length=pack_length();
+ copy->blob_field=0;
+ if (flags & BLOB_FLAG)
+ {
+ copy->blob_field=(Field_blob*) this;
+ copy->strip=0;
+ copy->length-=table->blob_ptr_size;
+ return copy->length;
+ }
+ else if (!zero_pack() && (type() == FIELD_TYPE_STRING && copy->length > 4 ||
+ type() == FIELD_TYPE_VAR_STRING))
+ copy->strip=1; /* Remove end space */
+ else
+ copy->strip=0;
+ return copy->length+(int) copy->strip;
+}
+
+bool Field::get_date(TIME *ltime,bool fuzzydate)
+{
+ char buff[40];
+ String tmp(buff,sizeof(buff)),tmp2,*res;
+ if (!(res=val_str(&tmp,&tmp2)) ||
+ str_to_TIME(res->ptr(),res->length(),ltime,fuzzydate) == TIMESTAMP_NONE)
+ return 1;
+ return 0;
+}
+
+bool Field::get_time(TIME *ltime)
+{
+ char buff[40];
+ String tmp(buff,sizeof(buff)),tmp2,*res;
+ if (!(res=val_str(&tmp,&tmp2)) ||
+ str_to_time(res->ptr(),res->length(),ltime) == TIMESTAMP_NONE)
+ return 1;
+ return 0;
+}
+
+
+/* This is called when storing a date in a string */
+void Field::store_time(TIME *ltime,timestamp_type type)
+{
+ char buff[25];
+ switch (type) {
+ case TIMESTAMP_NONE:
+ store("",0); // Probably an error
+ break;
+ case TIMESTAMP_DATE:
+ sprintf(buff,"%04d-%02d-%02d", ltime->year,ltime->month,ltime->day);
+ store(buff,10);
+ break;
+ case TIMESTAMP_FULL:
+ sprintf(buff,"%04d-%02d-%02d %02d:%02d:%02d",
+ ltime->year,ltime->month,ltime->day,
+ ltime->hour,ltime->minute,ltime->second);
+ store(buff,19);
+ break;
+ case TIMESTAMP_TIME:
+ sprintf(buff, "%02d:%02d:%02d",
+ ltime->hour,ltime->minute,ltime->second);
+ store(buff,strlen(buff));
+ break;
+ }
+}
+
+
+bool Field::optimize_range()
+{
+ return test(table->file->option_flag() & HA_READ_NEXT);
+}
+
+/****************************************************************************
+** Functions for the Field_decimal class
+** This is a unpacked number.
+****************************************************************************/
+
+void
+Field_decimal::reset(void)
+{
+ Field_decimal::store("0",1);
+}
+
+void Field_decimal::overflow(bool negative)
+{
+ uint len=field_length;
+ char *to=ptr;
+ if (negative && !unsigned_flag)
+ {
+ *to++ = '-';
+ len--;
+ }
+ bfill(to,len,negative && unsigned_flag ? '0' : '9');
+ if (dec)
+ ptr[field_length-dec-1]='.';
+ return;
+}
+
+
+void Field_decimal::store(const char *from,uint len)
+{
+ reg3 int i;
+ uint tmp_dec;
+ char fyllchar;
+ const char *end=from+len;
+ struct st_decstr decstr;
+ bool error;
+
+ if ((tmp_dec= dec))
+ tmp_dec++; // Calculate pos of '.'
+ while (from != end && isspace(*from))
+ from++;
+ if (zerofill)
+ {
+ fyllchar = '0';
+ if (from != end)
+ while (*from == '0' && from != end-1) // Skipp prezero
+ from++;
+ }
+ else
+ fyllchar=' ';
+ error=number_dec(&decstr,from,end);
+ if (decstr.sign)
+ {
+ from++;
+ if (unsigned_flag) // No sign with zerofill
+ {
+ if (!error)
+ current_thd->cuted_fields++;
+ Field_decimal::overflow(1);
+ return;
+ }
+ }
+ /*
+ ** Remove pre-zeros if too big number
+ */
+ for (i= (int) (decstr.nr_length+decstr.extra -(field_length-tmp_dec)+
+ decstr.sign) ;
+ i > 0 ;
+ i--)
+ {
+ if (*from == '0')
+ {
+ from++;
+ decstr.nr_length--;
+ continue;
+ }
+ if (decstr.sign && decstr.sign_char == '+' && i == 1)
+ { // Remove pre '+'
+ decstr.sign=0;
+ break;
+ }
+ current_thd->cuted_fields++;
+ // too big number, change to max or min number
+ Field_decimal::overflow(decstr.sign && decstr.sign_char == '-');
+ return;
+ }
+ char *to=ptr;
+ for (i=(int) (field_length-tmp_dec-decstr.nr_length-decstr.extra - decstr.sign) ;
+ i-- > 0 ;)
+ *to++ = fyllchar;
+ if (decstr.sign)
+ *to++= decstr.sign_char;
+ if (decstr.extra)
+ *to++ = '0';
+ for (i=(int) decstr.nr_length ; i-- > 0 ; )
+ *to++ = *from++;
+ if (tmp_dec--)
+ {
+ *to++ ='.';
+ if (decstr.nr_dec) from++; // Skipp '.'
+ for (i=(int) min(decstr.nr_dec,tmp_dec) ; i-- > 0 ; ) *to++ = *from++;
+ for (i=(int) (tmp_dec-min(decstr.nr_dec,tmp_dec)) ; i-- > 0 ; ) *to++ = '0';
+ }
+
+ /*
+ ** Check for incorrect string if in batch mode (ALTER TABLE/LOAD DATA...)
+ */
+ if (!error && current_thd->count_cuted_fields && from != end)
+ { // Check if number was cuted
+ for (; from != end ; from++)
+ {
+ if (*from != '0')
+ {
+ if (!isspace(*from)) // Space is ok
+ current_thd->cuted_fields++;
+ break;
+ }
+ }
+ }
+}
+
+
+void Field_decimal::store(double nr)
+{
+ if (unsigned_flag && nr < 0)
+ {
+ overflow(1);
+ current_thd->cuted_fields++;
+ return;
+ }
+ reg4 uint i,length;
+ char fyllchar,*to;
+ char buff[320];
+
+ fyllchar = zerofill ? (char) '0' : (char) ' ';
+ sprintf(buff,"%.*f",dec,nr);
+ length=strlen(buff);
+
+ if (length > field_length)
+ {
+ overflow(nr < 0.0);
+ current_thd->cuted_fields++;
+ }
+ else
+ {
+ to=ptr;
+ for (i=field_length-length ; i-- > 0 ;)
+ *to++ = fyllchar;
+ memcpy(to,buff,length);
+ }
+}
+
+
+void Field_decimal::store(longlong nr)
+{
+ if (unsigned_flag && nr < 0)
+ {
+ overflow(1);
+ current_thd->cuted_fields++;
+ return;
+ }
+ char buff[22];
+ uint length=(uint) (longlong10_to_str(nr,buff,-10)-buff);
+ uint int_part=field_length- (dec ? dec+1 : 0);
+
+ if (length > int_part)
+ {
+ overflow(test(nr < 0L)); /* purecov: inspected */
+ current_thd->cuted_fields++; /* purecov: inspected */
+ }
+ else
+ {
+ char fyllchar = zerofill ? (char) '0' : (char) ' ';
+ char *to=ptr;
+ for (uint i=int_part-length ; i-- > 0 ;)
+ *to++ = fyllchar;
+ memcpy(to,buff,length);
+ if (dec)
+ {
+ to[length]='.';
+ bfill(to+length+1,dec,'0');
+ }
+ }
+}
+
+
+double Field_decimal::val_real(void)
+{
+ char temp= *(ptr+field_length); *(ptr+field_length) = '\0';
+ double nr=atod(ptr);
+ *(ptr+field_length)=temp;
+ return(nr);
+}
+
+longlong Field_decimal::val_int(void)
+{
+ char temp= *(ptr+field_length); *(ptr+field_length) = '\0';
+ longlong nr;
+ if (unsigned_flag)
+ nr=(longlong) strtoull(ptr,NULL,10);
+ else
+ nr=strtoll(ptr,NULL,10);
+ *(ptr+field_length)=temp;
+ return(nr);
+}
+
+String *Field_decimal::val_str(String *val_buffer __attribute__((unused)),
+ String *val_ptr)
+{
+ char *str;
+ for (str=ptr ; *str == ' ' ; str++) ;
+ uint tmp_length=(uint) (str-ptr);
+ if (field_length < tmp_length) // Error in data
+ val_ptr->length(0);
+ else
+ val_ptr->set((const char*) str,field_length-tmp_length);
+ return val_ptr;
+}
+
+/*
+** Should be able to handle at least the following fixed decimal formats:
+** 5.00 , -1.0, 05, -05, +5 with optional pre/end space
+*/
+
+int Field_decimal::cmp(const char *a_ptr,const char *b_ptr)
+{
+ const char *end;
+ /* First remove prefixes '0', ' ', and '-' */
+ for (end=a_ptr+field_length;
+ a_ptr != end &&
+ (*a_ptr == *b_ptr ||
+ ((isspace(*a_ptr) || *a_ptr == '+' || *a_ptr == '0') &&
+ (isspace(*b_ptr) || *b_ptr == '+' || *b_ptr == '0')));
+ a_ptr++,b_ptr++) ;
+
+ if (a_ptr == end)
+ return 0;
+ int swap=0;
+ if (*a_ptr == '-')
+ {
+ if (*b_ptr != '-')
+ return -1;
+ swap= -1 ^ 1; // Swap result
+ a_ptr++, b_ptr++;
+ } else if (*b_ptr == '-')
+ return 1;
+
+ while (a_ptr != end)
+ {
+ if (*a_ptr++ != *b_ptr++)
+ return swap ^ (a_ptr[-1] < b_ptr[-1] ? -1 : 1); // compare digits
+ }
+ return 0;
+}
+
+
+void Field_decimal::sort_string(char *to,uint length)
+{
+ char *str,*end;
+ for (str=ptr,end=ptr+length;
+ str != end &&
+ ((isspace(*str) || *str == '+' || *str == '0')) ;
+
+ str++)
+ *to++=' ';
+ if (str == end)
+ return; /* purecov: inspected */
+
+ if (*str == '-')
+ {
+ *to++=1; // Smaller than any number
+ str++;
+ while (str != end)
+ if (isdigit(*str))
+ *to++= (char) ('9' - *str++);
+ else
+ *to++= *str++;
+ }
+ else memcpy(to,str,(uint) (end-str));
+}
+
+void Field_decimal::sql_type(String &res) const
+{
+ uint tmp=field_length;
+ if (!unsigned_flag)
+ tmp--;
+ if (dec)
+ tmp--;
+ sprintf((char*) res.ptr(),"decimal(%d,%d)",tmp,dec);
+ add_zerofill_and_unsigned(res);
+}
+
+
+/****************************************************************************
+** tiny int
+****************************************************************************/
+
+void Field_tiny::store(const char *from,uint len)
+{
+ String tmp_str(from,len);
+ long tmp= strtol(tmp_str.c_ptr(),NULL,10);
+
+ if (unsigned_flag)
+ {
+ if (tmp < 0)
+ {
+ tmp=0; /* purecov: inspected */
+ current_thd->cuted_fields++; /* purecov: inspected */
+ }
+ else if (tmp > 255)
+ {
+ tmp= 255;
+ current_thd->cuted_fields++;
+ }
+ else if (current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+ }
+ else
+ {
+ if (tmp < -128)
+ {
+ tmp= -128;
+ current_thd->cuted_fields++;
+ }
+ else if (tmp >= 128)
+ {
+ tmp= 127;
+ current_thd->cuted_fields++;
+ }
+ else if (current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+ }
+ ptr[0]= (char) tmp;
+}
+
+
+void Field_tiny::store(double nr)
+{
+ nr=rint(nr);
+ if (unsigned_flag)
+ {
+ if (nr < 0.0)
+ {
+ *ptr=0;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > 255.0)
+ {
+ *ptr=(char) 255;
+ current_thd->cuted_fields++;
+ }
+ else
+ *ptr=(char) nr;
+ }
+ else
+ {
+ if (nr < -128.0)
+ {
+ *ptr= (char) -128;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > 127.0)
+ {
+ *ptr=127;
+ current_thd->cuted_fields++;
+ }
+ else
+ *ptr=(char) nr;
+ }
+}
+
+void Field_tiny::store(longlong nr)
+{
+ if (unsigned_flag)
+ {
+ if (nr < 0L)
+ {
+ *ptr=0;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > 255L)
+ {
+ *ptr= (char) 255;
+ current_thd->cuted_fields++;
+ }
+ else
+ *ptr=(char) nr;
+ }
+ else
+ {
+ if (nr < -128L)
+ {
+ *ptr= (char) -128;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > 127L)
+ {
+ *ptr=127;
+ current_thd->cuted_fields++;
+ }
+ else
+ *ptr=(char) nr;
+ }
+}
+
+
+double Field_tiny::val_real(void)
+{
+ int tmp= unsigned_flag ? (int) ((uchar*) ptr)[0] :
+ (int) ((signed char*) ptr)[0];
+ return (double) tmp;
+}
+
+longlong Field_tiny::val_int(void)
+{
+ int tmp= unsigned_flag ? (int) ((uchar*) ptr)[0] :
+ (int) ((signed char*) ptr)[0];
+ return (longlong) tmp;
+}
+
+String *Field_tiny::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ uint length;
+ val_buffer->alloc(max(field_length+1,5));
+ char *to=(char*) val_buffer->ptr();
+ if (unsigned_flag)
+ length= (uint) (int10_to_str((long) *((uchar*) ptr),to,10)-to);
+ else
+ length=(int10_to_str((long) *((signed char*) ptr),to,-10)-to);
+ val_buffer->length(length);
+ if (zerofill)
+ prepend_zeros(val_buffer);
+ return val_buffer;
+}
+
+
+int Field_tiny::cmp(const char *a_ptr, const char *b_ptr)
+{
+ signed char a,b;
+ a=(signed char) a_ptr[0]; b= (signed char) b_ptr[0];
+ if (unsigned_flag)
+ return ((uchar) a < (uchar) b) ? -1 : ((uchar) a > (uchar) b) ? 1 : 0;
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+void Field_tiny::sort_string(char *to,uint length __attribute__((unused)))
+{
+ if (unsigned_flag)
+ *to= *ptr;
+ else
+ to[0] = (char) ((uchar) ptr[0] ^ (uchar) 128); /* Revers signbit */
+}
+
+void Field_tiny::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"tinyint(%d)",(int) field_length);
+ add_zerofill_and_unsigned(res);
+}
+
+/****************************************************************************
+** short int
+****************************************************************************/
+
+
+// Note: Sometimes this should be fixed to use one strtol() to use
+// len and check for garbage after number.
+
+void Field_short::store(const char *from,uint len)
+{
+ String tmp_str(from,len);
+ long tmp= strtol(tmp_str.c_ptr(),NULL,10);
+ if (unsigned_flag)
+ {
+ if (tmp < 0)
+ {
+ tmp=0;
+ current_thd->cuted_fields++;
+ }
+ else if (tmp > (uint16) ~0)
+ {
+ tmp=(uint16) ~0;
+ current_thd->cuted_fields++;
+ }
+ else if (current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+ }
+ else
+ {
+ if (tmp < INT_MIN16)
+ {
+ tmp= INT_MIN16;
+ current_thd->cuted_fields++;
+ }
+ else if (tmp > INT_MAX16)
+ {
+ tmp=INT_MAX16;
+ current_thd->cuted_fields++;
+ }
+ else if (current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+ }
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int2store(ptr,tmp);
+ }
+ else
+#endif
+ shortstore(ptr,(short) tmp);
+}
+
+
+void Field_short::store(double nr)
+{
+ int16 res;
+ nr=rint(nr);
+ if (unsigned_flag)
+ {
+ if (nr < 0)
+ {
+ res=0;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > (double) (uint16) ~0)
+ {
+ res=(int16) (uint16) ~0;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(int16) (uint16) nr;
+ }
+ else
+ {
+ if (nr < (double) INT_MIN16)
+ {
+ res=INT_MIN16;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > (double) INT_MAX16)
+ {
+ res=INT_MAX16;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(int16) nr;
+ }
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int2store(ptr,res);
+ }
+ else
+#endif
+ shortstore(ptr,res);
+}
+
+void Field_short::store(longlong nr)
+{
+ int16 res;
+ if (unsigned_flag)
+ {
+ if (nr < 0L)
+ {
+ res=0;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > (longlong) (uint16) ~0)
+ {
+ res=(int16) (uint16) ~0;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(int16) (uint16) nr;
+ }
+ else
+ {
+ if (nr < INT_MIN16)
+ {
+ res=INT_MIN16;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > INT_MAX16)
+ {
+ res=INT_MAX16;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(int16) nr;
+ }
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int2store(ptr,res);
+ }
+ else
+#endif
+ shortstore(ptr,res);
+}
+
+
+double Field_short::val_real(void)
+{
+ short j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint2korr(ptr);
+ else
+#endif
+ shortget(j,ptr);
+ return unsigned_flag ? (double) (unsigned short) j : (double) j;
+}
+
+longlong Field_short::val_int(void)
+{
+ short j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint2korr(ptr);
+ else
+#endif
+ shortget(j,ptr);
+ return unsigned_flag ? (longlong) (unsigned short) j : (longlong) j;
+}
+
+String *Field_short::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ uint length;
+ val_buffer->alloc(max(field_length+1,7));
+ char *to=(char*) val_buffer->ptr();
+ short j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint2korr(ptr);
+ else
+#endif
+ shortget(j,ptr);
+
+ if (unsigned_flag)
+ length=(uint) (int10_to_str((long) (uint16) j,to,10)-to);
+ else
+ length=(uint) (int10_to_str((long) j,to,-10)-to);
+ val_buffer->length(length);
+ if (zerofill)
+ prepend_zeros(val_buffer);
+ return val_buffer;
+}
+
+
+int Field_short::cmp(const char *a_ptr, const char *b_ptr)
+{
+ short a,b;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ a=sint2korr(a_ptr);
+ b=sint2korr(b_ptr);
+ }
+ else
+#endif
+ {
+ shortget(a,a_ptr);
+ shortget(b,b_ptr);
+ }
+
+ if (unsigned_flag)
+ return ((unsigned short) a < (unsigned short) b) ? -1 :
+ ((unsigned short) a > (unsigned short) b) ? 1 : 0;
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+void Field_short::sort_string(char *to,uint length __attribute__((unused)))
+{
+#ifdef WORDS_BIGENDIAN
+ if (!table->db_low_byte_first)
+ {
+ if (unsigned_flag)
+ to[0] = ptr[0];
+ else
+ to[0] = ptr[0] ^ 128; /* Revers signbit */
+ to[1] = ptr[1];
+ }
+ else
+#endif
+ {
+ if (unsigned_flag)
+ to[0] = ptr[1];
+ else
+ to[0] = ptr[1] ^ 128; /* Revers signbit */
+ to[1] = ptr[0];
+ }
+}
+
+void Field_short::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"smallint(%d)",(int) field_length);
+ add_zerofill_and_unsigned(res);
+}
+
+
+/****************************************************************************
+** medium int
+****************************************************************************/
+
+// Note: Sometimes this should be fixed to use one strtol() to use
+// len and check for garbage after number.
+
+void Field_medium::store(const char *from,uint len)
+{
+ String tmp_str(from,len);
+ long tmp= strtol(tmp_str.c_ptr(),NULL,10);
+
+ if (unsigned_flag)
+ {
+ if (tmp < 0)
+ {
+ tmp=0;
+ current_thd->cuted_fields++;
+ }
+ else if (tmp >= (long) (1L << 24))
+ {
+ tmp=(long) (1L << 24)-1L;
+ current_thd->cuted_fields++;
+ }
+ else if (current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+ }
+ else
+ {
+ if (tmp < INT_MIN24)
+ {
+ tmp= INT_MIN24;
+ current_thd->cuted_fields++;
+ }
+ else if (tmp > INT_MAX24)
+ {
+ tmp=INT_MAX24;
+ current_thd->cuted_fields++;
+ }
+ else if (current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+ }
+
+ int3store(ptr,tmp);
+}
+
+
+void Field_medium::store(double nr)
+{
+ nr=rint(nr);
+ if (unsigned_flag)
+ {
+ if (nr < 0)
+ {
+ int3store(ptr,0);
+ current_thd->cuted_fields++;
+ }
+ else if (nr >= (double) (long) (1L << 24))
+ {
+ ulong tmp=(ulong) (1L << 24)-1L;
+ int3store(ptr,tmp);
+ current_thd->cuted_fields++;
+ }
+ else
+ int3store(ptr,(ulong) nr);
+ }
+ else
+ {
+ if (nr < (double) INT_MIN24)
+ {
+ long tmp=(long) INT_MIN24;
+ int3store(ptr,tmp);
+ current_thd->cuted_fields++;
+ }
+ else if (nr > (double) INT_MAX24)
+ {
+ long tmp=(long) INT_MAX24;
+ int3store(ptr,tmp);
+ current_thd->cuted_fields++;
+ }
+ else
+ int3store(ptr,(long) nr);
+ }
+}
+
+void Field_medium::store(longlong nr)
+{
+ if (unsigned_flag)
+ {
+ if (nr < 0L)
+ {
+ int3store(ptr,0);
+ current_thd->cuted_fields++;
+ }
+ else if (nr >= (longlong) (long) (1L << 24))
+ {
+ long tmp=(long) (1L << 24)-1L;;
+ int3store(ptr,tmp);
+ current_thd->cuted_fields++;
+ }
+ else
+ int3store(ptr,(ulong) nr);
+ }
+ else
+ {
+ if (nr < (longlong) INT_MIN24)
+ {
+ long tmp=(long) INT_MIN24;
+ int3store(ptr,tmp);
+ current_thd->cuted_fields++;
+ }
+ else if (nr > (longlong) INT_MAX24)
+ {
+ long tmp=(long) INT_MAX24;
+ int3store(ptr,tmp);
+ current_thd->cuted_fields++;
+ }
+ else
+ int3store(ptr,(long) nr);
+ }
+}
+
+
+double Field_medium::val_real(void)
+{
+ long j= unsigned_flag ? (long) uint3korr(ptr) : sint3korr(ptr);
+ return (double) j;
+}
+
+longlong Field_medium::val_int(void)
+{
+ long j= unsigned_flag ? (long) uint3korr(ptr) : sint3korr(ptr);
+ return (longlong) j;
+}
+
+String *Field_medium::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ uint length;
+ val_buffer->alloc(max(field_length+1,10));
+ char *to=(char*) val_buffer->ptr();
+ long j= unsigned_flag ? (long) uint3korr(ptr) : sint3korr(ptr);
+
+ length=(uint) (int10_to_str(j,to,-10)-to);
+ val_buffer->length(length);
+ if (zerofill)
+ prepend_zeros(val_buffer); /* purecov: inspected */
+ return val_buffer;
+}
+
+
+int Field_medium::cmp(const char *a_ptr, const char *b_ptr)
+{
+ long a,b;
+ if (unsigned_flag)
+ {
+ a=uint3korr(a_ptr);
+ b=uint3korr(b_ptr);
+ }
+ else
+ {
+ a=sint3korr(a_ptr);
+ b=sint3korr(b_ptr);
+ }
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+void Field_medium::sort_string(char *to,uint length __attribute__((unused)))
+{
+ if (unsigned_flag)
+ to[0] = ptr[2];
+ else
+ to[0] = (uchar) (ptr[2] ^ 128); /* Revers signbit */
+ to[1] = ptr[1];
+ to[2] = ptr[0];
+}
+
+
+void Field_medium::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"mediumint(%d)",(int) field_length);
+ add_zerofill_and_unsigned(res);
+}
+
+/****************************************************************************
+** long int
+****************************************************************************/
+
+
+// Note: Sometimes this should be fixed to use one strtol() to use
+// len and check for garbage after number.
+
+void Field_long::store(const char *from,uint len)
+{
+ while (len && isspace(*from))
+ {
+ len--; from++;
+ }
+ long tmp;
+ String tmp_str(from,len);
+ errno=0;
+ if (unsigned_flag)
+ {
+ if (!len || *from == '-')
+ {
+ tmp=0; // Set negative to 0
+ errno=ERANGE;
+ }
+ else
+ tmp=(long) strtoul(tmp_str.c_ptr(),NULL,10);
+ }
+ else
+ tmp=strtol(tmp_str.c_ptr(),NULL,10);
+ if (errno || current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,tmp);
+ }
+ else
+#endif
+ longstore(ptr,tmp);
+}
+
+
+void Field_long::store(double nr)
+{
+ int32 res;
+ nr=rint(nr);
+ if (unsigned_flag)
+ {
+ if (nr < 0)
+ {
+ res=0;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > (double) (ulong) ~0L)
+ {
+ res=(int32) (uint32) ~0L;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(int32) (ulong) nr;
+ }
+ else
+ {
+ if (nr < (double) INT_MIN32)
+ {
+ res=(int32) INT_MIN32;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > (double) INT_MAX32)
+ {
+ res=(int32) INT_MAX32;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(int32) nr;
+ }
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,res);
+ }
+ else
+#endif
+ longstore(ptr,res);
+}
+
+
+void Field_long::store(longlong nr)
+{
+ int32 res;
+ if (unsigned_flag)
+ {
+ if (nr < 0)
+ {
+ res=0;
+ current_thd->cuted_fields++;
+ }
+ else if (nr >= (LL(1) << 32))
+ {
+ res=(int32) (uint32) ~0L;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(int32) (uint32) nr;
+ }
+ else
+ {
+ if (nr < (longlong) INT_MIN32)
+ {
+ res=(int32) INT_MIN32;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > (longlong) INT_MAX32)
+ {
+ res=(int32) INT_MAX32;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(int32) nr;
+ }
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,res);
+ }
+ else
+#endif
+ longstore(ptr,res);
+}
+
+
+double Field_long::val_real(void)
+{
+ int32 j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint4korr(ptr);
+ else
+#endif
+ longget(j,ptr);
+ return unsigned_flag ? (double) (uint32) j : (double) j;
+}
+
+longlong Field_long::val_int(void)
+{
+ int32 j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint4korr(ptr);
+ else
+#endif
+ longget(j,ptr);
+ return unsigned_flag ? (longlong) (uint32) j : (longlong) j;
+}
+
+String *Field_long::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ uint length;
+ val_buffer->alloc(max(field_length+1,12));
+ char *to=(char*) val_buffer->ptr();
+ int32 j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint4korr(ptr);
+ else
+#endif
+ longget(j,ptr);
+
+ length=(uint) (int10_to_str((unsigned_flag ? (long) (uint32) j : (long) j),
+ to,
+ unsigned_flag ? 10 : -10)-to);
+ val_buffer->length(length);
+ if (zerofill)
+ prepend_zeros(val_buffer);
+ return val_buffer;
+}
+
+
+int Field_long::cmp(const char *a_ptr, const char *b_ptr)
+{
+ int32 a,b;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ a=sint4korr(a_ptr);
+ b=sint4korr(b_ptr);
+ }
+ else
+#endif
+ {
+ longget(a,a_ptr);
+ longget(b,b_ptr);
+ }
+ if (unsigned_flag)
+ return ((ulong) a < (ulong) b) ? -1 : ((ulong) a > (ulong) b) ? 1 : 0;
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+void Field_long::sort_string(char *to,uint length __attribute__((unused)))
+{
+#ifdef WORDS_BIGENDIAN
+ if (!table->db_low_byte_first)
+ {
+ if (unsigned_flag)
+ to[0] = ptr[0];
+ else
+ to[0] = ptr[0] ^ 128; /* Revers signbit */
+ to[1] = ptr[1];
+ to[2] = ptr[2];
+ to[3] = ptr[3];
+ }
+ else
+#endif
+ {
+ if (unsigned_flag)
+ to[0] = ptr[3];
+ else
+ to[0] = ptr[3] ^ 128; /* Revers signbit */
+ to[1] = ptr[2];
+ to[2] = ptr[1];
+ to[3] = ptr[0];
+ }
+}
+
+
+void Field_long::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"int(%d)",(int) field_length);
+ add_zerofill_and_unsigned(res);
+}
+
+/****************************************************************************
+** longlong int
+****************************************************************************/
+
+void Field_longlong::store(const char *from,uint len)
+{
+ while (len && isspace(*from))
+ { // For easy error check
+ len--; from++;
+ }
+ longlong tmp;
+ String tmp_str(from,len);
+ errno=0;
+ if (unsigned_flag)
+ {
+ if (!len || *from == '-')
+ {
+ tmp=0; // Set negative to 0
+ errno=ERANGE;
+ }
+ else
+ tmp=(longlong) strtoull(tmp_str.c_ptr(),NULL,10);
+ }
+ else
+ tmp=strtoll(tmp_str.c_ptr(),NULL,10);
+ if (errno || current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int8store(ptr,tmp);
+ }
+ else
+#endif
+ longlongstore(ptr,tmp);
+}
+
+
+void Field_longlong::store(double nr)
+{
+ longlong res;
+ nr=rint(nr);
+ if (unsigned_flag)
+ {
+ if (nr < 0)
+ {
+ res=0;
+ current_thd->cuted_fields++;
+ }
+ else if (nr >= (double) ~ (ulonglong) 0)
+ {
+ res= ~(longlong) 0;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(longlong) (ulonglong) nr;
+ }
+ else
+ {
+ if (nr <= (double) LONGLONG_MIN)
+ {
+ res=(longlong) LONGLONG_MIN;
+ current_thd->cuted_fields++;
+ }
+ else if (nr >= (double) LONGLONG_MAX)
+ {
+ res=(longlong) LONGLONG_MAX;
+ current_thd->cuted_fields++;
+ }
+ else
+ res=(longlong) nr;
+ }
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int8store(ptr,res);
+ }
+ else
+#endif
+ longlongstore(ptr,res);
+}
+
+
+void Field_longlong::store(longlong nr)
+{
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int8store(ptr,nr);
+ }
+ else
+#endif
+ longlongstore(ptr,nr);
+}
+
+
+double Field_longlong::val_real(void)
+{
+ longlong j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ j=sint8korr(ptr);
+ }
+ else
+#endif
+ longlongget(j,ptr);
+ return unsigned_flag ? ulonglong2double(j) : (double) j;
+}
+
+longlong Field_longlong::val_int(void)
+{
+ longlong j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint8korr(ptr);
+ else
+#endif
+ longlongget(j,ptr);
+ return j;
+}
+
+
+String *Field_longlong::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ uint length;
+ val_buffer->alloc(max(field_length+1,22));
+ char *to=(char*) val_buffer->ptr();
+ longlong j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint8korr(ptr);
+ else
+#endif
+ longlongget(j,ptr);
+
+ length=(uint) (longlong10_to_str(j,to,unsigned_flag ? 10 : -10)-to);
+ val_buffer->length(length);
+ if (zerofill)
+ prepend_zeros(val_buffer);
+ return val_buffer;
+}
+
+
+int Field_longlong::cmp(const char *a_ptr, const char *b_ptr)
+{
+ longlong a,b;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ a=sint8korr(a_ptr);
+ b=sint8korr(b_ptr);
+ }
+ else
+#endif
+ {
+ longlongget(a,a_ptr);
+ longlongget(b,b_ptr);
+ }
+ if (unsigned_flag)
+ return ((ulonglong) a < (ulonglong) b) ? -1 :
+ ((ulonglong) a > (ulonglong) b) ? 1 : 0;
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+void Field_longlong::sort_string(char *to,uint length __attribute__((unused)))
+{
+#ifdef WORDS_BIGENDIAN
+ if (!table->db_low_byte_first)
+ {
+ if (unsigned_flag)
+ to[0] = ptr[0];
+ else
+ to[0] = ptr[0] ^ 128; /* Revers signbit */
+ to[1] = ptr[1];
+ to[2] = ptr[2];
+ to[3] = ptr[3];
+ to[4] = ptr[4];
+ to[5] = ptr[5];
+ to[6] = ptr[6];
+ to[7] = ptr[7];
+ }
+ else
+#endif
+ {
+ if (unsigned_flag)
+ to[0] = ptr[7];
+ else
+ to[0] = ptr[7] ^ 128; /* Revers signbit */
+ to[1] = ptr[6];
+ to[2] = ptr[5];
+ to[3] = ptr[4];
+ to[4] = ptr[3];
+ to[5] = ptr[2];
+ to[6] = ptr[1];
+ to[7] = ptr[0];
+ }
+}
+
+
+void Field_longlong::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"bigint(%d)",(int) field_length);
+ add_zerofill_and_unsigned(res);
+}
+
+/****************************************************************************
+** single precision float
+****************************************************************************/
+
+void Field_float::store(const char *from,uint len)
+{
+ String tmp_str(from,len);
+ errno=0;
+ Field_float::store(atof(tmp_str.c_ptr()));
+ if (errno || current_thd->count_cuted_fields && !test_if_real(from,len))
+ current_thd->cuted_fields++;
+}
+
+
+void Field_float::store(double nr)
+{
+ float j;
+ if (dec < NOT_FIXED_DEC)
+ nr=floor(nr*log_10[dec]+0.5)/log_10[dec]; // To fixed point
+ if (nr < -FLT_MAX)
+ {
+ j= -FLT_MAX;
+ current_thd->cuted_fields++;
+ }
+ else if (nr > FLT_MAX)
+ {
+ j=FLT_MAX;
+ current_thd->cuted_fields++;
+ }
+ else
+ j= (float) nr;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float4store(ptr,j);
+ }
+ else
+#endif
+ memcpy_fixed(ptr,(byte*) &j,sizeof(j));
+}
+
+
+void Field_float::store(longlong nr)
+{
+ float j= (float) nr;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float4store(ptr,j);
+ }
+ else
+#endif
+ memcpy_fixed(ptr,(byte*) &j,sizeof(j));
+}
+
+
+double Field_float::val_real(void)
+{
+ float j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float4get(j,ptr);
+ }
+ else
+#endif
+ memcpy_fixed((byte*) &j,ptr,sizeof(j));
+ return ((double) j);
+}
+
+longlong Field_float::val_int(void)
+{
+ float j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float4get(j,ptr);
+ }
+ else
+#endif
+ memcpy_fixed((byte*) &j,ptr,sizeof(j));
+ return ((longlong) j);
+}
+
+
+String *Field_float::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ float nr;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float4get(nr,ptr);
+ }
+ else
+#endif
+ memcpy_fixed((byte*) &nr,ptr,sizeof(nr));
+
+ val_buffer->alloc(max(field_length,70));
+ char *to=(char*) val_buffer->ptr();
+
+ if (dec >= NOT_FIXED_DEC)
+ {
+ sprintf(to,"%-*.*g",(int) field_length,FLT_DIG,nr);
+ to=strcend(to,' ');
+ *to=0;
+ }
+ else
+ {
+#ifdef HAVE_FCONVERT
+ char buff[70],*pos=buff;
+ int decpt,sign,tmp_dec=dec;
+
+ VOID(sfconvert(&nr,tmp_dec,&decpt,&sign,buff));
+ if (sign)
+ {
+ *to++='-';
+ }
+ if (decpt < 0)
+ { /* val_buffer is < 0 */
+ *to++='0';
+ if (!tmp_dec)
+ goto end;
+ *to++='.';
+ if (-decpt > tmp_dec)
+ decpt= - (int) tmp_dec;
+ tmp_dec=(uint) ((int) tmp_dec+decpt);
+ while (decpt++ < 0)
+ *to++='0';
+ }
+ else if (decpt == 0)
+ {
+ *to++= '0';
+ if (!tmp_dec)
+ goto end;
+ *to++='.';
+ }
+ else
+ {
+ while (decpt-- > 0)
+ *to++= *pos++;
+ if (!tmp_dec)
+ goto end;
+ *to++='.';
+ }
+ while (tmp_dec--)
+ *to++= *pos++;
+#else
+ sprintf(to,"%.*f",dec,nr);
+ to=strend(to);
+#endif
+ }
+#ifdef HAVE_FCONVERT
+ end:
+#endif
+ val_buffer->length((uint) (to-val_buffer->ptr()));
+ if (zerofill)
+ prepend_zeros(val_buffer);
+ return val_buffer;
+}
+
+
+int Field_float::cmp(const char *a_ptr, const char *b_ptr)
+{
+ float a,b;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float4get(a,a_ptr);
+ float4get(b,b_ptr);
+ }
+ else
+#endif
+ {
+ memcpy_fixed(&a,a_ptr,sizeof(float));
+ memcpy_fixed(&b,b_ptr,sizeof(float));
+ }
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+#define FLT_EXP_DIG (sizeof(float)*8-FLT_MANT_DIG)
+
+void Field_float::sort_string(char *to,uint length __attribute__((unused)))
+{
+ float nr;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float4get(nr,ptr);
+ }
+ else
+#endif
+ memcpy_fixed(&nr,ptr,sizeof(float));
+
+ uchar *tmp= (uchar*) to;
+ if (nr == (float) 0.0)
+ { /* Change to zero string */
+ tmp[0]=(uchar) 128;
+ bzero((char*) tmp+1,sizeof(nr)-1);
+ }
+ else
+ {
+#ifdef WORDS_BIGENDIAN
+ memcpy_fixed(tmp,&nr,sizeof(nr));
+#else
+ tmp[0]= ptr[3]; tmp[1]=ptr[2]; tmp[2]= ptr[1]; tmp[3]=ptr[0];
+#endif
+ if (tmp[0] & 128) /* Negative */
+ { /* make complement */
+ uint i;
+ for (i=0 ; i < sizeof(nr); i++)
+ tmp[i]=tmp[i] ^ (uchar) 255;
+ }
+ else
+ {
+ ushort exp_part=(((ushort) tmp[0] << 8) | (ushort) tmp[1] |
+ (ushort) 32768);
+ exp_part+= (ushort) 1 << (16-1-FLT_EXP_DIG);
+ tmp[0]= (uchar) (exp_part >> 8);
+ tmp[1]= (uchar) exp_part;
+ }
+ }
+}
+
+
+void Field_float::sql_type(String &res) const
+{
+ if (dec == NOT_FIXED_DEC)
+ strmov((char*) res.ptr(),"float");
+ else
+ sprintf((char*) res.ptr(),"float(%d,%d)",(int) field_length,dec);
+ add_zerofill_and_unsigned(res);
+}
+
+/****************************************************************************
+** double precision floating point numbers
+****************************************************************************/
+
+void Field_double::store(const char *from,uint len)
+{
+ String tmp_str(from,len);
+ errno=0;
+ double j= atof(tmp_str.c_ptr());
+ if (errno || current_thd->count_cuted_fields && !test_if_real(from,len))
+ current_thd->cuted_fields++;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float8store(ptr,j);
+ }
+ else
+#endif
+ doublestore(ptr,j);
+}
+
+
+void Field_double::store(double nr)
+{
+ if (dec < NOT_FIXED_DEC)
+ nr=floor(nr*log_10[dec]+0.5)/log_10[dec]; // To fixed point
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float8store(ptr,nr);
+ }
+ else
+#endif
+ doublestore(ptr,nr);
+}
+
+
+void Field_double::store(longlong nr)
+{
+ double j= (double) nr;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float8store(ptr,j);
+ }
+ else
+#endif
+ doublestore(ptr,j);
+}
+
+
+double Field_double::val_real(void)
+{
+ double j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float8get(j,ptr);
+ }
+ else
+#endif
+ doubleget(j,ptr);
+ return j;
+}
+
+longlong Field_double::val_int(void)
+{
+ double j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float8get(j,ptr);
+ }
+ else
+#endif
+ doubleget(j,ptr);
+ return ((longlong) j);
+}
+
+
+String *Field_double::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ double nr;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float8get(nr,ptr);
+ }
+ else
+#endif
+ doubleget(nr,ptr);
+
+ uint to_length=max(field_length,320);
+ val_buffer->alloc(to_length);
+ char *to=(char*) val_buffer->ptr();
+
+ if (dec >= NOT_FIXED_DEC)
+ {
+ sprintf(to,"%-*.*g",(int) field_length,DBL_DIG,nr);
+ to=strcend(to,' ');
+ }
+ else
+ {
+#ifdef HAVE_FCONVERT
+ char buff[320],*pos=buff;
+ int decpt,sign,tmp_dec=dec;
+
+ VOID(fconvert(nr,tmp_dec,&decpt,&sign,buff));
+ if (sign)
+ {
+ *to++='-';
+ }
+ if (decpt < 0)
+ { /* val_buffer is < 0 */
+ *to++='0';
+ if (!tmp_dec)
+ goto end;
+ *to++='.';
+ if (-decpt > tmp_dec)
+ decpt= - (int) tmp_dec;
+ tmp_dec=(uint) ((int) tmp_dec+decpt);
+ while (decpt++ < 0)
+ *to++='0';
+ }
+ else if (decpt == 0)
+ {
+ *to++= '0';
+ if (!tmp_dec)
+ goto end;
+ *to++='.';
+ }
+ else
+ {
+ while (decpt-- > 0)
+ *to++= *pos++;
+ if (!tmp_dec)
+ goto end;
+ *to++='.';
+ }
+ while (tmp_dec--)
+ *to++= *pos++;
+#else
+#ifdef HAVE_SNPRINTF
+ snprintf(to,to_length,"%.*f",dec,nr);
+#else
+ sprintf(to,"%.*f",dec,nr);
+#endif
+ to=strend(to);
+#endif
+ }
+#ifdef HAVE_FCONVERT
+ end:
+#endif
+
+ val_buffer->length((uint) (to-val_buffer->ptr()));
+ if (zerofill)
+ prepend_zeros(val_buffer);
+ return val_buffer;
+}
+
+
+int Field_double::cmp(const char *a_ptr, const char *b_ptr)
+{
+ double a,b;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float8get(a,a_ptr);
+ float8get(b,b_ptr);
+ }
+ else
+#endif
+ {
+ memcpy_fixed(&a,a_ptr,sizeof(double));
+ memcpy_fixed(&b,b_ptr,sizeof(double));
+ }
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+
+#define DBL_EXP_DIG (sizeof(double)*8-DBL_MANT_DIG)
+
+/* The following should work for IEEE */
+
+void Field_double::sort_string(char *to,uint length __attribute__((unused)))
+{
+ double nr;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ float8get(nr,ptr);
+ }
+ else
+#endif
+ memcpy_fixed(&nr,ptr,sizeof(nr));
+ change_double_for_sort(nr, (byte*) to);
+}
+
+
+void Field_double::sql_type(String &res) const
+{
+ if (dec == NOT_FIXED_DEC)
+ strmov((char*) res.ptr(),"double");
+ else
+ sprintf((char*) res.ptr(),"double(%d,%d)",(int) field_length,dec);
+ add_zerofill_and_unsigned(res);
+}
+
+
+/****************************************************************************
+** timestamp
+** The first timestamp in the table is automaticly updated
+** by handler.cc. The form->timestamp points at the automatic timestamp.
+****************************************************************************/
+
+Field_timestamp::Field_timestamp(char *ptr_arg, uint32 len_arg,
+ enum utype unireg_check_arg,
+ const char *field_name_arg,
+ struct st_table *table_arg)
+ :Field_num(ptr_arg, len_arg, (uchar*) 0,0,
+ unireg_check_arg, field_name_arg, table_arg,
+ 0, 1, 1)
+{
+ if (table && !table->timestamp_field)
+ {
+ table->timestamp_field= this; // Automatic timestamp
+ table->time_stamp=(ulong) (ptr_arg - (char*) table->record[0])+1;
+ flags|=TIMESTAMP_FLAG;
+ }
+}
+
+
+void Field_timestamp::store(const char *from,uint len)
+{
+ long tmp=(long) str_to_timestamp(from,len);
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,tmp);
+ }
+ else
+#endif
+ longstore(ptr,tmp);
+}
+
+void Field_timestamp::fill_and_store(char *from,uint len)
+{
+ uint res_length;
+ if (len <= field_length)
+ res_length=field_length;
+ else if (len <= 12)
+ res_length=12; /* purecov: inspected */
+ else if (len <= 14)
+ res_length=14; /* purecov: inspected */
+ else
+ res_length=(len+1)/2*2; // must be even
+ if (res_length != len)
+ {
+ bmove_upp(from+res_length,from+len,len);
+ bfill(from,res_length-len,'0');
+ len=res_length;
+ }
+ long tmp=(long) str_to_timestamp(from,len);
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,tmp);
+ }
+ else
+#endif
+ longstore(ptr,tmp);
+}
+
+
+void Field_timestamp::store(double nr)
+{
+ if (nr < 0 || nr > 99991231235959.0)
+ {
+ nr=0; // Avoid overflow on buff
+ current_thd->cuted_fields++;
+ }
+ Field_timestamp::store((longlong) rint(nr));
+}
+
+
+/*
+** Convert a datetime of formats YYMMDD, YYYYMMDD or YYMMDDHHMSS to
+** YYYYMMDDHHMMSS. The high date '99991231235959' is checked before this
+** function.
+*/
+
+static longlong fix_datetime(longlong nr)
+{
+ if (nr == LL(0) || nr >= LL(10000101000000))
+ return nr; // Normal datetime >= Year 1000
+ if (nr < 101)
+ goto err;
+ if (nr <= (YY_PART_YEAR-1)*10000L+1231L)
+ return (nr+20000000L)*1000000L; // YYMMDD, year: 2000-2069
+ if (nr < (YY_PART_YEAR)*10000L+101L)
+ goto err;
+ if (nr <= 991231L)
+ return (nr+19000000L)*1000000L; // YYMMDD, year: 1970-1999
+ if (nr < 10000101L)
+ goto err;
+ if (nr <= 99991231L)
+ return nr*1000000L;
+ if (nr < 101000000L)
+ goto err;
+ if (nr <= (YY_PART_YEAR-1)*LL(10000000000)+LL(1231235959))
+ return nr+LL(20000000000000); // YYMMDDHHMMSS, 2000-2069
+ if (nr < YY_PART_YEAR*LL(10000000000)+ LL(101000000))
+ goto err;
+ if (nr <= LL(991231235959))
+ return nr+LL(19000000000000); // YYMMDDHHMMSS, 1970-1999
+
+ err:
+ current_thd->cuted_fields++;
+ return LL(0);
+}
+
+
+void Field_timestamp::store(longlong nr)
+{
+ TIME l_time;
+ time_t timestamp;
+ long part1,part2;
+
+ if ((nr=fix_datetime(nr)))
+ {
+ part1=(long) (nr/LL(1000000));
+ part2=(long) (nr - (longlong) part1*LL(1000000));
+ l_time.year= part1/10000L; part1%=10000L;
+ l_time.month= (int) part1 / 100;
+ l_time.day= (int) part1 % 100;
+ l_time.hour= part2/10000L; part2%=10000L;
+ l_time.minute=(int) part2 / 100;
+ l_time.second=(int) part2 % 100;
+ timestamp=my_gmt_sec(&l_time);
+ }
+ else
+ timestamp=0;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,timestamp);
+ }
+ else
+#endif
+ longstore(ptr,timestamp);
+}
+
+
+double Field_timestamp::val_real(void)
+{
+ return (double) Field_timestamp::val_int();
+}
+
+longlong Field_timestamp::val_int(void)
+{
+ uint len,pos;
+ int part_time;
+ uint32 temp;
+ time_t time_arg;
+ struct tm *l_time;
+ longlong res;
+ struct tm tm_tmp;
+
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ temp=uint4korr(ptr);
+ else
+#endif
+ longget(temp,ptr);
+
+ if (temp == 0L) // No time
+ return(0); /* purecov: inspected */
+ time_arg=(time_t) temp;
+ localtime_r(&time_arg,&tm_tmp);
+ l_time=&tm_tmp;
+ res=(longlong) 0;
+ for (pos=len=0; len+1 < (uint) field_length ; len+=2,pos++)
+ {
+ bool year_flag=0;
+ switch (dayord.pos[pos]) {
+ case 0: part_time=l_time->tm_year % 100; year_flag=1 ; break;
+ case 1: part_time=l_time->tm_mon+1; break;
+ case 2: part_time=l_time->tm_mday; break;
+ case 3: part_time=l_time->tm_hour; break;
+ case 4: part_time=l_time->tm_min; break;
+ case 5: part_time=l_time->tm_sec; break;
+ default: part_time=0; break; /* purecov: deadcode */
+ }
+ if (year_flag && (field_length == 8 || field_length == 14))
+ {
+ res=res*(longlong) 10000+(part_time+
+ ((part_time < YY_PART_YEAR) ? 2000 : 1900));
+ len+=2;
+ }
+ else
+ res=res*(longlong) 100+part_time;
+ }
+ return (longlong) res;
+}
+
+
+String *Field_timestamp::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ uint pos;
+ int part_time;
+ uint32 temp;
+ time_t time_arg;
+ struct tm *l_time;
+ struct tm tm_tmp;
+
+ val_buffer->alloc(field_length+1);
+ char *to=(char*) val_buffer->ptr(),*end=to+field_length;
+
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ temp=uint4korr(ptr);
+ else
+#endif
+ longget(temp,ptr);
+
+ if (temp == 0L)
+ { /* Zero time is "000000" */
+ VOID(strfill(to,field_length,'0'));
+ val_buffer->length(field_length);
+ return val_buffer;
+ }
+ time_arg=(time_t) temp;
+ localtime_r(&time_arg,&tm_tmp);
+ l_time=&tm_tmp;
+ for (pos=0; to < end ; pos++)
+ {
+ bool year_flag=0;
+ switch (dayord.pos[pos]) {
+ case 0: part_time=l_time->tm_year % 100; year_flag=1; break;
+ case 1: part_time=l_time->tm_mon+1; break;
+ case 2: part_time=l_time->tm_mday; break;
+ case 3: part_time=l_time->tm_hour; break;
+ case 4: part_time=l_time->tm_min; break;
+ case 5: part_time=l_time->tm_sec; break;
+ default: part_time=0; break; /* purecov: deadcode */
+ }
+ if (year_flag && (field_length == 8 || field_length == 14))
+ {
+ if (part_time < YY_PART_YEAR)
+ {
+ *to++='2'; *to++='0'; /* purecov: inspected */
+ }
+ else
+ {
+ *to++='1'; *to++='9';
+ }
+ }
+ *to++=(char) ('0'+((uint) part_time/10));
+ *to++=(char) ('0'+((uint) part_time % 10));
+ }
+ *to=0; // Safeguard
+ val_buffer->length((uint) (to-val_buffer->ptr()));
+ return val_buffer;
+}
+
+bool Field_timestamp::get_date(TIME *ltime,
+ bool fuzzydate __attribute__((unused)))
+{
+ long temp;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ temp=uint4korr(ptr);
+ else
+#endif
+ longget(temp,ptr);
+ if (temp == 0L)
+ { /* Zero time is "000000" */
+ bzero((char*) ltime,sizeof(*ltime));
+ }
+ else
+ {
+ struct tm tm_tmp;
+ time_t time_arg= (time_t) temp;
+ localtime_r(&time_arg,&tm_tmp);
+ struct tm *start= &tm_tmp;
+ ltime->year= start->tm_year+1900;
+ ltime->month= start->tm_mon+1;
+ ltime->day= start->tm_mday;
+ ltime->hour= start->tm_hour;
+ ltime->minute= start->tm_min;
+ ltime->second= start->tm_sec;
+ ltime->second_part= 0;
+ ltime->neg= 0;
+ }
+ return 0;
+}
+
+bool Field_timestamp::get_time(TIME *ltime)
+{
+ Field_timestamp::get_date(ltime,0);
+ return 0;
+}
+
+int Field_timestamp::cmp(const char *a_ptr, const char *b_ptr)
+{
+ int32 a,b;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ a=sint4korr(a_ptr);
+ b=sint4korr(b_ptr);
+ }
+ else
+#endif
+ {
+ longget(a,a_ptr);
+ longget(b,b_ptr);
+ }
+ return ((uint32) a < (uint32) b) ? -1 : ((uint32) a > (uint32) b) ? 1 : 0;
+}
+
+void Field_timestamp::sort_string(char *to,uint length __attribute__((unused)))
+{
+#ifdef WORDS_BIGENDIAN
+ if (!table->db_low_byte_first)
+ {
+ to[0] = ptr[0];
+ to[1] = ptr[1];
+ to[2] = ptr[2];
+ to[3] = ptr[3];
+ }
+ else
+#endif
+ {
+ to[0] = ptr[3];
+ to[1] = ptr[2];
+ to[2] = ptr[1];
+ to[3] = ptr[0];
+ }
+}
+
+
+void Field_timestamp::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"timestamp(%d)",(int) field_length);
+ res.length(strlen(res.ptr()));
+}
+
+
+void Field_timestamp::set_time()
+{
+ long tmp= (long) current_thd->query_start();
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,tmp);
+ }
+ else
+#endif
+ longstore(ptr,tmp);
+}
+
+/****************************************************************************
+** time type
+** In string context: HH:MM:SS
+** In number context: HHMMSS
+** Stored as a 3 byte unsigned int
+****************************************************************************/
+
+void Field_time::store(const char *from,uint len)
+{
+ TIME ltime;
+ long tmp;
+ if (str_to_time(from,len,&ltime))
+ tmp=0L;
+ else
+ {
+ if (ltime.month)
+ ltime.day=0;
+ tmp=(ltime.day*24L+ltime.hour)*10000L+(ltime.minute*100+ltime.second);
+ if (tmp > 8385959)
+ {
+ tmp=8385959;
+ current_thd->cuted_fields++;
+ }
+ }
+ if (ltime.neg)
+ tmp= -tmp;
+ Field_time::store((longlong) tmp);
+}
+
+
+void Field_time::store(double nr)
+{
+ long tmp;
+ if (nr > 8385959.0)
+ {
+ tmp=8385959L;
+ current_thd->cuted_fields++;
+ }
+ else if (nr < -8385959.0)
+ {
+ tmp= -8385959L;
+ current_thd->cuted_fields++;
+ }
+ else
+ {
+ tmp=(long) floor(fabs(nr)); // Remove fractions
+ if (nr < 0)
+ tmp= -tmp;
+ if (tmp % 100 > 59 || tmp/100 % 100 > 59)
+ {
+ tmp=0;
+ current_thd->cuted_fields++;
+ }
+ }
+ int3store(ptr,tmp);
+}
+
+
+void Field_time::store(longlong nr)
+{
+ long tmp;
+ if (nr > (longlong) 8385959L)
+ {
+ tmp=8385959L;
+ current_thd->cuted_fields++;
+ }
+ else if (nr < (longlong) -8385959L)
+ {
+ tmp= -8385959L;
+ current_thd->cuted_fields++;
+ }
+ else
+ {
+ tmp=(long) nr;
+ if (tmp % 100 > 59 || tmp/100 % 100 > 59)
+ {
+ tmp=0;
+ current_thd->cuted_fields++;
+ }
+ }
+ int3store(ptr,tmp);
+}
+
+
+double Field_time::val_real(void)
+{
+ ulong j= (ulong) uint3korr(ptr);
+ return (double) j;
+}
+
+longlong Field_time::val_int(void)
+{
+ return (longlong) sint3korr(ptr);
+}
+
+String *Field_time::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ val_buffer->alloc(16);
+ long tmp=(long) sint3korr(ptr);
+ const char *sign="";
+ if (tmp < 0)
+ {
+ tmp= -tmp;
+ sign= "-";
+ }
+ sprintf((char*) val_buffer->ptr(),"%s%02d:%02d:%02d",
+ sign,(int) (tmp/10000), (int) (tmp/100 % 100),
+ (int) (tmp % 100));
+ val_buffer->length(strlen(val_buffer->ptr()));
+ return val_buffer;
+}
+
+bool Field_time::get_time(TIME *ltime)
+{
+ long tmp=(long) sint3korr(ptr);
+ ltime->neg=0;
+ if (tmp < 0)
+ {
+ ltime->neg= 1;
+ tmp=-tmp;
+ }
+ ltime->day=tmp/10000;
+ tmp-=ltime->day*10000;
+ ltime->hour= tmp/100;
+ ltime->second= tmp % 100;
+ ltime->second_part=0;
+ return 0;
+}
+
+int Field_time::cmp(const char *a_ptr, const char *b_ptr)
+{
+ long a,b;
+ a=(long) sint3korr(a_ptr);
+ b=(long) sint3korr(b_ptr);
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+void Field_time::sort_string(char *to,uint length __attribute__((unused)))
+{
+ to[0] = (uchar) (ptr[2] ^ 128);
+ to[1] = ptr[1];
+ to[2] = ptr[0];
+}
+
+void Field_time::sql_type(String &res) const
+{
+ res.set("time",4);
+}
+
+/****************************************************************************
+** year type
+** Save in a byte the year 0, 1901->2155
+** Can handle 2 byte or 4 byte years!
+****************************************************************************/
+
+void Field_year::store(const char *from, uint len)
+{
+ String tmp_str(from,len);
+ long nr= strtol(tmp_str.c_ptr(),NULL,10);
+
+ if (nr < 0 || nr >= 100 && nr <= 1900 || nr > 2155)
+ {
+ *ptr=0;
+ current_thd->cuted_fields++;
+ return;
+ }
+ else if (current_thd->count_cuted_fields && !test_if_int(from,len))
+ current_thd->cuted_fields++;
+ if (nr != 0 || len != 4)
+ {
+ if (nr < YY_PART_YEAR)
+ nr+=100; // 2000 - 2069
+ else if (nr > 1900)
+ nr-= 1900;
+ }
+ *ptr= (char) (unsigned char) nr;
+}
+
+void Field_year::store(double nr)
+{
+ if (nr < 0.0 || nr >= 2155.0)
+ Field_year::store((longlong) -1);
+ else
+ Field_year::store((longlong) nr);
+}
+
+void Field_year::store(longlong nr)
+{
+ if (nr < 0 || nr >= 100 && nr <= 1900 || nr > 2155)
+ {
+ *ptr=0;
+ current_thd->cuted_fields++;
+ return;
+ }
+ if (nr != 0 || field_length != 4) // 0000 -> 0; 00 -> 2000
+ {
+ if (nr < YY_PART_YEAR)
+ nr+=100; // 2000 - 2069
+ else if (nr > 1900)
+ nr-= 1900;
+ }
+ *ptr= (char) (unsigned char) nr;
+}
+
+
+double Field_year::val_real(void)
+{
+ return (double) Field_year::val_int();
+}
+
+longlong Field_year::val_int(void)
+{
+ int tmp= (int) ((uchar*) ptr)[0];
+ if (field_length != 4)
+ tmp%=100; // Return last 2 char
+ else if (tmp)
+ tmp+=1900;
+ return (longlong) tmp;
+}
+
+String *Field_year::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ val_buffer->alloc(5);
+ val_buffer->length(field_length);
+ char *to=(char*) val_buffer->ptr();
+ sprintf(to,field_length == 2 ? "%02d" : "%04d",(int) Field_year::val_int());
+ return val_buffer;
+}
+
+void Field_year::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"year(%d)",(int) field_length);
+ res.length(strlen(res.ptr()));
+}
+
+
+/****************************************************************************
+** date type
+** In string context: YYYY-MM-DD
+** In number context: YYYYMMDD
+** Stored as a 4 byte unsigned int
+****************************************************************************/
+
+void Field_date::store(const char *from,uint len)
+{
+ TIME l_time;
+ ulong tmp;
+ if (str_to_TIME(from,len,&l_time,1) == TIMESTAMP_NONE)
+ tmp=0;
+ else
+ tmp=(ulong) l_time.year*10000L + (ulong) (l_time.month*100+l_time.day);
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,tmp);
+ }
+ else
+#endif
+ longstore(ptr,tmp);
+}
+
+
+void Field_date::store(double nr)
+{
+ long tmp;
+ if (nr >= 19000000000000.0 && nr <= 99991231235959.0)
+ nr=floor(nr/1000000.0); // Timestamp to date
+ if (nr < 0.0 || nr > 99991231.0)
+ {
+ tmp=0L;
+ current_thd->cuted_fields++;
+ }
+ else
+ tmp=(long) rint(nr);
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,tmp);
+ }
+ else
+#endif
+ longstore(ptr,tmp);
+}
+
+
+void Field_date::store(longlong nr)
+{
+ long tmp;
+ if (nr >= LL(19000000000000) && nr < LL(99991231235959))
+ nr=nr/LL(1000000); // Timestamp to date
+ if (nr < 0 || nr > LL(99991231))
+ {
+ tmp=0L;
+ current_thd->cuted_fields++;
+ }
+ else
+ tmp=(long) nr;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,tmp);
+ }
+ else
+#endif
+ longstore(ptr,tmp);
+}
+
+
+double Field_date::val_real(void)
+{
+ int32 j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint4korr(ptr);
+ else
+#endif
+ longget(j,ptr);
+ return (double) (uint32) j;
+}
+
+longlong Field_date::val_int(void)
+{
+ int32 j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint4korr(ptr);
+ else
+#endif
+ longget(j,ptr);
+ return (longlong) (uint32) j;
+}
+
+String *Field_date::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ val_buffer->alloc(field_length);
+ val_buffer->length(field_length);
+ int32 tmp;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ tmp=sint4korr(ptr);
+ else
+#endif
+ longget(tmp,ptr);
+ sprintf((char*) val_buffer->ptr(),"%04d-%02d-%02d",
+ (int) ((uint32) tmp/10000L % 10000), (int) ((uint32) tmp/100 % 100),
+ (int) ((uint32) tmp % 100));
+ return val_buffer;
+}
+
+int Field_date::cmp(const char *a_ptr, const char *b_ptr)
+{
+ int32 a,b;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ a=sint4korr(a_ptr);
+ b=sint4korr(b_ptr);
+ }
+ else
+#endif
+ {
+ longget(a,a_ptr);
+ longget(b,b_ptr);
+ }
+ return ((uint32) a < (uint32) b) ? -1 : ((uint32) a > (uint32) b) ? 1 : 0;
+}
+
+
+void Field_date::sort_string(char *to,uint length __attribute__((unused)))
+{
+#ifdef WORDS_BIGENDIAN
+ if (!table->db_low_byte_first)
+ {
+ to[0] = ptr[0];
+ to[1] = ptr[1];
+ to[2] = ptr[2];
+ to[3] = ptr[3];
+ }
+ else
+#endif
+ {
+ to[0] = ptr[3];
+ to[1] = ptr[2];
+ to[2] = ptr[1];
+ to[3] = ptr[0];
+ }
+}
+
+void Field_date::sql_type(String &res) const
+{
+ res.set("date",4);
+}
+
+/****************************************************************************
+** The new date type
+** This is identical to the old date type, but stored on 3 bytes instead of 4
+** In number context: YYYYMMDD
+****************************************************************************/
+
+void Field_newdate::store(const char *from,uint len)
+{
+ TIME l_time;
+ long tmp;
+ if (str_to_TIME(from,len,&l_time,1) == TIMESTAMP_NONE)
+ tmp=0L;
+ else
+ tmp= l_time.day + l_time.month*32 + l_time.year*16*32;
+ int3store(ptr,tmp);
+}
+
+void Field_newdate::store(double nr)
+{
+ if (nr < 0.0 || nr > 99991231235959.0)
+ Field_newdate::store((longlong) -1);
+ else
+ Field_newdate::store((longlong) rint(nr));
+}
+
+
+void Field_newdate::store(longlong nr)
+{
+ long tmp;
+ if (nr >= LL(100000000) && nr <= LL(99991231235959))
+ nr=nr/LL(1000000); // Timestamp to date
+ if (nr < 0L || nr > 99991231L)
+ {
+ tmp=0;
+ current_thd->cuted_fields++;
+ }
+ else
+ {
+ tmp=(long) nr;
+ if (tmp)
+ {
+ if (tmp < YY_PART_YEAR*10000L) // Fix short dates
+ tmp+=20000000L;
+ else if (tmp < 999999L)
+ tmp+=19000000L;
+ }
+ uint month=((tmp/100) % 100);
+ uint day= tmp%100;
+ if (month > 12 || day > 31)
+ {
+ tmp=0L; // Don't allow date to change
+ current_thd->cuted_fields++;
+ }
+ else
+ tmp= day + month*32 + (tmp/10000)*16*32;
+ }
+ int3store(ptr,tmp);
+}
+
+void Field_newdate::store_time(TIME *ltime,timestamp_type type)
+{
+ long tmp;
+ if (type == TIMESTAMP_DATE || type == TIMESTAMP_FULL)
+ tmp=ltime->year*16*32+ltime->month*32+ltime->day;
+ else
+ {
+ tmp=0;
+ current_thd->cuted_fields++;
+ }
+ int3store(ptr,tmp);
+}
+
+
+
+double Field_newdate::val_real(void)
+{
+ return (double) Field_newdate::val_int();
+}
+
+longlong Field_newdate::val_int(void)
+{
+ ulong j=uint3korr(ptr);
+ j= (j % 32L)+(j / 32L % 16L)*100L + (j/(16L*32L))*10000L;
+ return (longlong) j;
+}
+
+String *Field_newdate::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ val_buffer->alloc(field_length);
+ val_buffer->length(field_length);
+ ulong tmp=(ulong) uint3korr(ptr);
+ int part;
+ char *pos=(char*) val_buffer->ptr()+10;
+
+ /* Open coded to get more speed */
+ *pos--=0;
+ part=(int) (tmp & 31);
+ *pos--='0'+part%10;
+ *pos--='0'+part/10;
+ *pos--='-';
+ part=(int) (tmp >> 5 & 15);
+ *pos--='0'+part%10;
+ *pos--='0'+part/10;
+ *pos--='-';
+ part=(int) (tmp >> 9);
+ *pos--='0'+part%10; part/=10;
+ *pos--='0'+part%10; part/=10;
+ *pos--='0'+part%10; part/=10;
+ *pos='0'+part;
+ return val_buffer;
+}
+
+bool Field_newdate::get_date(TIME *ltime,bool fuzzydate)
+{
+ if (is_null())
+ return 1;
+ ulong tmp=(ulong) uint3korr(ptr);
+ bzero((char*) ltime,sizeof(*ltime));
+ ltime->day= tmp & 31;
+ ltime->month= (tmp >> 5) & 15;
+ ltime->year= (tmp >> 9);
+ return (!fuzzydate && (!ltime->month || !ltime->day) && ltime->year) ? 1 : 0;
+}
+
+bool Field_newdate::get_time(TIME *ltime)
+{
+ Field_newdate::get_date(ltime,0);
+ return 0;
+}
+
+int Field_newdate::cmp(const char *a_ptr, const char *b_ptr)
+{
+ ulong a,b;
+ a=(ulong) uint3korr(a_ptr);
+ b=(ulong) uint3korr(b_ptr);
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+void Field_newdate::sort_string(char *to,uint length __attribute__((unused)))
+{
+ to[0] = ptr[2];
+ to[1] = ptr[1];
+ to[2] = ptr[0];
+}
+
+void Field_newdate::sql_type(String &res) const
+{
+ res.set("date",4);
+}
+
+
+/****************************************************************************
+** datetime type
+** In string context: YYYY-MM-DD HH:MM:DD
+** In number context: YYYYMMDDHHMMDD
+** Stored as a 8 byte unsigned int. Should sometimes be change to a 6 byte int.
+****************************************************************************/
+
+void Field_datetime::store(const char *from,uint len)
+{
+ longlong tmp=str_to_datetime(from,len,1);
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int8store(ptr,tmp);
+ }
+ else
+#endif
+ longlongstore(ptr,tmp);
+}
+
+
+void Field_datetime::store(double nr)
+{
+ if (nr < 0.0 || nr > 99991231235959.0)
+ {
+ nr=0.0;
+ current_thd->cuted_fields++;
+ }
+ Field_datetime::store((longlong) rint(nr));
+}
+
+
+void Field_datetime::store(longlong nr)
+{
+ if (nr < 0 || nr > LL(99991231235959))
+ {
+ nr=0;
+ current_thd->cuted_fields++;
+ }
+ else
+ nr=fix_datetime(nr);
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int8store(ptr,nr);
+ }
+ else
+#endif
+ longlongstore(ptr,nr);
+}
+
+void Field_datetime::store_time(TIME *ltime,timestamp_type type)
+{
+ longlong tmp;
+ if (type == TIMESTAMP_DATE || type == TIMESTAMP_FULL)
+ tmp=((ltime->year*10000L+ltime->month*100+ltime->day)*LL(1000000)+
+ (ltime->hour*10000L+ltime->minute*100+ltime->second));
+ else
+ {
+ tmp=0;
+ current_thd->cuted_fields++;
+ }
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int8store(ptr,tmp);
+ }
+ else
+#endif
+ longlongstore(ptr,tmp);
+}
+
+
+double Field_datetime::val_real(void)
+{
+ return (double) Field_datetime::val_int();
+}
+
+longlong Field_datetime::val_int(void)
+{
+ longlong j;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ j=sint8korr(ptr);
+ else
+#endif
+ longlongget(j,ptr);
+ return j;
+}
+
+
+String *Field_datetime::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ val_buffer->alloc(field_length);
+ val_buffer->length(field_length);
+ ulonglong tmp;
+ long part1,part2;
+ char *pos;
+ int part3;
+
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ tmp=sint8korr(ptr);
+ else
+#endif
+ longlongget(tmp,ptr);
+
+ /*
+ Avoid problem with slow longlong aritmetic and sprintf
+ */
+
+ part1=(long) (tmp/LL(1000000));
+ part2=(long) (tmp - (ulonglong) part1*LL(1000000));
+
+ pos=(char*) val_buffer->ptr()+19;
+ *pos--=0;
+ *pos--='0'+(char) (part2%10); part2/=10;
+ *pos--='0'+(char) (part2%10); part3= (int) (part2 / 10);
+ *pos--=':';
+ *pos--='0'+(char) (part3%10); part3/=10;
+ *pos--='0'+(char) (part3%10); part3/=10;
+ *pos--=':';
+ *pos--='0'+(char) (part3%10); part3/=10;
+ *pos--='0'+(char) part3;
+ *pos--=' ';
+ *pos--='0'+(char) (part1%10); part1/=10;
+ *pos--='0'+(char) (part1%10); part1/=10;
+ *pos--='-';
+ *pos--='0'+(char) (part1%10); part1/=10;
+ *pos--='0'+(char) (part1%10); part3= (int) (part1/10);
+ *pos--='-';
+ *pos--='0'+(char) (part3%10); part3/=10;
+ *pos--='0'+(char) (part3%10); part3/=10;
+ *pos--='0'+(char) (part3%10); part3/=10;
+ *pos='0'+(char) part3;
+ return val_buffer;
+}
+
+bool Field_datetime::get_date(TIME *ltime,bool fuzzydate)
+{
+ longlong tmp=Field_datetime::val_int();
+ long part1,part2;
+ part1=(long) (tmp/LL(1000000));
+ part2=(long) (tmp - (ulonglong) part1*LL(1000000));
+
+ ltime->neg=0;
+ ltime->second_part=0;
+ ltime->second= part2%100;
+ ltime->minute= part2/100%100;
+ ltime->hour= part2/10000;
+ ltime->day= part1%100;
+ ltime->month= part1/100%100;
+ ltime->year= part1/10000;
+ return (!fuzzydate && (!ltime->month || !ltime->day) && ltime->year) ? 1 : 0;
+}
+
+bool Field_datetime::get_time(TIME *ltime)
+{
+ Field_datetime::get_date(ltime,0);
+ return 0;
+}
+
+int Field_datetime::cmp(const char *a_ptr, const char *b_ptr)
+{
+ longlong a,b;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ a=sint8korr(a_ptr);
+ b=sint8korr(b_ptr);
+ }
+ else
+#endif
+ {
+ longlongget(a,a_ptr);
+ longlongget(b,b_ptr);
+ }
+ return ((ulonglong) a < (ulonglong) b) ? -1 :
+ ((ulonglong) a > (ulonglong) b) ? 1 : 0;
+}
+
+void Field_datetime::sort_string(char *to,uint length __attribute__((unused)))
+{
+#ifdef WORDS_BIGENDIAN
+ if (!table->db_low_byte_first)
+ {
+ to[0] = ptr[0];
+ to[1] = ptr[1];
+ to[2] = ptr[2];
+ to[3] = ptr[3];
+ to[4] = ptr[4];
+ to[5] = ptr[5];
+ to[6] = ptr[6];
+ to[7] = ptr[7];
+ }
+ else
+#endif
+ {
+ to[0] = ptr[7];
+ to[1] = ptr[6];
+ to[2] = ptr[5];
+ to[3] = ptr[4];
+ to[4] = ptr[3];
+ to[5] = ptr[2];
+ to[6] = ptr[1];
+ to[7] = ptr[0];
+ }
+}
+
+
+void Field_datetime::sql_type(String &res) const
+{
+ res.set("datetime",8);
+}
+
+/****************************************************************************
+** string type
+** A string may be varchar or binary
+****************************************************************************/
+
+ /* Copy a string and fill with space */
+
+void Field_string::store(const char *from,uint length)
+{
+#ifdef USE_TIS620
+ if(!binary_flag) {
+ ThNormalize((uchar *)ptr, field_length, (uchar *)from, length);
+ if(length < field_length) {
+ bfill(ptr + length, field_length - length, ' ');
+ }
+ }
+#else
+ if (length <= field_length)
+ {
+ memcpy(ptr,from,length);
+ if (length < field_length)
+ bfill(ptr+length,field_length-length,' ');
+ }
+ else
+ {
+ memcpy(ptr,from,field_length);
+ if (current_thd->count_cuted_fields)
+ { // Check if we loosed some info
+ const char *end=from+length;
+ for (from+=field_length ; from != end ; from++)
+ {
+ if (!isspace(*from))
+ {
+ current_thd->cuted_fields++;
+ break;
+ }
+ }
+ }
+ }
+#endif /* USE_TIS620 */
+}
+
+
+void Field_string::store(double nr)
+{
+ char buff[MAX_FIELD_WIDTH],*end;
+ int width=min(field_length,DBL_DIG+5);
+ sprintf(buff,"%-*.*g",width,max(width-5,0),nr);
+ end=strcend(buff,' ');
+ Field_string::store(buff,(uint) (end - buff));
+}
+
+
+void Field_string::store(longlong nr)
+{
+ char buff[22];
+ char *end=longlong10_to_str(nr,buff,-10);
+ Field_string::store(buff,end-buff);
+}
+
+
+double Field_string::val_real(void)
+{
+ double value;
+ char save=ptr[field_length]; // Ok to patch record
+ ptr[field_length]=0;
+ value=atof(ptr);
+ ptr[field_length]=save;
+ return value;
+}
+
+
+longlong Field_string::val_int(void)
+{
+ longlong value;
+ char save=ptr[field_length]; // Ok to patch record
+ ptr[field_length]=0;
+ value=strtoll(ptr,NULL,10);
+ ptr[field_length]=save;
+ return value;
+}
+
+
+String *Field_string::val_str(String *val_buffer __attribute__((unused)),
+ String *val_ptr)
+{
+ char *end=ptr+field_length;
+#ifdef WANT_TRUE_BINARY_STRINGS
+ if (!binary)
+#endif
+ while (end > ptr && end[-1] == ' ')
+ end--;
+ val_ptr->set((const char*) ptr,(uint) (end - ptr));
+ return val_ptr;
+}
+
+
+int Field_string::cmp(const char *a_ptr, const char *b_ptr)
+{
+ if (binary_flag)
+ return memcmp(a_ptr,b_ptr,field_length);
+ else
+ return my_sortcmp(a_ptr,b_ptr,field_length);
+}
+
+void Field_string::sort_string(char *to,uint length)
+{
+ if (binary_flag)
+ memcpy((byte*) to,(byte*) ptr,(size_t) length);
+ else
+ {
+#ifdef USE_STRCOLL
+ if (use_strcoll(default_charset_info)) {
+ uint tmp=my_strnxfrm(default_charset_info,
+ (unsigned char *)to, (unsigned char *) ptr,
+ length, field_length);
+ if (tmp < length)
+ bzero(to + tmp, length - tmp);
+ }
+ else
+#endif
+ for (char *from=ptr,*end=ptr+length ; from != end ;)
+ *to++=(char) my_sort_order[(uint) (uchar) *from++];
+ }
+}
+
+
+void Field_string::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"%s(%d)",
+ field_length > 3 &&
+ (table->db_options_in_use & HA_OPTION_PACK_RECORD) ?
+ "varchar" : "char",
+ (int) field_length);
+ res.length(strlen(res.ptr()));
+ if (binary_flag)
+ res.append(" binary");
+}
+
+
+char *Field_string::pack(char *to, const char *from, uint max_length)
+{
+ const char *end=from+min(field_length,max_length);
+ uchar length;
+ while (end > from && end[-1] == ' ')
+ end--;
+ *to= length=(uchar) (end-from);
+ memcpy(to+1, from, (int) length);
+ return to+1+length;
+}
+
+
+const char *Field_string::unpack(char *to, const char *from)
+{
+ uint length= (uint) (uchar) *from++;
+ memcpy(to, from, (int) length);
+ bfill(to+length, field_length - length, ' ');
+ return from+length;
+}
+
+
+int Field_string::pack_cmp(const char *a, const char *b, uint length)
+{
+ uint a_length= (uint) (uchar) *a++;
+ uint b_length= (uint) (uchar) *b++;
+
+ if (binary_flag)
+ {
+ int cmp= memcmp(a,b,min(a_length,b_length));
+ return cmp ? cmp : (int) (a_length - b_length);
+ }
+ return my_sortncmp(a,a_length, b,b_length);
+}
+
+
+uint Field_string::packed_col_length(const char *ptr)
+{
+ if (field_length > 255)
+ return uint2korr(ptr)+2;
+ else
+ return (uint) ((uchar) *ptr)+1;
+}
+
+uint Field_string::max_packed_col_length(uint max_length)
+{
+ return (field_length > 255 ? 2 : 1)+max_length;
+}
+
+
+/****************************************************************************
+** VARCHAR type (Not available for the end user yet)
+****************************************************************************/
+
+
+void Field_varstring::store(const char *from,uint length)
+{
+#ifdef USE_TIS620
+ if(!binary_flag)
+ {
+ ThNormalize((uchar *) ptr+2, field_length, (uchar *) from, length);
+ }
+#else
+ if (length <= field_length)
+ {
+ memcpy(ptr+2,from,length);
+ }
+ else
+ {
+ length=field_length;
+ memcpy(ptr+2,from,field_length);
+ current_thd->cuted_fields++;
+ }
+#endif /* USE_TIS620 */
+ int2store(ptr,length);
+}
+
+
+void Field_varstring::store(double nr)
+{
+ char buff[MAX_FIELD_WIDTH],*end;
+ int width=min(field_length,DBL_DIG+5);
+ sprintf(buff,"%-*.*g",width,max(width-5,0),nr);
+ end=strcend(buff,' ');
+ Field_varstring::store(buff,(uint) (end - buff));
+}
+
+
+void Field_varstring::store(longlong nr)
+{
+ char buff[22];
+ char *end=longlong10_to_str(nr,buff,-10);
+ Field_varstring::store(buff,end-buff);
+}
+
+
+double Field_varstring::val_real(void)
+{
+ double value;
+ uint length=uint2korr(ptr)+2;
+ char save=ptr[length]; // Ok to patch record
+ ptr[length]=0;
+ value=atof(ptr+2);
+ ptr[length]=save;
+ return value;
+}
+
+
+longlong Field_varstring::val_int(void)
+{
+ longlong value;
+ uint length=uint2korr(ptr)+2;
+ char save=ptr[length]; // Ok to patch record
+ ptr[length]=0;
+ value=strtoll(ptr+2,NULL,10);
+ ptr[length]=save;
+ return value;
+}
+
+
+String *Field_varstring::val_str(String *val_buffer __attribute__((unused)),
+ String *val_ptr)
+{
+ uint length=uint2korr(ptr);
+ val_ptr->set((const char*) ptr+2,length);
+ return val_ptr;
+}
+
+
+int Field_varstring::cmp(const char *a_ptr, const char *b_ptr)
+{
+ uint a_length=uint2korr(a_ptr);
+ uint b_length=uint2korr(b_ptr);
+ int diff;
+ if (binary_flag)
+ diff=memcmp(a_ptr+2,b_ptr+2,min(a_length,b_length));
+ else
+ diff=my_sortcmp(a_ptr+2,b_ptr+2,min(a_length,b_length));
+ return diff ? diff : (int) (a_length - b_length);
+}
+
+void Field_varstring::sort_string(char *to,uint length)
+{
+ uint tot_length=uint2korr(ptr);
+ if (binary_flag)
+ memcpy((byte*) to,(byte*) ptr+2,(size_t) tot_length);
+ else
+ {
+#ifdef USE_STRCOLL
+ if (use_strcoll(default_charset_info))
+ tot_length=my_strnxfrm(default_charset_info,
+ (unsigned char *) to, (unsigned char *)ptr+2,
+ length, tot_length);
+ else
+ {
+#endif
+ char *tmp=to;
+ if (tot_length > length)
+ tot_length=length;
+ for (char *from=ptr+2,*end=from+tot_length ; from != end ;)
+ *tmp++=(char) my_sort_order[(uint) (uchar) *from++];
+#ifdef USE_STRCOLL
+ }
+#endif
+ }
+ if (tot_length < length)
+ bzero(to+tot_length,length-tot_length);
+}
+
+
+void Field_varstring::sql_type(String &res) const
+{
+ sprintf((char*) res.ptr(),"varchar(%d)",(int) field_length);
+ res.length(strlen(res.ptr()));
+ if (binary_flag)
+ res.append(" binary");
+}
+
+char *Field_varstring::pack(char *to, const char *from, uint max_length)
+{
+ uint length=uint2korr(to);
+ if (length > max_length)
+ length=max_length;
+ *to++= (length & 255);
+ if (max_length > 255)
+ *to++= (uchar) (length >> 8);
+ if (length)
+ memcpy(to, from+2, length);
+ return to+length;
+}
+
+
+const char *Field_varstring::unpack(char *to, const char *from)
+{
+ uint length;
+ if (field_length > 255)
+ {
+ length= (uint) (uchar) (*to= *from++);
+ to[1]=0;
+ }
+ else
+ {
+ length=uint2korr(from);
+ to[0] = *from++;
+ to[1] = *from++;
+ }
+ if (length)
+ memcpy(to+2, from, length);
+ return from+length;
+}
+
+
+int Field_varstring::pack_cmp(const char *a, const char *b, uint key_length)
+{
+ uint a_length;
+ uint b_length;
+ if (key_length > 255)
+ {
+ a_length=uint2korr(a); a+=2;
+ b_length=uint2korr(b); b+=2;
+ }
+ else
+ {
+ a_length= (uint) (uchar) *a++;
+ b_length= (uint) (uchar) *b++;
+ }
+ if (binary_flag)
+ {
+ int cmp= memcmp(a,b,min(a_length,b_length));
+ return cmp ? cmp : (int) (a_length - b_length);
+ }
+ return my_sortncmp(a,a_length, b,b_length);
+}
+
+uint Field_varstring::packed_col_length(const char *ptr)
+{
+ if (field_length > 255)
+ return uint2korr(ptr)+2;
+ else
+ return (uint) ((uchar) *ptr)+1;
+}
+
+uint Field_varstring::max_packed_col_length(uint max_length)
+{
+ return (field_length > 255 ? 2 : 1)+max_length;
+}
+
+/****************************************************************************
+** blob type
+** A blob is saved as a length and a pointer. The length is stored in the
+** packlength slot and may be from 1-4.
+****************************************************************************/
+
+Field_blob::Field_blob(char *ptr_arg, uchar *null_ptr_arg, uint null_bit_arg,
+ enum utype unireg_check_arg, const char *field_name_arg,
+ struct st_table *table_arg,uint blob_pack_length,
+ bool binary_arg)
+ :Field_str(ptr_arg, (1L << min(blob_pack_length,3)*8)-1L,
+ null_ptr_arg, null_bit_arg, unireg_check_arg, field_name_arg,
+ table_arg),
+ packlength(blob_pack_length),binary_flag(binary_arg)
+{
+ flags|= BLOB_FLAG;
+ if (binary_arg)
+ flags|=BINARY_FLAG;
+ if (table)
+ table->blob_fields++;
+}
+
+
+void Field_blob::store_length(ulong number)
+{
+ switch (packlength) {
+ case 1:
+ if (number > 255)
+ {
+ number=255;
+ current_thd->cuted_fields++;
+ }
+ ptr[0]= (uchar) number;
+ break;
+ case 2:
+ if (number > (uint16) ~0)
+ {
+ number= (uint16) ~0;
+ current_thd->cuted_fields++;
+ }
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int2store(ptr,(unsigned short) number);
+ }
+ else
+#endif
+ shortstore(ptr,(unsigned short) number);
+ break;
+ case 3:
+ if (number > (ulong) (1L << 24))
+ {
+ number= (ulong) (1L << 24)-1L;
+ current_thd->cuted_fields++;
+ }
+ int3store(ptr,number);
+ break;
+ case 4:
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,number);
+ }
+ else
+#endif
+ longstore(ptr,number);
+ }
+}
+
+
+ulong Field_blob::get_length(const char *pos)
+{
+ switch (packlength) {
+ case 1:
+ return (ulong) (uchar) pos[0];
+ case 2:
+ {
+ uint16 tmp;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ tmp=sint2korr(pos);
+ else
+#endif
+ shortget(tmp,pos);
+ return (ulong) tmp;
+ }
+ case 3:
+ return (ulong) uint3korr(pos);
+ case 4:
+ {
+ uint32 tmp;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ tmp=uint4korr(pos);
+ else
+#endif
+ longget(tmp,pos);
+ return (ulong) tmp;
+ }
+ }
+ return 0; // Impossible
+}
+
+
+void Field_blob::store(const char *from,uint len)
+{
+ if (!len)
+ {
+ bzero(ptr,Field_blob::pack_length());
+ }
+ else
+ {
+#ifdef USE_TIS620
+ char *th_ptr=0;
+#endif
+ Field_blob::store_length(len);
+ if (table->copy_blobs || len <= MAX_FIELD_WIDTH)
+ { // Must make a copy
+#ifdef USE_TIS620
+ if(!binary_flag)
+ {
+ /* If there isn't enough memory, use original string */
+ if ((th_ptr=(char * ) my_malloc(sizeof(char) * len,MYF(0))))
+ {
+ ThNormalize((uchar *) th_ptr, len, (uchar *) from, len);
+ from= (const char*) th_ptr;
+ }
+ }
+#endif /* USE_TIS620 */
+ value.copy(from,len);
+ from=value.ptr();
+#ifdef USE_TIS620
+ my_free(th_ptr,MYF(MY_ALLOW_ZERO_PTR));
+#endif
+ }
+ bmove(ptr+packlength,(char*) &from,sizeof(char*));
+ }
+}
+
+
+void Field_blob::store(double nr)
+{
+ value.set(nr);
+ Field_blob::store(value.ptr(),value.length());
+}
+
+
+void Field_blob::store(longlong nr)
+{
+ value.set(nr);
+ Field_blob::store(value.ptr(),value.length());
+}
+
+
+double Field_blob::val_real(void)
+{
+ char *blob;
+
+ memcpy_fixed(&blob,ptr+packlength,sizeof(char*));
+ if (!blob)
+ return 0.0;
+ ulong length=get_length(ptr);
+
+ char save=blob[length]; // Ok to patch blob in NISAM
+ blob[length]=0;
+ double nr=atof(blob);
+ blob[length]=save;
+ return nr;
+}
+
+
+longlong Field_blob::val_int(void)
+{
+ char *blob;
+ memcpy_fixed(&blob,ptr+packlength,sizeof(char*));
+ if (!blob)
+ return 0;
+ ulong length=get_length(ptr);
+
+ char save=blob[length]; // Ok to patch blob in NISAM
+ blob[length]=0;
+ longlong nr=strtoll(blob,NULL,10);
+ blob[length]=save;
+ return nr;
+}
+
+
+String *Field_blob::val_str(String *val_buffer __attribute__((unused)),
+ String *val_ptr)
+{
+ char *blob;
+ memcpy_fixed(&blob,ptr+packlength,sizeof(char*));
+ if (!blob)
+ val_ptr->length(0);
+ else
+ val_ptr->set((const char*) blob,get_length(ptr));
+ return val_ptr;
+}
+
+
+int Field_blob::cmp(const char *a,ulong a_length, const char *b,
+ ulong b_length)
+{
+ int diff;
+ if (binary_flag)
+ diff=memcmp(a,b,min(a_length,b_length));
+ else
+ diff=my_sortcmp(a,b,min(a_length,b_length));
+ return diff ? diff : (int) (a_length - b_length);
+}
+
+
+int Field_blob::cmp(const char *a_ptr, const char *b_ptr)
+{
+ char *blob1,*blob2;
+ memcpy_fixed(&blob1,a_ptr+packlength,sizeof(char*));
+ memcpy_fixed(&blob2,b_ptr+packlength,sizeof(char*));
+ return Field_blob::cmp(blob1,get_length(a_ptr),
+ blob2,get_length(b_ptr));
+}
+
+
+int Field_blob::cmp_offset(uint row_offset)
+{
+ return Field_blob::cmp(ptr,ptr+row_offset);
+}
+
+
+int Field_blob::cmp_binary_offset(uint row_offset)
+{
+ return cmp_binary(ptr, ptr+row_offset);
+}
+
+
+int Field_blob::cmp_binary(const char *a_ptr, const char *b_ptr,
+ ulong max_length)
+{
+ char *a,*b;
+ uint diff;
+ ulong a_length,b_length;
+ memcpy_fixed(&a,a_ptr+packlength,sizeof(char*));
+ memcpy_fixed(&b,b_ptr+packlength,sizeof(char*));
+ a_length=get_length(a_ptr);
+ if (a_length > max_length)
+ a_length=max_length;
+ b_length=get_length(b_ptr);
+ if (b_length > max_length)
+ b_length=max_length;
+ diff=memcmp(a,b,min(a_length,b_length));
+ return diff ? diff : (int) (a_length - b_length);
+}
+
+
+/* The following is used only when comparing a key */
+
+void Field_blob::get_key_image(char *buff,uint length)
+{
+ length-=HA_KEY_BLOB_LENGTH;
+ ulong blob_length=get_length(ptr);
+ char *blob;
+ if ((ulong) length > blob_length)
+ length=(uint) blob_length;
+ int2store(buff,length);
+ get_ptr(&blob);
+ memcpy(buff+2,blob,length);
+}
+
+void Field_blob::set_key_image(char *buff,uint length)
+{
+ length=uint2korr(buff);
+ Field_blob::store(buff+2,length);
+}
+
+int Field_blob::key_cmp(const byte *key_ptr, uint max_key_length)
+{
+ char *blob1;
+ uint blob_length=get_length(ptr);
+ max_key_length-=2;
+ memcpy_fixed(&blob1,ptr+packlength,sizeof(char*));
+ return Field_blob::cmp(blob1,min(blob_length, max_key_length),
+ (char*) key_ptr+2,uint2korr(key_ptr));
+}
+
+int Field_blob::key_cmp(const byte *a,const byte *b)
+{
+ return Field_blob::cmp((char*) a+2,uint2korr(a),
+ (char*) b+2,uint2korr(b));
+}
+
+
+void Field_blob::sort_string(char *to,uint length)
+{
+ char *blob;
+ uint blob_length=get_length();
+#ifdef USE_STRCOLL
+ uint blob_org_length=blob_length;
+#endif
+ if (!blob_length)
+ bzero(to,length);
+ else
+ {
+ if (blob_length > length)
+ blob_length=length;
+ memcpy_fixed(&blob,ptr+packlength,sizeof(char*));
+ if (binary_flag)
+ {
+ memcpy(to,blob,blob_length);
+ to+=blob_length;
+ }
+ else
+ {
+#ifdef USE_STRCOLL
+ if (use_strcoll(default_charset_info))
+ {
+ blob_length=my_strnxfrm(default_charset_info,
+ (unsigned char *)to,(unsigned char *)blob,
+ length,blob_org_length);
+ if (blob_length >= length)
+ return;
+ to+=blob_length;
+ }
+ else
+#endif
+ for (char *end=blob+blob_length ; blob != end ;)
+ *to++=(char) my_sort_order[(uint) (uchar) *blob++];
+ }
+ bzero(to,length-blob_length);
+ }
+}
+
+
+void Field_blob::sql_type(String &res) const
+{
+ const char *str;
+ switch (packlength) {
+ default: str="tiny"; break;
+ case 2: str=""; break;
+ case 3: str="medium"; break;
+ case 4: str="long"; break;
+ }
+ res.set(str,strlen(str));
+ res.append(binary_flag ? "blob" : "text");
+}
+
+
+/* Keys for blobs are like keys on varchars */
+
+int Field_blob::pack_cmp(const char *a, const char *b, uint key_length)
+{
+ uint a_length;
+ uint b_length;
+ if (key_length > 255)
+ {
+ a_length=uint2korr(a); a+=2;
+ b_length=uint2korr(b); b+=2;
+ }
+ else
+ {
+ a_length= (uint) (uchar) *a++;
+ b_length= (uint) (uchar) *b++;
+ }
+ if (binary_flag)
+ {
+ int cmp= memcmp(a,b,min(a_length,b_length));
+ return cmp ? cmp : (int) (a_length - b_length);
+ }
+ return my_sortncmp(a,a_length, b,b_length);
+}
+
+char *Field_blob::pack_key(char *to, const char *from, uint max_length)
+{
+ uint length=uint2korr(to);
+ if (length > max_length)
+ length=max_length;
+ *to++= (length & 255);
+ if (max_length > 255)
+ *to++= (uchar) (length >> 8);
+ if (length)
+ memcpy(to, from+2, length);
+ return to+length;
+}
+
+/****************************************************************************
+** enum type.
+** This is a string which only can have a selection of different values.
+** If one uses this string in a number context one gets the type number.
+****************************************************************************/
+
+enum ha_base_keytype Field_enum::key_type() const
+{
+ switch (packlength) {
+ default: return HA_KEYTYPE_BINARY;
+ case 2: return HA_KEYTYPE_USHORT_INT;
+ case 3: return HA_KEYTYPE_UINT24;
+ case 4: return HA_KEYTYPE_ULONG_INT;
+ case 8: return HA_KEYTYPE_ULONGLONG;
+ }
+}
+
+void Field_enum::store_type(ulonglong value)
+{
+ switch (packlength) {
+ case 1: ptr[0]= (uchar) value; break;
+ case 2:
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int2store(ptr,(unsigned short) value);
+ }
+ else
+#endif
+ shortstore(ptr,(unsigned short) value);
+ break;
+ case 3: int3store(ptr,(long) value); break;
+ case 4:
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int4store(ptr,value);
+ }
+ else
+#endif
+ longstore(ptr,(long) value);
+ break;
+ case 8:
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ {
+ int8store(ptr,value);
+ }
+ else
+#endif
+ longlongstore(ptr,value); break;
+ }
+}
+
+
+uint find_enum(TYPELIB *lib,const char *x, uint length)
+{
+ const char *end=x+length;
+ while (end > x && isspace(end[-1]))
+ end--;
+
+ const char *i;
+ const char *j;
+ for (uint pos=0 ; (j=lib->type_names[pos]) ; pos++)
+ {
+ for (i=x ; i != end && toupper(*i) == toupper(*j) ; i++, j++) ;
+ if (i == end && ! *j)
+ return(pos+1);
+ }
+ return(0);
+}
+
+
+/*
+** Note. Storing a empty string in a enum field gives a warning
+** (if there isn't a empty value in the enum)
+*/
+
+void Field_enum::store(const char *from,uint length)
+{
+ uint tmp=find_enum(typelib,from,length);
+ {
+ if (!tmp)
+ {
+ current_thd->cuted_fields++;
+ Field_enum::store_type((longlong) 0);
+ }
+ else
+ store_type((ulonglong) tmp);
+ }
+}
+
+
+void Field_enum::store(double nr)
+{
+ Field_enum::store((longlong) nr);
+}
+
+
+void Field_enum::store(longlong nr)
+{
+ if ((uint) nr > typelib->count || nr == 0)
+ {
+ current_thd->cuted_fields++;
+ nr=0;
+ }
+ store_type((ulonglong) (uint) nr);
+}
+
+
+double Field_enum::val_real(void)
+{
+ return (double) Field_enum::val_int();
+}
+
+
+longlong Field_enum::val_int(void)
+{
+ switch (packlength) {
+ case 1:
+ return (longlong) (uchar) ptr[0];
+ case 2:
+ {
+ uint16 tmp;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ tmp=sint2korr(ptr);
+ else
+#endif
+ shortget(tmp,ptr);
+ return (longlong) tmp;
+ }
+ case 3:
+ return (longlong) uint3korr(ptr);
+ case 4:
+ {
+ uint32 tmp;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ tmp=uint4korr(ptr);
+ else
+#endif
+ longget(tmp,ptr);
+ return (longlong) tmp;
+ }
+ case 8:
+ {
+ longlong tmp;
+#ifdef WORDS_BIGENDIAN
+ if (table->db_low_byte_first)
+ tmp=sint8korr(ptr);
+ else
+#endif
+ longlongget(tmp,ptr);
+ return tmp;
+ }
+ }
+ return 0; // impossible
+}
+
+
+String *Field_enum::val_str(String *val_buffer __attribute__((unused)),
+ String *val_ptr)
+{
+ uint tmp=(uint) Field_enum::val_int();
+ if (!tmp || tmp > typelib->count)
+ val_ptr->length(0);
+ else
+ val_ptr->set((const char*) typelib->type_names[tmp-1],
+ strlen(typelib->type_names[tmp-1]));
+ return val_ptr;
+}
+
+int Field_enum::cmp(const char *a_ptr, const char *b_ptr)
+{
+ char *old=ptr;
+ ptr=(char*) a_ptr;
+ ulonglong a=Field_enum::val_int();
+ ptr=(char*) b_ptr;
+ ulonglong b=Field_enum::val_int();
+ ptr=old;
+ return (a < b) ? -1 : (a > b) ? 1 : 0;
+}
+
+void Field_enum::sort_string(char *to,uint length __attribute__((unused)))
+{
+ ulonglong value=Field_enum::val_int();
+ to+=packlength-1;
+ for (uint i=0 ; i < packlength ; i++)
+ {
+ *to-- = (uchar) (value & 255);
+ value>>=8;
+ }
+}
+
+
+void Field_enum::sql_type(String &res) const
+{
+ res.length(0);
+ res.append("enum(");
+
+ bool flag=0;
+ for (const char **pos=typelib->type_names; *pos ; pos++)
+ {
+ if (flag)
+ res.append(',');
+ res.append('\'');
+ append_unescaped(&res,*pos);
+ res.append('\'');
+ flag=1;
+ }
+ res.append(')');
+}
+
+
+/****************************************************************************
+** set type.
+** This is a string which can have a collection of different values.
+** Each string value is separated with a ','.
+** For example "One,two,five"
+** If one uses this string in a number context one gets the bits as a longlong
+** number.
+****************************************************************************/
+
+ulonglong find_set(TYPELIB *lib,const char *x,uint length)
+{
+ const char *end=x+length;
+ while (end > x && isspace(end[-1]))
+ end--;
+
+ ulonglong found=0;
+ if (x != end)
+ {
+ const char *start=x;
+ bool error=0;
+ for (;;)
+ {
+ const char *pos=start;
+ for ( ; pos != end && *pos != field_separator ; pos++) ;
+ uint find=find_enum(lib,start,(uint) (pos-start));
+ if (!find)
+ error=1;
+ else
+ found|= ((longlong) 1 << (find-1));
+ if (pos == end)
+ break;
+ start=pos+1;
+ }
+ if (error)
+ current_thd->cuted_fields++;
+ }
+ return found;
+}
+
+
+void Field_set::store(const char *from,uint length)
+{
+ store_type(find_set(typelib,from,length));
+}
+
+
+void Field_set::store(longlong nr)
+{
+ if ((ulonglong) nr > (ulonglong) (((longlong) 1 << typelib->count) -
+ (longlong) 1))
+ {
+ nr&= (longlong) (((longlong) 1 << typelib->count) - (longlong) 1);
+ current_thd->cuted_fields++;
+ }
+ store_type((ulonglong) nr);
+}
+
+
+String *Field_set::val_str(String *val_buffer,
+ String *val_ptr __attribute__((unused)))
+{
+ ulonglong tmp=(ulonglong) Field_enum::val_int();
+ uint bitnr=0;
+
+ val_buffer->length(0);
+ while (tmp && bitnr < (uint) typelib->count)
+ {
+ if (tmp & 1)
+ {
+ if (val_buffer->length())
+ val_buffer->append(field_separator);
+ String str(typelib->type_names[bitnr],
+ strlen(typelib->type_names[bitnr]));
+ val_buffer->append(str);
+ }
+ tmp>>=1;
+ bitnr++;
+ }
+ return val_buffer;
+}
+
+
+void Field_set::sql_type(String &res) const
+{
+ res.length(0);
+ res.append("set(");
+
+ bool flag=0;
+ for (const char **pos=typelib->type_names; *pos ; pos++)
+ {
+ if (flag)
+ res.append(',');
+ res.append('\'');
+ append_unescaped(&res,*pos);
+ res.append('\'');
+ flag=1;
+ }
+ res.append(')');
+}
+
+/* returns 1 if the fields are equally defined */
+
+bool Field::eq_def(Field *field)
+{
+ if (real_type() != field->real_type() || binary() != field->binary() ||
+ pack_length() != field->pack_length())
+ return 0;
+ return 1;
+}
+
+bool Field_enum::eq_def(Field *field)
+{
+ if (!Field::eq_def(field))
+ return 0;
+ TYPELIB *from_lib=((Field_enum*) field)->typelib;
+
+ if (typelib->count < from_lib->count)
+ return 0;
+ for (uint i=0 ; i < from_lib->count ; i++)
+ if (my_strcasecmp(typelib->type_names[i],from_lib->type_names[i]))
+ return 0;
+ return 1;
+}
+
+bool Field_num::eq_def(Field *field)
+{
+ if (!Field::eq_def(field))
+ return 0;
+ Field_num *from_num= (Field_num*) field;
+
+ if (unsigned_flag != from_num->unsigned_flag ||
+ zerofill && !from_num->zerofill && !zero_pack() ||
+ dec != from_num->dec)
+ return 0;
+ return 1;
+}
+
+
+/*****************************************************************************
+** Handling of field and create_field
+*****************************************************************************/
+
+/*
+** Make a field from the .frm file info
+*/
+
+uint32 calc_pack_length(enum_field_types type,uint32 length)
+{
+ switch (type) {
+ case FIELD_TYPE_STRING:
+ case FIELD_TYPE_DECIMAL: return (length);
+ case FIELD_TYPE_VAR_STRING: return (length+2);
+ case FIELD_TYPE_YEAR:
+ case FIELD_TYPE_TINY : return 1;
+ case FIELD_TYPE_SHORT : return 2;
+ case FIELD_TYPE_INT24:
+ case FIELD_TYPE_NEWDATE:
+ case FIELD_TYPE_TIME: return 3;
+ case FIELD_TYPE_TIMESTAMP:
+ case FIELD_TYPE_DATE:
+ case FIELD_TYPE_LONG : return 4;
+ case FIELD_TYPE_FLOAT : return sizeof(float);
+ case FIELD_TYPE_DOUBLE: return sizeof(double);
+ case FIELD_TYPE_DATETIME:
+ case FIELD_TYPE_LONGLONG: return 8; /* Don't crash if no longlong */
+ case FIELD_TYPE_NULL : return 0;
+ case FIELD_TYPE_TINY_BLOB: return 1+portable_sizeof_char_ptr;
+ case FIELD_TYPE_BLOB: return 2+portable_sizeof_char_ptr;
+ case FIELD_TYPE_MEDIUM_BLOB: return 3+portable_sizeof_char_ptr;
+ case FIELD_TYPE_LONG_BLOB: return 4+portable_sizeof_char_ptr;
+ case FIELD_TYPE_SET:
+ case FIELD_TYPE_ENUM: abort(); return 0; // This shouldn't happen
+ }
+ return 0; // This shouldn't happen
+}
+
+
+uint pack_length_to_packflag(uint type)
+{
+ switch (type) {
+ case 1: return f_settype((uint) FIELD_TYPE_TINY);
+ case 2: return f_settype((uint) FIELD_TYPE_SHORT);
+ case 3: return f_settype((uint) FIELD_TYPE_INT24);
+ case 4: return f_settype((uint) FIELD_TYPE_LONG);
+ case 8: return f_settype((uint) FIELD_TYPE_LONGLONG);
+ }
+ return 0; // This shouldn't happen
+}
+
+
+Field *make_field(char *ptr, uint32 field_length,
+ uchar *null_pos, uint null_bit,
+ uint pack_flag,
+ Field::utype unireg_check,
+ TYPELIB *interval,
+ const char *field_name,
+ struct st_table *table)
+{
+ if (!f_maybe_null(pack_flag))
+ {
+ null_pos=0;
+ null_bit=0;
+ }
+ if (f_is_alpha(pack_flag))
+ {
+ if (!f_is_packed(pack_flag))
+ return new Field_string(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_is_binary(pack_flag) != 0);
+
+ uint pack_length=calc_pack_length((enum_field_types)
+ f_packtype(pack_flag),
+ field_length);
+
+ if (f_is_blob(pack_flag))
+ return new Field_blob(ptr,null_pos,null_bit,
+ unireg_check, field_name, table,
+ pack_length,f_is_binary(pack_flag) != 0);
+ if (interval)
+ {
+ if (f_is_enum(pack_flag))
+ return new Field_enum(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ pack_length, interval);
+ else
+ return new Field_set(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ pack_length, interval);
+ }
+ }
+
+ switch ((enum enum_field_types) f_packtype(pack_flag)) {
+ case FIELD_TYPE_DECIMAL:
+ return new Field_decimal(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_decimals(pack_flag),
+ f_is_zerofill(pack_flag) != 0,
+ f_is_dec(pack_flag) == 0);
+ case FIELD_TYPE_FLOAT:
+ return new Field_float(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_decimals(pack_flag),
+ f_is_zerofill(pack_flag) != 0,
+ f_is_dec(pack_flag)== 0);
+ case FIELD_TYPE_DOUBLE:
+ return new Field_double(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_decimals(pack_flag),
+ f_is_zerofill(pack_flag) != 0,
+ f_is_dec(pack_flag)== 0);
+ case FIELD_TYPE_TINY:
+ return new Field_tiny(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_is_zerofill(pack_flag) != 0,
+ f_is_dec(pack_flag) == 0);
+ case FIELD_TYPE_SHORT:
+ return new Field_short(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_is_zerofill(pack_flag) != 0,
+ f_is_dec(pack_flag) == 0);
+ case FIELD_TYPE_INT24:
+ return new Field_medium(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_is_zerofill(pack_flag) != 0,
+ f_is_dec(pack_flag) == 0);
+ case FIELD_TYPE_LONG:
+ return new Field_long(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_is_zerofill(pack_flag) != 0,
+ f_is_dec(pack_flag) == 0);
+ case FIELD_TYPE_LONGLONG:
+ return new Field_longlong(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table,
+ f_is_zerofill(pack_flag) != 0,
+ f_is_dec(pack_flag) == 0);
+ case FIELD_TYPE_TIMESTAMP:
+ return new Field_timestamp(ptr,field_length,
+ unireg_check, field_name, table);
+ case FIELD_TYPE_YEAR:
+ return new Field_year(ptr,field_length,null_pos,null_bit,
+ unireg_check, field_name, table);
+ case FIELD_TYPE_DATE:
+ return new Field_date(ptr,null_pos,null_bit,
+ unireg_check, field_name, table);
+ case FIELD_TYPE_NEWDATE:
+ return new Field_newdate(ptr,null_pos,null_bit,
+ unireg_check, field_name, table);
+ case FIELD_TYPE_TIME:
+ return new Field_time(ptr,null_pos,null_bit,
+ unireg_check, field_name, table);
+ case FIELD_TYPE_DATETIME:
+ return new Field_datetime(ptr,null_pos,null_bit,
+ unireg_check, field_name, table);
+ case FIELD_TYPE_NULL:
+ default: // Impossible (Wrong version)
+ return new Field_null(ptr,field_length,unireg_check,field_name,table);
+ }
+ return 0; // Impossible (Wrong version)
+}
+
+
+/* Create a field suitable for create of table */
+
+create_field::create_field(Field *old_field,bool ignore_default)
+{
+ field= old_field;
+ field_name=change=old_field->field_name;
+ length= old_field->field_length;
+ flags= old_field->flags;
+ unireg_check=old_field->unireg_check;
+ pack_length=old_field->pack_length();
+ sql_type= old_field->real_type();
+
+ /* Fix if the original table had 4 byte pointer blobs */
+ if (flags & BLOB_FLAG)
+ pack_length= (pack_length- old_field->table->blob_ptr_size +
+ portable_sizeof_char_ptr);
+ decimals= old_field->decimals();
+ if (sql_type == FIELD_TYPE_STRING)
+ {
+ sql_type=old_field->type();
+ decimals=0;
+ }
+ if (flags & (ENUM_FLAG | SET_FLAG))
+ interval= ((Field_enum*) old_field)->typelib;
+ else
+ interval=0;
+ if (!ignore_default && !old_field->is_real_null() && ! (flags & BLOB_FLAG) &&
+ old_field->type() != FIELD_TYPE_TIMESTAMP && old_field->ptr)
+ {
+ char buff[MAX_FIELD_WIDTH],*pos;
+ String tmp(buff,sizeof(buff));
+ field->val_str(&tmp,&tmp);
+ pos= (char*) sql_memdup(tmp.ptr(),tmp.length()+1);
+ pos[tmp.length()]=0;
+ def=new Item_string(pos,tmp.length());
+ }
+ else
+ def=0;
+}