mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge mysql.com:/home/my/mysql-5.0
into mysql.com:/home/my/mysql-5.1
This commit is contained in:
@ -53,7 +53,8 @@ dist-hook:
|
||||
-$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.sql $(distdir)/t
|
||||
-$(INSTALL_DATA) $(srcdir)/t/*.disabled $(distdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.sh $(srcdir)/t/*.slave-mi $(distdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t
|
||||
$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/include/*.inc $(distdir)/include
|
||||
$(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data
|
||||
@ -61,6 +62,7 @@ dist-hook:
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/des_key_file $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.frm $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/lib/init_db.sql $(distdir)/lib
|
||||
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib
|
||||
|
||||
@ -78,7 +80,7 @@ install-data-local:
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.sql $(DESTDIR)$(testdir)/t
|
||||
-$(INSTALL_DATA) $(srcdir)/t/*.disabled $(DESTDIR)$(testdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.opt $(DESTDIR)$(testdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t
|
||||
$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.slave-mi $(DESTDIR)$(testdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r
|
||||
$(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r
|
||||
@ -89,6 +91,7 @@ install-data-local:
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.pem $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/lib/init_db.sql $(DESTDIR)$(testdir)/lib
|
||||
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib
|
||||
|
||||
|
116
mysql-test/README.stress
Normal file
116
mysql-test/README.stress
Normal file
@ -0,0 +1,116 @@
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
Stress script is designed to perform testsing of mysql server in
|
||||
multi-thread environment.
|
||||
|
||||
Stress script allows:
|
||||
|
||||
- to use for stress testing mysqltest binary as test engine
|
||||
- to use for stress testing both regular test suite and any
|
||||
additional test suites (e.g. mysql-test-extra-5.0)
|
||||
- to specify files with lists of tests both for initialization of
|
||||
stress db and for further testing itself
|
||||
- to define number of threads that will be concurrently used in testing
|
||||
- to define limitations for test run. e.g. number of tests or loops
|
||||
for execution or duration of testing, delay between test executions, etc.
|
||||
- to get readable log file which can be used for identification of
|
||||
errors arose during testing
|
||||
|
||||
All functionality regarding stress testing was implemeted in
|
||||
mysql-stress-test.pl script and there are two ways to run stress test:
|
||||
|
||||
- for most cases it is enough to use options below for starting of
|
||||
stress test from mysql-test-run wrapper. In this case server will
|
||||
be run automatically, all preparation steps will be performed
|
||||
and after that stress test will be started.
|
||||
|
||||
- in advanced case one can run mysql-stress-test.pl script directly.
|
||||
But it requires to perform some preparation steps and to specify a
|
||||
bunch of options as well so this way may look a bit complicate.
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Below is list of stress test specific options for mysql-test-run:
|
||||
|
||||
--stress
|
||||
Enable stress mode
|
||||
|
||||
--stress-suite=<suite name>
|
||||
Test suite name that will be used in stress testing.
|
||||
We assume that all suites are located in mysql-test/suite directory
|
||||
There is one special suite name - <main|default> that corresponds
|
||||
to regular test suite located in mysql-test directory.
|
||||
|
||||
--stress-threads=<number of threads>
|
||||
Number of threads that will be used in stress testing
|
||||
|
||||
--stress-tests-file=<filename with list of tests>
|
||||
Filename with list of tests(without .test suffix) that will be used in
|
||||
stress testing. Default filename is stress_tests.txt and default
|
||||
location of this file is suite/<suite name>/stress_tests.txt
|
||||
|
||||
--stress-init-file=<filename with list of tests>
|
||||
Filename with list of tests(without .test suffix) that will be used in
|
||||
stress testing for initialization of stress db. These tests will be
|
||||
executed only once before starting of test itself. Default filename
|
||||
is stress_init.txt and default location of this file is
|
||||
suite/<suite name>/stress_init.txt
|
||||
|
||||
--stress-mode=<method which will be used for choosing tests from the list>
|
||||
Possible values are: random(default), seq
|
||||
|
||||
There are two possible modes which affect order of selecting of tests
|
||||
from the list:
|
||||
- in random mode tests will be selected in random order
|
||||
- in seq mode each thread will execute tests in the loop one by one as
|
||||
they specified in the list file.
|
||||
|
||||
--stress-test-count= <number>
|
||||
Total number of tests that will be executed concurrently by all threads
|
||||
|
||||
--stress-loop-count= <number>
|
||||
Total number of loops in seq mode that will be executed concurrently
|
||||
by all threads
|
||||
|
||||
--stress-test-duration= <number>
|
||||
Duration of stress testing in seconds
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
1. Example of simple command line to start stress test:
|
||||
|
||||
mysql-test-run --stress alias
|
||||
|
||||
Runs stress test with default values for number of threads and number of tests,
|
||||
with test 'alias' from suite 'main'.
|
||||
|
||||
2. Using in stress testing tests from other suites:
|
||||
|
||||
- mysql-test-run --stress --stress-threads=10 --stress-test-count=1000 \
|
||||
--stress-suite=example --stress-tests-file=testslist.txt
|
||||
|
||||
Will run stress test with 10 threads, will execute 1000 tests by all
|
||||
threads, test will be used from suite 'example', list of test will be
|
||||
taken from file 'testslist.txt'
|
||||
|
||||
- mysql-test-run --stress --stress-threads=10 --stress-test-count=1000 \
|
||||
--stress-suite=example sum_distinct
|
||||
|
||||
Will run stress test with 10 threads, will execute 1000 tests by all
|
||||
threads, test will be used from suite 'example', list of test contains
|
||||
only one test 'sum_distinct'
|
||||
|
||||
3. Debugging of issues found with stress test
|
||||
|
||||
Right now stress test is not fully integrated in mysql-test-run
|
||||
and does not support --gdb option so to debug issue found with stress
|
||||
test you have to start separately mysql server under debuger and then
|
||||
run stress test as:
|
||||
|
||||
- mysql-test-run --extern --stress --stress-threads=10 \
|
||||
--stress-test-count=1000 --stress-suite=example \
|
||||
sum_distinct
|
1832
mysql-test/include/common-tests.inc
Normal file
1832
mysql-test/include/common-tests.inc
Normal file
File diff suppressed because it is too large
Load Diff
180
mysql-test/include/gis_generic.inc
Normal file
180
mysql-test/include/gis_generic.inc
Normal file
@ -0,0 +1,180 @@
|
||||
--source include/have_geometry.inc
|
||||
|
||||
#
|
||||
# Spatial objects
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE gis_point (fid INTEGER, g POINT);
|
||||
CREATE TABLE gis_line (fid INTEGER, g LINESTRING);
|
||||
CREATE TABLE gis_polygon (fid INTEGER, g POLYGON);
|
||||
CREATE TABLE gis_multi_point (fid INTEGER, g MULTIPOINT);
|
||||
CREATE TABLE gis_multi_line (fid INTEGER, g MULTILINESTRING);
|
||||
CREATE TABLE gis_multi_polygon (fid INTEGER, g MULTIPOLYGON);
|
||||
CREATE TABLE gis_geometrycollection (fid INTEGER, g GEOMETRYCOLLECTION);
|
||||
CREATE TABLE gis_geometry (fid INTEGER, g GEOMETRY);
|
||||
|
||||
SHOW CREATE TABLE gis_point;
|
||||
SHOW FIELDS FROM gis_point;
|
||||
SHOW FIELDS FROM gis_line;
|
||||
SHOW FIELDS FROM gis_polygon;
|
||||
SHOW FIELDS FROM gis_multi_point;
|
||||
SHOW FIELDS FROM gis_multi_line;
|
||||
SHOW FIELDS FROM gis_multi_polygon;
|
||||
SHOW FIELDS FROM gis_geometrycollection;
|
||||
SHOW FIELDS FROM gis_geometry;
|
||||
|
||||
|
||||
INSERT INTO gis_point VALUES
|
||||
(101, PointFromText('POINT(10 10)')),
|
||||
(102, PointFromText('POINT(20 10)')),
|
||||
(103, PointFromText('POINT(20 20)')),
|
||||
(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
|
||||
|
||||
INSERT INTO gis_line VALUES
|
||||
(105, LineFromText('LINESTRING(0 0,0 10,10 0)')),
|
||||
(106, LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')),
|
||||
(107, LineStringFromWKB(LineString(Point(10, 10), Point(40, 10))));
|
||||
|
||||
INSERT INTO gis_polygon VALUES
|
||||
(108, PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),
|
||||
(109, PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')),
|
||||
(110, PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))));
|
||||
|
||||
INSERT INTO gis_multi_point VALUES
|
||||
(111, MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')),
|
||||
(112, MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')),
|
||||
(113, MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10))));
|
||||
|
||||
INSERT INTO gis_multi_line VALUES
|
||||
(114, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')),
|
||||
(115, MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')),
|
||||
(116, MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))));
|
||||
|
||||
|
||||
INSERT INTO gis_multi_polygon VALUES
|
||||
(117, MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(118, MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(119, MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))));
|
||||
|
||||
INSERT INTO gis_geometrycollection VALUES
|
||||
(120, GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
|
||||
(121, GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))));
|
||||
|
||||
INSERT into gis_geometry SELECT * FROM gis_point;
|
||||
INSERT into gis_geometry SELECT * FROM gis_line;
|
||||
INSERT into gis_geometry SELECT * FROM gis_polygon;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_point;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_line;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_polygon;
|
||||
INSERT into gis_geometry SELECT * FROM gis_geometrycollection;
|
||||
|
||||
SELECT fid, AsText(g) FROM gis_point ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_line ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_polygon ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_multi_point ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_multi_line ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_multi_polygon ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_geometrycollection ORDER by fid;
|
||||
SELECT fid, AsText(g) FROM gis_geometry ORDER by fid;
|
||||
|
||||
SELECT fid, Dimension(g) FROM gis_geometry ORDER by fid;
|
||||
SELECT fid, GeometryType(g) FROM gis_geometry ORDER by fid;
|
||||
SELECT fid, IsEmpty(g) FROM gis_geometry ORDER by fid;
|
||||
SELECT fid, AsText(Envelope(g)) FROM gis_geometry ORDER by fid;
|
||||
explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
|
||||
|
||||
SELECT fid, X(g) FROM gis_point ORDER by fid;
|
||||
SELECT fid, Y(g) FROM gis_point ORDER by fid;
|
||||
explain extended select X(g),Y(g) FROM gis_point;
|
||||
|
||||
SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
|
||||
SELECT fid, AsText(EndPoint(g)) FROM gis_line ORDER by fid;
|
||||
SELECT fid, GLength(g) FROM gis_line ORDER by fid;
|
||||
SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
|
||||
SELECT fid, AsText(PointN(g, 2)) FROM gis_line ORDER by fid;
|
||||
SELECT fid, IsClosed(g) FROM gis_line ORDER by fid;
|
||||
explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
|
||||
|
||||
SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
|
||||
SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
|
||||
SELECT fid, AsText(ExteriorRing(g)) FROM gis_polygon ORDER by fid;
|
||||
SELECT fid, NumInteriorRings(g) FROM gis_polygon ORDER by fid;
|
||||
SELECT fid, AsText(InteriorRingN(g, 1)) FROM gis_polygon ORDER by fid;
|
||||
explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
|
||||
|
||||
SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
|
||||
|
||||
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon ORDER by fid;
|
||||
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
|
||||
|
||||
SELECT fid, NumGeometries(g) from gis_multi_point ORDER by fid;
|
||||
SELECT fid, NumGeometries(g) from gis_multi_line ORDER by fid;
|
||||
SELECT fid, NumGeometries(g) from gis_multi_polygon ORDER by fid;
|
||||
SELECT fid, NumGeometries(g) from gis_geometrycollection ORDER by fid;
|
||||
explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
|
||||
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_line ORDER by fid;
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_polygon ORDER by fid;
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_geometrycollection ORDER by fid;
|
||||
SELECT fid, AsText(GeometryN(g, 1)) from gis_geometrycollection ORDER by fid;
|
||||
explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
|
||||
|
||||
SELECT g1.fid as first, g2.fid as second,
|
||||
Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
|
||||
Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
|
||||
Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
|
||||
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
|
||||
explain extended SELECT g1.fid as first, g2.fid as second,
|
||||
Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
|
||||
Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
|
||||
Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
|
||||
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
|
||||
|
||||
DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
|
||||
|
||||
#
|
||||
# Check that ALTER TABLE doesn't loose geometry type
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
gp point,
|
||||
ln linestring,
|
||||
pg polygon,
|
||||
mp multipoint,
|
||||
mln multilinestring,
|
||||
mpg multipolygon,
|
||||
gc geometrycollection,
|
||||
gm geometry
|
||||
);
|
||||
|
||||
SHOW FIELDS FROM t1;
|
||||
ALTER TABLE t1 ADD fid INT;
|
||||
SHOW FIELDS FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
create table t1 (a geometry not null);
|
||||
insert into t1 values (GeomFromText('Point(1 2)'));
|
||||
-- error 1416
|
||||
insert into t1 values ('Garbage');
|
||||
-- error 1416
|
||||
insert IGNORE into t1 values ('Garbage');
|
||||
|
||||
drop table t1;
|
||||
|
||||
create table t1 (fl geometry);
|
||||
--error 1416
|
||||
insert into t1 values (1);
|
||||
--error 1416
|
||||
insert into t1 values (1.11);
|
||||
--error 1416
|
||||
insert into t1 values ("qwerty");
|
||||
--error 1416
|
||||
insert into t1 values (pointfromtext('point(1,1)'));
|
||||
|
||||
drop table t1;
|
||||
|
||||
# End of 5.0 tests
|
@ -1,4 +1,4 @@
|
||||
-- require r/have_archive.require
|
||||
disable_query_log;
|
||||
--require r/have_archive.require
|
||||
--disable_query_log
|
||||
show variables like "have_archive";
|
||||
enable_query_log;
|
||||
--enable_query_log
|
||||
|
@ -1,4 +1,4 @@
|
||||
-- require r/have_geometry.require
|
||||
disable_query_log;
|
||||
--require r/have_geometry.require
|
||||
--disable_query_log
|
||||
show variables like "have_geometry";
|
||||
enable_query_log;
|
||||
--enable_query_log
|
||||
|
@ -1,4 +0,0 @@
|
||||
-- require r/have_openssl_1.require
|
||||
disable_query_log;
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
enable_query_log;
|
@ -62,7 +62,7 @@ comment='Host privileges; Merged with database privileges';
|
||||
CREATE TABLE user (
|
||||
Host char(60) binary DEFAULT '' NOT NULL,
|
||||
User char(16) binary DEFAULT '' NOT NULL,
|
||||
Password binary(41) DEFAULT '' NOT NULL,
|
||||
Password char(41) character set latin1 collate latin1_bin DEFAULT '' NOT NULL,
|
||||
Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||
|
@ -68,7 +68,7 @@ sub collect_test_cases ($) {
|
||||
#
|
||||
# Otherwise, try to guess the target component.
|
||||
|
||||
if ( defined $component_id )
|
||||
if ( $component_id )
|
||||
{
|
||||
if ( ! -f "$testdir/$elem")
|
||||
{
|
||||
@ -80,11 +80,11 @@ sub collect_test_cases ($) {
|
||||
my $mysqld_test_exists = -f "$testdir/$tname.test";
|
||||
my $im_test_exists = -f "$testdir/$tname.imtest";
|
||||
|
||||
if ( $mysqld_test_exists && $im_test_exists )
|
||||
if ( $mysqld_test_exists and $im_test_exists )
|
||||
{
|
||||
mtr_error("Ambiguos test case name ($tname)");
|
||||
}
|
||||
elsif ( ! $mysqld_test_exists && !$im_test_exists )
|
||||
elsif ( ! $mysqld_test_exists and ! $im_test_exists )
|
||||
{
|
||||
mtr_error("Test case $tname is not found");
|
||||
}
|
||||
@ -405,7 +405,7 @@ sub collect_one_test_case($$$$$$$) {
|
||||
"Instance Manager tests are not run with --ps-protocol. " .
|
||||
"Test case '$tname' is skipped.");
|
||||
}
|
||||
elsif ( !$::exe_im )
|
||||
elsif ( $::opt_skip_im )
|
||||
{
|
||||
$tinfo->{'skip'}= 1;
|
||||
|
||||
|
@ -360,9 +360,20 @@ sub mtr_kill_leftovers () {
|
||||
|
||||
# First, kill all masters and slaves that would conflict with
|
||||
# this run. Make sure to remove the PID file, if any.
|
||||
# FIXME kill IM manager first, else it will restart the servers, how?!
|
||||
|
||||
my @args;
|
||||
|
||||
for ( my $idx; $idx < 2; $idx++ )
|
||||
{
|
||||
push(@args,{
|
||||
pid => 0, # We don't know the PID
|
||||
pidfile => $::instance_manager->{'instances'}->[$idx]->{'path_pid'},
|
||||
sockfile => $::instance_manager->{'instances'}->[$idx]->{'path_sock'},
|
||||
port => $::instance_manager->{'instances'}->[$idx]->{'port'},
|
||||
});
|
||||
}
|
||||
|
||||
for ( my $idx; $idx < 2; $idx++ )
|
||||
{
|
||||
push(@args,{
|
||||
|
@ -230,7 +230,7 @@ int wait_for_server_start(char *bin_dir __attribute__((unused)),
|
||||
char *user, char *password, int port,char *tmp_dir)
|
||||
{
|
||||
arg_list_t al;
|
||||
int err= 0, i;
|
||||
int err= 0;
|
||||
char trash[FN_REFLEN];
|
||||
|
||||
/* mysqladmin file */
|
||||
@ -244,16 +244,11 @@ int wait_for_server_start(char *bin_dir __attribute__((unused)),
|
||||
add_arg(&al, "--user=%s", user);
|
||||
add_arg(&al, "--password=%s", password);
|
||||
add_arg(&al, "--silent");
|
||||
|
||||
/* #ifdef NOT_USED */
|
||||
#ifndef __NETWARE__
|
||||
add_arg(&al, "-O");
|
||||
add_arg(&al, "connect_timeout=10");
|
||||
add_arg(&al, "-w");
|
||||
#endif
|
||||
|
||||
add_arg(&al, "--host=localhost");
|
||||
|
||||
#ifndef __NETWARE__
|
||||
add_arg(&al, "--connect_timeout=10");
|
||||
add_arg(&al, "-w");
|
||||
add_arg(&al, "--protocol=tcp");
|
||||
#endif
|
||||
add_arg(&al, "ping");
|
||||
@ -263,9 +258,14 @@ int wait_for_server_start(char *bin_dir __attribute__((unused)),
|
||||
-- we will try the ping multiple times
|
||||
*/
|
||||
#ifndef __WIN__
|
||||
for (i= 0; (i < TRY_MAX)
|
||||
&& (err= spawn(mysqladmin_file, &al, TRUE, NULL,
|
||||
trash, NULL, NULL)); i++) sleep(1);
|
||||
{
|
||||
int i;
|
||||
for (i= 0;
|
||||
(i < TRY_MAX) && (err= spawn(mysqladmin_file, &al, TRUE, NULL,
|
||||
trash, NULL, NULL));
|
||||
i++)
|
||||
sleep(1);
|
||||
}
|
||||
#else
|
||||
err= spawn(mysqladmin_file, &al, TRUE, NULL,trash, NULL, NULL);
|
||||
#endif
|
||||
|
1148
mysql-test/mysql-stress-test.pl
Executable file
1148
mysql-test/mysql-stress-test.pl
Executable file
File diff suppressed because it is too large
Load Diff
@ -171,7 +171,9 @@ our $exe_mysqladmin;
|
||||
our $exe_mysqlbinlog;
|
||||
our $exe_mysql_client_test;
|
||||
our $exe_mysqld;
|
||||
our $exe_mysqlcheck; # Called from test case
|
||||
our $exe_mysqldump; # Called from test case
|
||||
our $exe_mysqlimport; # Called from test case
|
||||
our $exe_mysqlshow; # Called from test case
|
||||
our $exe_mysql_fix_system_tables;
|
||||
our $exe_mysqltest;
|
||||
@ -186,6 +188,11 @@ our $opt_big_test= 0; # Send --big-test to mysqltest
|
||||
our @opt_extra_mysqld_opt;
|
||||
|
||||
our $opt_compress;
|
||||
our $opt_ssl;
|
||||
our $opt_skip_ssl;
|
||||
our $opt_ssl_supported;
|
||||
our $opt_ps_protocol;
|
||||
|
||||
our $opt_current_test;
|
||||
our $opt_ddd;
|
||||
our $opt_debug;
|
||||
@ -233,15 +240,15 @@ our $opt_result_ext;
|
||||
our $opt_skip;
|
||||
our $opt_skip_rpl;
|
||||
our $opt_skip_test;
|
||||
our $opt_skip_im;
|
||||
|
||||
our $opt_sleep;
|
||||
our $opt_ps_protocol;
|
||||
|
||||
our $opt_sleep_time_after_restart= 1;
|
||||
our $opt_sleep_time_for_delete= 10;
|
||||
our $opt_testcase_timeout;
|
||||
our $opt_suite_timeout;
|
||||
my $default_testcase_timeout= 10; # 10 min max
|
||||
my $default_testcase_timeout= 15; # 15 min max
|
||||
my $default_suite_timeout= 120; # 2 hours max
|
||||
|
||||
our $opt_socket;
|
||||
@ -276,7 +283,6 @@ our $opt_udiff;
|
||||
|
||||
our $opt_skip_ndbcluster;
|
||||
our $opt_with_ndbcluster;
|
||||
our $opt_with_openssl;
|
||||
|
||||
our $exe_ndb_mgm;
|
||||
our $path_ndb_tools_dir;
|
||||
@ -297,7 +303,8 @@ sub executable_setup ();
|
||||
sub environment_setup ();
|
||||
sub kill_running_server ();
|
||||
sub kill_and_cleanup ();
|
||||
sub ndbcluster_support ();
|
||||
sub check_ssl_support ();
|
||||
sub check_ndbcluster_support ();
|
||||
sub ndbcluster_install ();
|
||||
sub ndbcluster_start ();
|
||||
sub ndbcluster_stop ();
|
||||
@ -332,11 +339,9 @@ sub main () {
|
||||
initial_setup();
|
||||
command_line_setup();
|
||||
executable_setup();
|
||||
|
||||
if (! $opt_skip_ndbcluster and ! $opt_with_ndbcluster)
|
||||
{
|
||||
$opt_with_ndbcluster= ndbcluster_support();
|
||||
}
|
||||
|
||||
check_ndbcluster_support();
|
||||
check_ssl_support();
|
||||
|
||||
environment_setup();
|
||||
signal_setup();
|
||||
@ -471,6 +476,16 @@ sub command_line_setup () {
|
||||
my $im_mysqld1_port= 9312;
|
||||
my $im_mysqld2_port= 9314;
|
||||
|
||||
if ( $ENV{'MTR_BUILD_THREAD'} )
|
||||
{
|
||||
$opt_master_myport= $ENV{'MTR_BUILD_THREAD'} * 40 + 8120;
|
||||
$opt_slave_myport= $opt_master_myport + 16;
|
||||
$opt_ndbcluster_port= $opt_master_myport + 24;
|
||||
$im_port= $opt_master_myport + 10;
|
||||
$im_mysqld1_port= $opt_master_myport + 12;
|
||||
$im_mysqld2_port= $opt_master_myport + 14;
|
||||
}
|
||||
|
||||
# Read the command line
|
||||
# Note: Keep list, and the order, in sync with usage at end of this file
|
||||
|
||||
@ -479,6 +494,9 @@ sub command_line_setup () {
|
||||
# Control what engine/variation to run
|
||||
'embedded-server' => \$opt_embedded_server,
|
||||
'ps-protocol' => \$opt_ps_protocol,
|
||||
'ssl|with-openssl' => \$opt_ssl,
|
||||
'skip-ssl' => \$opt_skip_ssl,
|
||||
'compress' => \$opt_compress,
|
||||
'bench' => \$opt_bench,
|
||||
'small-bench' => \$opt_small_bench,
|
||||
'no-manager' => \$opt_no_manager, # Currently not used
|
||||
@ -490,6 +508,7 @@ sub command_line_setup () {
|
||||
'do-test=s' => \$opt_do_test,
|
||||
'suite=s' => \$opt_suite,
|
||||
'skip-rpl' => \$opt_skip_rpl,
|
||||
'skip-im' => \$opt_skip_im,
|
||||
'skip-test=s' => \$opt_skip_test,
|
||||
|
||||
# Specify ports
|
||||
@ -530,7 +549,6 @@ sub command_line_setup () {
|
||||
|
||||
# Misc
|
||||
'big-test' => \$opt_big_test,
|
||||
'compress' => \$opt_compress,
|
||||
'debug' => \$opt_debug,
|
||||
'fast' => \$opt_fast,
|
||||
'local' => \$opt_local,
|
||||
@ -555,7 +573,6 @@ sub command_line_setup () {
|
||||
'testcase-timeout=i' => \$opt_testcase_timeout,
|
||||
'suite-timeout=i' => \$opt_suite_timeout,
|
||||
'warnings|log-warnings' => \$opt_warnings,
|
||||
'with-openssl' => \$opt_with_openssl,
|
||||
|
||||
'help|h' => \$opt_usage,
|
||||
) or usage("Can't read options");
|
||||
@ -840,8 +857,8 @@ sub command_line_setup () {
|
||||
server_id => 1,
|
||||
port => $im_mysqld1_port,
|
||||
path_datadir => "$opt_vardir/im_mysqld_1.data",
|
||||
path_sock => "$opt_vardir/mysqld_1.sock",
|
||||
path_pid => "$opt_vardir/mysqld_1.pid",
|
||||
path_sock => "$opt_tmpdir/mysqld_1.sock",
|
||||
path_pid => "$opt_vardir/run/mysqld_1.pid",
|
||||
};
|
||||
|
||||
$instance_manager->{'instances'}->[1]=
|
||||
@ -849,8 +866,8 @@ sub command_line_setup () {
|
||||
server_id => 2,
|
||||
port => $im_mysqld2_port,
|
||||
path_datadir => "$opt_vardir/im_mysqld_2.data",
|
||||
path_sock => "$opt_vardir/mysqld_2.sock",
|
||||
path_pid => "$opt_vardir/mysqld_2.pid",
|
||||
path_sock => "$opt_tmpdir/mysqld_2.sock",
|
||||
path_pid => "$opt_vardir/run/mysqld_2.pid",
|
||||
nonguarded => 1,
|
||||
};
|
||||
|
||||
@ -879,7 +896,9 @@ sub executable_setup () {
|
||||
{
|
||||
$path_client_bindir= mtr_path_exists("$glob_basedir/client_release",
|
||||
"$glob_basedir/bin");
|
||||
$exe_mysqld= mtr_exe_exists ("$path_client_bindir/mysqld-nt");
|
||||
$exe_mysqld= mtr_exe_exists ("$path_client_bindir/mysqld-nt",
|
||||
"$path_client_bindir/mysqld",
|
||||
"$path_client_bindir/mysqld-debug",);
|
||||
$path_language= mtr_path_exists("$glob_basedir/share/english/");
|
||||
$path_charsetsdir= mtr_path_exists("$glob_basedir/share/charsets");
|
||||
}
|
||||
@ -909,7 +928,9 @@ sub executable_setup () {
|
||||
mtr_exe_exists("$glob_basedir/tests/mysql_client_test",
|
||||
"/usr/bin/false");
|
||||
}
|
||||
$exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck");
|
||||
$exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump");
|
||||
$exe_mysqlimport= mtr_exe_exists("$path_client_bindir/mysqlimport");
|
||||
$exe_mysqlshow= mtr_exe_exists("$path_client_bindir/mysqlshow");
|
||||
$exe_mysqlbinlog= mtr_exe_exists("$path_client_bindir/mysqlbinlog");
|
||||
$exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin");
|
||||
@ -924,6 +945,7 @@ sub executable_setup () {
|
||||
else
|
||||
{
|
||||
$path_client_bindir= mtr_path_exists("$glob_basedir/bin");
|
||||
$exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck");
|
||||
$exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump");
|
||||
$exe_mysqlshow= mtr_exe_exists("$path_client_bindir/mysqlshow");
|
||||
$exe_mysqlbinlog= mtr_exe_exists("$path_client_bindir/mysqlbinlog");
|
||||
@ -939,9 +961,18 @@ sub executable_setup () {
|
||||
"$glob_basedir/share/english/");
|
||||
$path_charsetsdir= mtr_path_exists("$glob_basedir/share/mysql/charsets",
|
||||
"$glob_basedir/share/charsets");
|
||||
$exe_mysqld= mtr_exe_exists ("$glob_basedir/libexec/mysqld",
|
||||
"$glob_basedir/bin/mysqld");
|
||||
|
||||
if ( $glob_win32 )
|
||||
{
|
||||
$exe_mysqld= mtr_exe_exists ("$glob_basedir/bin/mysqld-nt",
|
||||
"$glob_basedir/bin/mysqld",
|
||||
"$glob_basedir/bin/mysqld-debug",);
|
||||
}
|
||||
else
|
||||
{
|
||||
$exe_mysqld= mtr_exe_exists ("$glob_basedir/libexec/mysqld",
|
||||
"$glob_basedir/bin/mysqld");
|
||||
}
|
||||
$exe_im= mtr_exe_exists("$glob_basedir/libexec/mysqlmanager",
|
||||
"$glob_basedir/bin/mysqlmanager");
|
||||
if ( $glob_use_embedded_server )
|
||||
@ -1035,6 +1066,15 @@ sub environment_setup () {
|
||||
chomp($ENV{$key});
|
||||
}
|
||||
}
|
||||
|
||||
# We are nice and report a bit about our settings
|
||||
print "Using MTR_BUILD_THREAD = ",$ENV{MTR_BUILD_THREAD} || 0,"\n";
|
||||
print "Using MASTER_MYPORT = $ENV{MASTER_MYPORT}\n";
|
||||
print "Using MASTER_MYPORT1 = $ENV{MASTER_MYPORT1}\n";
|
||||
print "Using SLAVE_MYPORT = $ENV{SLAVE_MYPORT}\n";
|
||||
print "Using NDBCLUSTER_PORT = $opt_ndbcluster_port\n";
|
||||
print "Using IM_MYSQLD1_PORT = $ENV{'IM_MYSQLD1_PORT'}\n";
|
||||
print "Using IM_MYSQLD2_PORT = $ENV{'IM_MYSQLD2_PORT'}\n";
|
||||
}
|
||||
|
||||
|
||||
@ -1118,7 +1158,7 @@ sub kill_and_cleanup () {
|
||||
|
||||
foreach my $instance (@{$instance_manager->{'instances'}})
|
||||
{
|
||||
push (@data_dir_lst, $instance->{'path_datadir'});
|
||||
push(@data_dir_lst, $instance->{'path_datadir'});
|
||||
}
|
||||
|
||||
foreach my $data_dir (@data_dir_lst)
|
||||
@ -1140,13 +1180,59 @@ sub kill_and_cleanup () {
|
||||
}
|
||||
|
||||
|
||||
sub check_ssl_support () {
|
||||
|
||||
if ($opt_skip_ssl)
|
||||
{
|
||||
mtr_report("Skipping SSL");
|
||||
$opt_ssl_supported= 0;
|
||||
$opt_ssl= 0;
|
||||
return;
|
||||
}
|
||||
|
||||
# check ssl support by testing using a switch
|
||||
# that is only available in that case
|
||||
if ( mtr_run($exe_mysqld,
|
||||
["--no-defaults",
|
||||
"--ssl",
|
||||
"--help"],
|
||||
"", "/dev/null", "/dev/null", "") != 0 )
|
||||
{
|
||||
if ( $opt_ssl)
|
||||
{
|
||||
mtr_error("Couldn't find support for SSL");
|
||||
return;
|
||||
}
|
||||
mtr_report("Skipping SSL, mysqld not compiled with SSL");
|
||||
$opt_ssl_supported= 0;
|
||||
$opt_ssl= 0;
|
||||
return;
|
||||
}
|
||||
mtr_report("Setting mysqld to support SSL connections");
|
||||
$opt_ssl_supported= 1;
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Start the ndb cluster
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
sub ndbcluster_support () {
|
||||
sub check_ndbcluster_support () {
|
||||
|
||||
if ($opt_skip_ndbcluster)
|
||||
{
|
||||
mtr_report("Skipping ndbcluster");
|
||||
$opt_with_ndbcluster= 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if ($opt_with_ndbcluster)
|
||||
{
|
||||
mtr_report("Using ndbcluster");
|
||||
return;
|
||||
}
|
||||
|
||||
# check ndbcluster support by testing using a switch
|
||||
# that is only available in that case
|
||||
@ -1156,11 +1242,13 @@ sub ndbcluster_support () {
|
||||
"--help"],
|
||||
"", "/dev/null", "/dev/null", "") != 0 )
|
||||
{
|
||||
mtr_report("No ndbcluster support");
|
||||
return 0;
|
||||
mtr_report("Skipping ndbcluster, mysqld not compiled with ndbcluster");
|
||||
$opt_with_ndbcluster= 0;
|
||||
return;
|
||||
}
|
||||
mtr_report("Has ndbcluster support");
|
||||
return 1;
|
||||
mtr_report("Using ndbcluster, mysqld supports it");
|
||||
$opt_with_ndbcluster= 1;
|
||||
return;
|
||||
}
|
||||
|
||||
# FIXME why is there a different start below?!
|
||||
@ -1364,7 +1452,7 @@ sub mysql_install_db () {
|
||||
install_db('slave', $slave->[1]->{'path_myddir'});
|
||||
install_db('slave', $slave->[2]->{'path_myddir'});
|
||||
|
||||
if ( defined $exe_im)
|
||||
if ( ! $opt_skip_im )
|
||||
{
|
||||
im_prepare_env($instance_manager);
|
||||
}
|
||||
@ -1513,12 +1601,7 @@ skip-ndbcluster
|
||||
EOF
|
||||
;
|
||||
|
||||
if ( exists $instance->{nonguarded} and
|
||||
defined $instance->{nonguarded} )
|
||||
{
|
||||
print OUT "nonguarded\n";
|
||||
}
|
||||
|
||||
print OUT "nonguarded\n" if $instance->{'nonguarded'};
|
||||
print OUT "\n";
|
||||
}
|
||||
|
||||
@ -1678,7 +1761,7 @@ sub run_testcase ($) {
|
||||
$master->[0]->{'running_master_is_special'}= 1;
|
||||
}
|
||||
}
|
||||
elsif ( $tinfo->{'component_id'} eq 'im')
|
||||
elsif ( ! $opt_skip_im and $tinfo->{'component_id'} eq 'im' )
|
||||
{
|
||||
# We have to create defaults file every time, in order to ensure that it
|
||||
# will be the same for each test. The problem is that test can change the
|
||||
@ -1776,7 +1859,8 @@ sub run_testcase ($) {
|
||||
# Stop Instance Manager if we are processing an IM-test case.
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
if ( ! $glob_use_running_server and $tinfo->{'component_id'} eq 'im' )
|
||||
if ( ! $glob_use_running_server and $tinfo->{'component_id'} eq 'im' and
|
||||
$instance_manager->{'pid'} )
|
||||
{
|
||||
im_stop($instance_manager);
|
||||
}
|
||||
@ -2049,7 +2133,7 @@ sub mysqld_arguments ($$$$$) {
|
||||
mtr_add_arg($args, "%s--max_heap_table_size=1M", $prefix);
|
||||
mtr_add_arg($args, "%s--log-bin-trust-routine-creators", $prefix);
|
||||
|
||||
if ( $opt_with_openssl )
|
||||
if ( $opt_ssl_supported )
|
||||
{
|
||||
mtr_add_arg($args, "%s--ssl-ca=%s/std_data/cacert.pem", $prefix,
|
||||
$glob_mysql_test_dir);
|
||||
@ -2195,7 +2279,7 @@ sub stop_masters_slaves () {
|
||||
|
||||
print "Ending Tests\n";
|
||||
|
||||
if (defined $instance_manager->{'pid'})
|
||||
if ( $instance_manager->{'pid'} )
|
||||
{
|
||||
print "Shutting-down Instance Manager\n";
|
||||
im_stop($instance_manager);
|
||||
@ -2269,14 +2353,10 @@ sub im_start($$) {
|
||||
my $instance_manager = shift;
|
||||
my $opts = shift;
|
||||
|
||||
if ( ! defined $exe_im)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
my $args;
|
||||
mtr_init_args(\$args);
|
||||
mtr_add_arg($args, "--defaults-file=" . $instance_manager->{'defaults_file'});
|
||||
mtr_add_arg($args, "--defaults-file=%s",
|
||||
$instance_manager->{'defaults_file'});
|
||||
|
||||
foreach my $opt (@{$opts})
|
||||
{
|
||||
@ -2294,7 +2374,7 @@ sub im_start($$) {
|
||||
{ append_log_file => 1 } # append log files
|
||||
);
|
||||
|
||||
if ( ! defined $instance_manager->{'pid'} )
|
||||
if ( ! $instance_manager->{'pid'} )
|
||||
{
|
||||
mtr_report('Could not start Instance Manager');
|
||||
return;
|
||||
@ -2304,10 +2384,14 @@ sub im_start($$) {
|
||||
# several processes and the parent process, created by mtr_spawn(), exits just
|
||||
# after start. So, we have to obtain Instance Manager PID from the PID file.
|
||||
|
||||
sleep_until_file_created(
|
||||
$instance_manager->{'path_pid'},
|
||||
$instance_manager->{'start_timeout'},
|
||||
-1); # real PID is still unknown
|
||||
if ( ! sleep_until_file_created(
|
||||
$instance_manager->{'path_pid'},
|
||||
$instance_manager->{'start_timeout'},
|
||||
-1)) # real PID is still unknown
|
||||
{
|
||||
mtr_report("Instance Manager PID file is missing");
|
||||
return;
|
||||
}
|
||||
|
||||
$instance_manager->{'pid'} =
|
||||
mtr_get_pid_from_file($instance_manager->{'path_pid'});
|
||||
@ -2316,16 +2400,12 @@ sub im_start($$) {
|
||||
sub im_stop($) {
|
||||
my $instance_manager = shift;
|
||||
|
||||
if (! defined $instance_manager->{'pid'})
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
# Re-read pid from the file, since during tests Instance Manager could have
|
||||
# been restarted, so its pid could have been changed.
|
||||
|
||||
$instance_manager->{'pid'} =
|
||||
mtr_get_pid_from_file($instance_manager->{'path_pid'});
|
||||
mtr_get_pid_from_file($instance_manager->{'path_pid'})
|
||||
if -f $instance_manager->{'path_pid'};
|
||||
|
||||
# Inspired from mtr_stop_mysqld_servers().
|
||||
|
||||
@ -2340,12 +2420,12 @@ sub im_stop($) {
|
||||
|
||||
if ( -r $instances->[0]->{'path_pid'} )
|
||||
{
|
||||
push @pids, mtr_get_pid_from_file($instances->[0]->{'path_pid'});
|
||||
push(@pids, mtr_get_pid_from_file($instances->[0]->{'path_pid'}));
|
||||
}
|
||||
|
||||
if ( -r $instances->[1]->{'path_pid'} )
|
||||
{
|
||||
push @pids, mtr_get_pid_from_file($instances->[1]->{'path_pid'});
|
||||
push(@pids, mtr_get_pid_from_file($instances->[1]->{'path_pid'}));
|
||||
}
|
||||
|
||||
# Kill processes.
|
||||
@ -2360,6 +2440,15 @@ sub im_stop($) {
|
||||
sub run_mysqltest ($) {
|
||||
my $tinfo= shift;
|
||||
|
||||
my $cmdline_mysqlcheck= "$exe_mysqlcheck --no-defaults -uroot " .
|
||||
"--port=$master->[0]->{'path_myport'} " .
|
||||
"--socket=$master->[0]->{'path_mysock'} --password=";
|
||||
if ( $opt_debug )
|
||||
{
|
||||
$cmdline_mysqlcheck .=
|
||||
" --debug=d:t:A,$opt_vardir/log/mysqldump.trace";
|
||||
}
|
||||
|
||||
my $cmdline_mysqldump= "$exe_mysqldump --no-defaults -uroot " .
|
||||
"--port=$master->[0]->{'path_myport'} " .
|
||||
"--socket=$master->[0]->{'path_mysock'} --password=";
|
||||
@ -2368,6 +2457,14 @@ sub run_mysqltest ($) {
|
||||
$cmdline_mysqldump .=
|
||||
" --debug=d:t:A,$opt_vardir/log/mysqldump.trace";
|
||||
}
|
||||
my $cmdline_mysqlimport= "$exe_mysqlimport -uroot " .
|
||||
"--port=$master->[0]->{'path_myport'} " .
|
||||
"--socket=$master->[0]->{'path_mysock'} --password=";
|
||||
if ( $opt_debug )
|
||||
{
|
||||
$cmdline_mysqlimport .=
|
||||
" --debug=d:t:A,$opt_vardir/log/mysqlimport.trace";
|
||||
}
|
||||
|
||||
my $cmdline_mysqlshow= "$exe_mysqlshow -uroot " .
|
||||
"--port=$master->[0]->{'path_myport'} " .
|
||||
@ -2419,7 +2516,9 @@ sub run_mysqltest ($) {
|
||||
# $ENV{'PATH'}= "/bin:/usr/bin:/usr/local/bin:/usr/bsd:/usr/X11R6/bin:/usr/openwin/bin:/usr/bin/X11:$ENV{'PATH'}";
|
||||
|
||||
$ENV{'MYSQL'}= $cmdline_mysql;
|
||||
$ENV{'MYSQL_CHECK'}= $cmdline_mysqlcheck;
|
||||
$ENV{'MYSQL_DUMP'}= $cmdline_mysqldump;
|
||||
$ENV{'MYSQL_IMPORT'}= $cmdline_mysqlimport;
|
||||
$ENV{'MYSQL_SHOW'}= $cmdline_mysqlshow;
|
||||
$ENV{'MYSQL_BINLOG'}= $cmdline_mysqlbinlog;
|
||||
$ENV{'MYSQL_FIX_SYSTEM_TABLES'}= $cmdline_mysql_fix_system_tables;
|
||||
@ -2504,14 +2603,26 @@ sub run_mysqltest ($) {
|
||||
mtr_add_arg($args, "--debug=d:t:A,%s/log/mysqltest.trace", $opt_vardir);
|
||||
}
|
||||
|
||||
if ( $opt_with_openssl )
|
||||
if ( $opt_ssl_supported )
|
||||
{
|
||||
mtr_add_arg($args, "--ssl-ca=%s/std_data/cacert.pem",
|
||||
$glob_mysql_test_dir);
|
||||
$glob_mysql_test_dir);
|
||||
mtr_add_arg($args, "--ssl-cert=%s/std_data/client-cert.pem",
|
||||
$glob_mysql_test_dir);
|
||||
$glob_mysql_test_dir);
|
||||
mtr_add_arg($args, "--ssl-key=%s/std_data/client-key.pem",
|
||||
$glob_mysql_test_dir);
|
||||
$glob_mysql_test_dir);
|
||||
}
|
||||
|
||||
# Turn on SSL for all test cases
|
||||
if ( $opt_ssl )
|
||||
{
|
||||
mtr_add_arg($args, "--ssl",
|
||||
$glob_mysql_test_dir);
|
||||
}
|
||||
elsif ( $opt_ssl_supported )
|
||||
{
|
||||
mtr_add_arg($args, "--skip-ssl",
|
||||
$glob_mysql_test_dir);
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
@ -2590,6 +2701,9 @@ Options to control what engine/variation to run
|
||||
|
||||
embedded-server Use the embedded server, i.e. no mysqld daemons
|
||||
ps-protocol Use the binary protocol between client and server
|
||||
compress Use the compressed protocol between client and server
|
||||
ssl Use ssl protocol between client and server
|
||||
skip-ssl Dont start sterver with support for ssl connections
|
||||
bench Run the benchmark suite FIXME
|
||||
small-bench FIXME
|
||||
|
||||
@ -2597,10 +2711,12 @@ Options to control what test suites or cases to run
|
||||
|
||||
force Continue to run the suite after failure
|
||||
with-ndbcluster Use cluster, and enable test cases that requres it
|
||||
skip-ndb[cluster] Skip the ndb test cases, don't start cluster
|
||||
do-test=PREFIX Run test cases which name are prefixed with PREFIX
|
||||
start-from=PREFIX Run test cases starting from test prefixed with PREFIX
|
||||
suite=NAME Run the test suite named NAME. The default is "main"
|
||||
skip-rpl Skip the replication test cases.
|
||||
skip-im Don't start IM, and skip the IM test cases
|
||||
skip-test=PREFIX Skip test cases which name are prefixed with PREFIX
|
||||
|
||||
Options that specify ports
|
||||
@ -2620,7 +2736,7 @@ Options that pass on options
|
||||
Options to run test on running server
|
||||
|
||||
extern Use running server for tests FIXME DANGEROUS
|
||||
ndbconnectstring=STR Use running cluster, and connect using STR
|
||||
ndbconnectstring=STR Use running cluster, and connect using STR
|
||||
user=USER User for connect to server
|
||||
|
||||
Options for debugging the product
|
||||
@ -2648,7 +2764,6 @@ Misc options
|
||||
|
||||
verbose Verbose output from this script
|
||||
script-debug Debug this script itself
|
||||
compress Use the compressed protocol between client and server
|
||||
timer Show test case execution time
|
||||
start-and-exit Only initiate and start the "mysqld" servers, use the startup
|
||||
settings for the specified test case if any
|
||||
@ -2661,6 +2776,9 @@ Misc options
|
||||
testcase-timeout=MINUTES Max test case run time (default 5)
|
||||
suite-timeout=MINUTES Max test suite run time (default 120)
|
||||
|
||||
Deprecated options
|
||||
with-openssl Deprecated option for ssl
|
||||
|
||||
|
||||
Options not yet described, or that I want to look into more
|
||||
|
||||
@ -2677,7 +2795,6 @@ Options not yet described, or that I want to look into more
|
||||
wait-timeout=SECONDS
|
||||
warnings
|
||||
log-warnings
|
||||
with-openssl
|
||||
|
||||
HERE
|
||||
mtr_exit(1);
|
||||
|
@ -216,12 +216,32 @@ NDBCLUSTER_PORT=9350
|
||||
MYSQL_MANAGER_PW_FILE=$MYSQL_TEST_DIR/var/tmp/manager.pwd
|
||||
MYSQL_MANAGER_LOG=$MYSQL_TEST_DIR/var/log/manager.log
|
||||
MYSQL_MANAGER_USER=root
|
||||
|
||||
#
|
||||
# To make it easier for different devs to work on the same host,
|
||||
# an environment variable can be used to control all ports. A small
|
||||
# number is to be used, 0 - 16 or similar.
|
||||
#
|
||||
if [ -n "$MTR_BUILD_THREAD" ] ; then
|
||||
MASTER_MYPORT=`expr $MTR_BUILD_THREAD '*' 5 + 10000`
|
||||
MYSQL_MANAGER_PORT=`expr $MASTER_MYPORT + 2`
|
||||
SLAVE_MYPORT=`expr $MASTER_MYPORT + 3`
|
||||
NDBCLUSTER_PORT=`expr $MASTER_MYPORT + 4`
|
||||
|
||||
echo "Using MTR_BUILD_THREAD = $MTR_BUILD_THREAD"
|
||||
echo "Using MASTER_MYPORT = $MASTER_MYPORT"
|
||||
echo "Using MYSQL_MANAGER_PORT = $MYSQL_MANAGER_PORT"
|
||||
echo "Using SLAVE_MYPORT = $SLAVE_MYPORT"
|
||||
echo "Using NDBCLUSTER_PORT = $NDBCLUSTER_PORT"
|
||||
fi
|
||||
|
||||
NO_SLAVE=0
|
||||
USER_TEST=
|
||||
FAILED_CASES=
|
||||
|
||||
EXTRA_MASTER_OPT=""
|
||||
EXTRA_MYSQL_TEST_OPT=""
|
||||
EXTRA_MYSQLCHECK_OPT=""
|
||||
EXTRA_MYSQLDUMP_OPT=""
|
||||
EXTRA_MYSQLSHOW_OPT=""
|
||||
EXTRA_MYSQLBINLOG_OPT=""
|
||||
@ -255,6 +275,17 @@ NDB_MGM_EXTRA_OPTS=
|
||||
NDB_MGMD_EXTRA_OPTS=
|
||||
NDBD_EXTRA_OPTS=
|
||||
|
||||
DO_STRESS=""
|
||||
STRESS_SUITE="main"
|
||||
STRESS_MODE="random"
|
||||
STRESS_THREADS=5
|
||||
STRESS_TEST_COUNT=20
|
||||
STRESS_LOOP_COUNT=""
|
||||
STRESS_TEST_DURATION=""
|
||||
STRESS_INIT_FILE=""
|
||||
STRESS_TEST_FILE=""
|
||||
STRESS_TEST=""
|
||||
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
--embedded-server)
|
||||
@ -343,6 +374,35 @@ while test $# -gt 0; do
|
||||
DO_BENCH=1
|
||||
NO_SLAVE=1
|
||||
;;
|
||||
--stress)
|
||||
DO_STRESS=1
|
||||
NO_SLAVE=1
|
||||
SKIP_SLAVE=1
|
||||
;;
|
||||
--stress-suite=*)
|
||||
STRESS_SUITE=`$ECHO "$1" | $SED -e "s;--stress-suite=;;"`
|
||||
;;
|
||||
--stress-threads=*)
|
||||
STRESS_THREADS=`$ECHO "$1" | $SED -e "s;--stress-threads=;;"`
|
||||
;;
|
||||
--stress-test-file=*)
|
||||
STRESS_TEST_FILE=`$ECHO "$1" | $SED -e "s;--stress-test-file=;;"`
|
||||
;;
|
||||
--stress-init-file=*)
|
||||
STRESS_INIT_FILE=`$ECHO "$1" | $SED -e "s;--stress-init-file=;;"`
|
||||
;;
|
||||
--stress-mode=*)
|
||||
STRESS_MODE=`$ECHO "$1" | $SED -e "s;--stress-mode=;;"`
|
||||
;;
|
||||
--stress-loop-count=*)
|
||||
STRESS_LOOP_COUNT=`$ECHO "$1" | $SED -e "s;--stress-loop-count=;;"`
|
||||
;;
|
||||
--stress-test-count=*)
|
||||
STRESS_TEST_COUNT=`$ECHO "$1" | $SED -e "s;--stress-test-count=;;"`
|
||||
;;
|
||||
--stress-test-duration=*)
|
||||
STRESS_TEST_DURATION=`$ECHO "$1" | $SED -e "s;--stress-test-duration=;;"`
|
||||
;;
|
||||
--big*) # Actually --big-test
|
||||
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT $1" ;;
|
||||
--compress)
|
||||
@ -455,6 +515,8 @@ while test $# -gt 0; do
|
||||
--debug=d:t:i:A,$MYSQL_TEST_DIR/var/log/slave.trace"
|
||||
EXTRA_MYSQL_TEST_OPT="$EXTRA_MYSQL_TEST_OPT \
|
||||
--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqltest.trace"
|
||||
EXTRA_MYSQLCHECK_OPT="$EXTRA_MYSQLCHECK_OPT \
|
||||
--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqlcheck.trace"
|
||||
EXTRA_MYSQLDUMP_OPT="$EXTRA_MYSQLDUMP_OPT \
|
||||
--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqldump.trace"
|
||||
EXTRA_MYSQLSHOW_OPT="$EXTRA_MYSQLSHOW_OPT \
|
||||
@ -557,11 +619,21 @@ if [ x$SOURCE_DIST = x1 ] ; then
|
||||
fi
|
||||
MYSQL_CLIENT_TEST="$BASEDIR/tests/mysql_client_test"
|
||||
fi
|
||||
if [ -f "$BASEDIR/client/.libs/mysqlcheck" ] ; then
|
||||
MYSQL_CHECK="$BASEDIR/client/.libs/mysqlcheck"
|
||||
else
|
||||
MYSQL_CHECK="$BASEDIR/client/mysqlcheck"
|
||||
fi
|
||||
if [ -f "$BASEDIR/client/.libs/mysqldump" ] ; then
|
||||
MYSQL_DUMP="$BASEDIR/client/.libs/mysqldump"
|
||||
else
|
||||
MYSQL_DUMP="$BASEDIR/client/mysqldump"
|
||||
fi
|
||||
if [ -f "$BASEDIR/client/.libs/mysqlimport" ] ; then
|
||||
MYSQL_IMPORT="$BASEDIR/client/.libs/mysqlimport"
|
||||
else
|
||||
MYSQL_IMPORT="$BASEDIR/client/mysqlimport"
|
||||
fi
|
||||
if [ -f "$BASEDIR/client/.libs/mysqlshow" ] ; then
|
||||
MYSQL_SHOW="$BASEDIR/client/.libs/mysqlshow"
|
||||
else
|
||||
@ -635,8 +707,10 @@ else
|
||||
TESTS_BINDIR="$BASEDIR/bin"
|
||||
fi
|
||||
MYSQL_TEST="$CLIENT_BINDIR/mysqltest"
|
||||
MYSQL_CHECK="$CLIENT_BINDIR/mysqlcheck"
|
||||
MYSQL_DUMP="$CLIENT_BINDIR/mysqldump"
|
||||
MYSQL_SHOW="$CLIENT_BINDIR/mysqlshow"
|
||||
MYSQL_IMPORT="$CLIENT_BINDIR/mysqlimport"
|
||||
MYSQL_BINLOG="$CLIENT_BINDIR/mysqlbinlog"
|
||||
MYSQLADMIN="$CLIENT_BINDIR/mysqladmin"
|
||||
WAIT_PID="$CLIENT_BINDIR/mysql_waitpid"
|
||||
@ -691,7 +765,7 @@ fi
|
||||
|
||||
# If we should run all tests cases, we will use a local server for that
|
||||
|
||||
if [ -z "$1" ]
|
||||
if [ -z "$1" -a -z "$DO_STRESS" ]
|
||||
then
|
||||
USE_RUNNING_SERVER=0
|
||||
fi
|
||||
@ -720,12 +794,14 @@ fi
|
||||
# Save path and name of mysqldump
|
||||
MYSQL_DUMP_DIR="$MYSQL_DUMP"
|
||||
export MYSQL_DUMP_DIR
|
||||
MYSQL_CHECK="$MYSQL_CHECK --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLCHECK_OPT"
|
||||
MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
MYSQL_SHOW="$MYSQL_SHOW -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLSHOW_OPT"
|
||||
MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR --character-sets-dir=$CHARSETSDIR $EXTRA_MYSQLBINLOG_OPT"
|
||||
MYSQL_IMPORT="$MYSQL_IMPORT -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose"
|
||||
MYSQL="$MYSQL --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD"
|
||||
export MYSQL MYSQL_DUMP MYSQL_SHOW MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES
|
||||
export MYSQL MYSQL_CHECK MYSQL_DUMP MYSQL_SHOW MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES MYSQL_IMPORT
|
||||
export CLIENT_BINDIR MYSQL_CLIENT_TEST CHARSETSDIR MYSQL_MY_PRINT_DEFAULTS
|
||||
export NDB_TOOLS_DIR
|
||||
export NDB_MGM
|
||||
@ -757,7 +833,7 @@ if [ -n "$DO_CLIENT_GDB" -o -n "$DO_GDB" ] ; then
|
||||
XTERM=`which xterm`
|
||||
fi
|
||||
|
||||
export MYSQL MYSQL_DUMP MYSQL_SHOW MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES CLIENT_BINDIR MASTER_MYSOCK
|
||||
export MYSQL MYSQL_CHECK MYSQL_DUMP MYSQL_SHOW MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES CLIENT_BINDIR MASTER_MYSOCK
|
||||
|
||||
#++
|
||||
# Function Definitions
|
||||
@ -1179,7 +1255,7 @@ start_master()
|
||||
then
|
||||
CURR_MASTER_MYSQLD_TRACE="$EXTRA_MASTER_MYSQLD_TRACE$1"
|
||||
fi
|
||||
if [ -z "$DO_BENCH" ]
|
||||
if [ -z "$DO_BENCH" -a -z "$DO_STRESS" ]
|
||||
then
|
||||
master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
|
||||
--server-id=$id \
|
||||
@ -1616,7 +1692,7 @@ run_testcase ()
|
||||
stop_master 1
|
||||
report_current_test $tname
|
||||
start_master
|
||||
if [ -n "$USE_NDBCLUSTER" -a -z "$DO_BENCH" ] ; then
|
||||
if [ -n "$USE_NDBCLUSTER" -a -z "$DO_BENCH" -a -z "$DO_STRESS" ] ; then
|
||||
start_master 1
|
||||
fi
|
||||
TZ=$MY_TZ; export TZ
|
||||
@ -1632,7 +1708,7 @@ run_testcase ()
|
||||
stop_master 1
|
||||
report_current_test $tname
|
||||
start_master
|
||||
if [ -n "$USE_NDBCLUSTER" -a -z "$DO_BENCH" ] ; then
|
||||
if [ -n "$USE_NDBCLUSTER" -a -z "$DO_BENCH" -a -z "$DO_STRESS" ] ; then
|
||||
start_master 1
|
||||
fi
|
||||
else
|
||||
@ -1753,6 +1829,125 @@ run_testcase ()
|
||||
fi
|
||||
}
|
||||
|
||||
run_stress_test()
|
||||
{
|
||||
|
||||
STRESS_BASEDIR="$MYSQL_TEST_DIR/var/stress"
|
||||
|
||||
#Clean-up old stress test basedir
|
||||
if [ -d $STRESS_BASEDIR ] ; then
|
||||
$RM -rf $STRESS_BASEDIR
|
||||
fi
|
||||
#Create stress test basedir
|
||||
mkdir $STRESS_BASEDIR
|
||||
|
||||
if [ "$STRESS_SUITE" != "main" -a "$STRESS_SUITE" != "default" ] ; then
|
||||
STRESS_SUITE_DIR="$MYSQL_TEST_DIR/suite/$STRESS_SUITE"
|
||||
else
|
||||
STRESS_SUITE_DIR="$MYSQL_TEST_DIR"
|
||||
fi
|
||||
|
||||
if [ -d "$STRESS_SUITE_DIR" ] ; then
|
||||
STRESS_SUITE_T_DIR="$STRESS_SUITE_DIR/t"
|
||||
STRESS_SUITE_R_DIR="$STRESS_SUITE_DIR/r"
|
||||
#FIXME: check that dirs above are exist
|
||||
else
|
||||
echo "Directory $STRESS_SUITE_DIR with test suite doesn't exists. Abort stress testing"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$STRESS_TEST" ] ; then
|
||||
STRESS_TEST_FILE="$STRESS_BASEDIR/stress_tests.txt"
|
||||
echo $STRESS_TEST > $STRESS_TEST_FILE
|
||||
elif [ -n "$STRESS_TEST_FILE" ] ; then
|
||||
STRESS_TEST_FILE="$STRESS_SUITE_DIR/$STRESS_TEST_FILE"
|
||||
if [ ! -f "$STRESS_TEST_FILE" ] ; then
|
||||
echo "Specified file $STRESS_TEST_FILE with list of tests does not exist"
|
||||
echo "Please ensure that file exists and has proper permissions"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
STRESS_TEST_FILE="$STRESS_SUITE_DIR/stress_tests.txt"
|
||||
if [ ! -f "$STRESS_TEST_FILE" ] ; then
|
||||
echo "Default file $STRESS_TEST_FILE with list of tests does not exist."
|
||||
echo "Please use --stress-test-file option to specify custom one or you can"
|
||||
echo "just specify name of test for testing as last argument in command line"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$STRESS_INIT_FILE" ] ; then
|
||||
STRESS_INIT_FILE="$STRESS_SUITE_DIR/$STRESS_INIT_FILE"
|
||||
if [ ! -f "$STRESS_INIT_FILE" ] ; then
|
||||
echo "Specified file $STRESS_INIT_FILE with list of tests doesn't exist."
|
||||
echo "Please ensure that file exists and has proper permissions"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
STRESS_INIT_FILE="$STRESS_SUITE_DIR/stress_init.txt"
|
||||
#Check for default init file
|
||||
if [ ! -f "$STRESS_INIT_FILE" ] ; then
|
||||
STRESS_INIT_FILE=""
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$STRESS_MODE" != "random" -a "$STRESS_MODE" != "seq" ] ; then
|
||||
echo "You specified wrong mode '$STRESS_MODE' for stress test."
|
||||
echo "Correct values are 'random' or 'seq'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
STRESS_TEST_ARGS="--server-socket=$MASTER_MYSOCK \
|
||||
--server-user=$DBUSER \
|
||||
--server-database=$DB \
|
||||
--stress-suite-basedir=$MYSQL_TEST_DIR \
|
||||
--suite=$STRESS_SUITE \
|
||||
--stress-tests-file=$STRESS_TEST_FILE \
|
||||
--stress-basedir=$STRESS_BASEDIR \
|
||||
--server-logs-dir=$STRESS_BASEDIR \
|
||||
--stress-mode=$STRESS_MODE \
|
||||
--mysqltest=$BASEDIR/client/mysqltest \
|
||||
--threads=$STRESS_THREADS \
|
||||
--verbose \
|
||||
--cleanup \
|
||||
--log-error-details \
|
||||
--abort-on-error"
|
||||
|
||||
if [ -n "$STRESS_INIT_FILE" ] ; then
|
||||
STRESS_TEST_ARGS="$STRESS_TEST_ARGS --stress-init-file=$STRESS_INIT_FILE"
|
||||
fi
|
||||
|
||||
if [ -n "$STRESS_LOOP_COUNT" ] ; then
|
||||
STRESS_TEST_ARGS="$STRESS_TEST_ARGS --loop-count=$STRESS_LOOP_COUNT"
|
||||
fi
|
||||
|
||||
if [ -n "$STRESS_TEST_COUNT" ] ; then
|
||||
STRESS_TEST_ARGS="$STRESS_TEST_ARGS --test-count=$STRESS_TEST_COUNT"
|
||||
fi
|
||||
|
||||
if [ -n "$STRESS_TEST_DURATION" ] ; then
|
||||
STRESS_TEST_ARGS="$STRESS_TEST_ARGS --test-duration=$STRESS_TEST_DURATION"
|
||||
fi
|
||||
|
||||
echo "Stress test related variables:"
|
||||
echo "TESTS - $1"
|
||||
echo "STRESS - $DO_STRESS"
|
||||
echo "STRESS_SUITE - $STRESS_SUITE"
|
||||
echo "STRESS_TEST_FILE - $STRESS_TEST_FILE"
|
||||
echo "STRESS_INIT_FILE - $STRESS_INIT_FILE"
|
||||
echo "STRESS_THREADS - $STRESS_THREADS"
|
||||
echo "STRESS_MODE - $STRESS_MODE"
|
||||
echo "STRESS_TEST_COUNT - $STRESS_TEST_COUNT"
|
||||
echo "STRESS_LOOP_COUNT - $STRESS_LOOP_COUNT"
|
||||
echo "STRESS_TEST_DURATION - $STRESS_TEST_DURATION"
|
||||
|
||||
#echo "$STRESS_TEST_ARGS";
|
||||
#Run stress test
|
||||
$MYSQL_TEST_DIR/mysql-stress-test.pl $STRESS_TEST_ARGS
|
||||
|
||||
|
||||
}
|
||||
|
||||
######################################################################
|
||||
# Main script starts here
|
||||
######################################################################
|
||||
@ -1867,6 +2062,32 @@ then
|
||||
exit
|
||||
fi
|
||||
|
||||
#
|
||||
# Stress testing
|
||||
#
|
||||
if [ "$DO_STRESS" = 1 ]
|
||||
then
|
||||
|
||||
if [ -n "$1" ] ; then
|
||||
STRESS_TEST="$1";
|
||||
fi
|
||||
|
||||
if [ $USE_RUNNING_SERVER -eq 0 ] ; then
|
||||
start_master
|
||||
fi
|
||||
|
||||
run_stress_test
|
||||
|
||||
if [ $USE_RUNNING_SERVER -eq 0 ] ; then
|
||||
mysql_stop
|
||||
stop_manager
|
||||
fi
|
||||
|
||||
exit
|
||||
|
||||
fi
|
||||
|
||||
|
||||
$ECHO
|
||||
if [ x$USE_TIMER = x1 ] ; then
|
||||
$ECHO "TEST RESULT TIME (ms)"
|
||||
|
@ -1741,7 +1741,6 @@ int main(int argc, char **argv)
|
||||
int* handle;
|
||||
char test[FN_LEN];
|
||||
char mask[FN_REFLEN];
|
||||
char *p;
|
||||
int position;
|
||||
|
||||
/* single test */
|
||||
|
@ -436,7 +436,7 @@ alter table t1 change a a char(10) character set cp1251;
|
||||
select a,hex(a) from t1;
|
||||
a hex(a)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> F2E5F1F2
|
||||
alter table t1 change a a binary(10);
|
||||
alter table t1 change a a binary(4);
|
||||
select a,hex(a) from t1;
|
||||
a hex(a)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> F2E5F1F2
|
||||
@ -541,16 +541,16 @@ create table t1 ( a timestamp );
|
||||
alter table t1 add unique ( a(1) );
|
||||
ERROR HY000: Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys
|
||||
drop table t1;
|
||||
create database mysqltest1;
|
||||
create database mysqltest;
|
||||
create table t1 (c1 int);
|
||||
alter table t1 rename mysqltest1.t1;
|
||||
alter table t1 rename mysqltest.t1;
|
||||
drop table t1;
|
||||
ERROR 42S02: Unknown table 't1'
|
||||
alter table mysqltest1.t1 rename t1;
|
||||
alter table mysqltest.t1 rename t1;
|
||||
drop table t1;
|
||||
create table t1 (c1 int);
|
||||
use mysqltest1;
|
||||
drop database mysqltest1;
|
||||
use mysqltest;
|
||||
drop database mysqltest;
|
||||
alter table test.t1 rename t1;
|
||||
ERROR 3D000: No database selected
|
||||
alter table test.t1 rename test.t1;
|
||||
|
@ -107,7 +107,7 @@ insert into t1 values(1.1);
|
||||
insert into t1 values(2.2);
|
||||
select * from t1 procedure analyse();
|
||||
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||
test.t1.df 1.1 2.2 8 8 0 0 1.650000000 0.302500000 ENUM('1.1','2.2') NOT NULL
|
||||
test.t1.df 1.1 2.2 13 13 0 0 1.65000 0.55000 ENUM('1.1','2.2') NOT NULL
|
||||
drop table t1;
|
||||
create table t1 (d double);
|
||||
insert into t1 values (100000);
|
||||
@ -115,3 +115,29 @@ select * from t1 procedure analyse (1,1);
|
||||
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||
test.t1.d 100000 100000 6 6 0 0 100000 0 MEDIUMINT(6) UNSIGNED NOT NULL
|
||||
drop table t1;
|
||||
create table t1 (product varchar(32), country_id int not null, year int,
|
||||
profit int);
|
||||
insert into t1 values ( 'Computer', 2,2000, 1200),
|
||||
( 'TV', 1, 1999, 150),
|
||||
( 'Calculator', 1, 1999,50),
|
||||
( 'Computer', 1, 1999,1500),
|
||||
( 'Computer', 1, 2000,1500),
|
||||
( 'TV', 1, 2000, 150),
|
||||
( 'TV', 2, 2000, 100),
|
||||
( 'TV', 2, 2000, 100),
|
||||
( 'Calculator', 1, 2000,75),
|
||||
( 'Calculator', 2, 2000,75),
|
||||
( 'TV', 1, 1999, 100),
|
||||
( 'Computer', 1, 1999,1200),
|
||||
( 'Computer', 2, 2000,1500),
|
||||
( 'Calculator', 2, 2000,75),
|
||||
( 'Phone', 3, 2003,10)
|
||||
;
|
||||
create table t2 (country_id int primary key, country char(20) not null);
|
||||
insert into t2 values (1, 'USA'),(2,'India'), (3,'Finland');
|
||||
select product, sum(profit),avg(profit) from t1 group by product with rollup procedure analyse();
|
||||
Field_name Min_value Max_value Min_length Max_length Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
|
||||
test.t1.product Computer TV 2 8 0 0 4.2500 NULL ENUM('Computer','Phone','TV') NOT NULL
|
||||
sum(profit) 10 6900 11 11 0 0 1946.2500 2867.6719 ENUM('10','275','600','6900') NOT NULL
|
||||
avg(profit) 10.0000 1380.0000 16 16 0 0 394.68750000 570.20033144 ENUM('10.0000','68.7500','120.0000','1380.0000') NOT NULL
|
||||
drop table t1,t2;
|
||||
|
File diff suppressed because it is too large
Load Diff
458
mysql-test/r/archive_gis.result
Normal file
458
mysql-test/r/archive_gis.result
Normal file
@ -0,0 +1,458 @@
|
||||
SET storage_engine=archive;
|
||||
DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
|
||||
CREATE TABLE gis_point (fid INTEGER, g POINT);
|
||||
CREATE TABLE gis_line (fid INTEGER, g LINESTRING);
|
||||
CREATE TABLE gis_polygon (fid INTEGER, g POLYGON);
|
||||
CREATE TABLE gis_multi_point (fid INTEGER, g MULTIPOINT);
|
||||
CREATE TABLE gis_multi_line (fid INTEGER, g MULTILINESTRING);
|
||||
CREATE TABLE gis_multi_polygon (fid INTEGER, g MULTIPOLYGON);
|
||||
CREATE TABLE gis_geometrycollection (fid INTEGER, g GEOMETRYCOLLECTION);
|
||||
CREATE TABLE gis_geometry (fid INTEGER, g GEOMETRY);
|
||||
SHOW CREATE TABLE gis_point;
|
||||
Table Create Table
|
||||
gis_point CREATE TABLE `gis_point` (
|
||||
`fid` int(11) default NULL,
|
||||
`g` point default NULL
|
||||
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g point YES NULL
|
||||
SHOW FIELDS FROM gis_line;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g linestring YES NULL
|
||||
SHOW FIELDS FROM gis_polygon;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g polygon YES NULL
|
||||
SHOW FIELDS FROM gis_multi_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g multipoint YES NULL
|
||||
SHOW FIELDS FROM gis_multi_line;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g multilinestring YES NULL
|
||||
SHOW FIELDS FROM gis_multi_polygon;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g multipolygon YES NULL
|
||||
SHOW FIELDS FROM gis_geometrycollection;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g geometrycollection YES NULL
|
||||
SHOW FIELDS FROM gis_geometry;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g geometry YES NULL
|
||||
INSERT INTO gis_point VALUES
|
||||
(101, PointFromText('POINT(10 10)')),
|
||||
(102, PointFromText('POINT(20 10)')),
|
||||
(103, PointFromText('POINT(20 20)')),
|
||||
(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
|
||||
INSERT INTO gis_line VALUES
|
||||
(105, LineFromText('LINESTRING(0 0,0 10,10 0)')),
|
||||
(106, LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')),
|
||||
(107, LineStringFromWKB(LineString(Point(10, 10), Point(40, 10))));
|
||||
INSERT INTO gis_polygon VALUES
|
||||
(108, PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),
|
||||
(109, PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')),
|
||||
(110, PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))));
|
||||
INSERT INTO gis_multi_point VALUES
|
||||
(111, MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')),
|
||||
(112, MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')),
|
||||
(113, MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10))));
|
||||
INSERT INTO gis_multi_line VALUES
|
||||
(114, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')),
|
||||
(115, MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')),
|
||||
(116, MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))));
|
||||
INSERT INTO gis_multi_polygon VALUES
|
||||
(117, MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(118, MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(119, MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))));
|
||||
INSERT INTO gis_geometrycollection VALUES
|
||||
(120, GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
|
||||
(121, GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))));
|
||||
INSERT into gis_geometry SELECT * FROM gis_point;
|
||||
INSERT into gis_geometry SELECT * FROM gis_line;
|
||||
INSERT into gis_geometry SELECT * FROM gis_polygon;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_point;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_line;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_polygon;
|
||||
INSERT into gis_geometry SELECT * FROM gis_geometrycollection;
|
||||
SELECT fid, AsText(g) FROM gis_point ORDER by fid;
|
||||
fid AsText(g)
|
||||
101 POINT(10 10)
|
||||
102 POINT(20 10)
|
||||
103 POINT(20 20)
|
||||
104 POINT(10 20)
|
||||
SELECT fid, AsText(g) FROM gis_line ORDER by fid;
|
||||
fid AsText(g)
|
||||
105 LINESTRING(0 0,0 10,10 0)
|
||||
106 LINESTRING(10 10,20 10,20 20,10 20,10 10)
|
||||
107 LINESTRING(10 10,40 10)
|
||||
SELECT fid, AsText(g) FROM gis_polygon ORDER by fid;
|
||||
fid AsText(g)
|
||||
108 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
|
||||
110 POLYGON((0 0,30 0,30 30,0 0))
|
||||
SELECT fid, AsText(g) FROM gis_multi_point ORDER by fid;
|
||||
fid AsText(g)
|
||||
111 MULTIPOINT(0 0,10 10,10 20,20 20)
|
||||
112 MULTIPOINT(1 1,11 11,11 21,21 21)
|
||||
113 MULTIPOINT(3 6,4 10)
|
||||
SELECT fid, AsText(g) FROM gis_multi_line ORDER by fid;
|
||||
fid AsText(g)
|
||||
114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
|
||||
115 MULTILINESTRING((10 48,10 21,10 0))
|
||||
116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
|
||||
SELECT fid, AsText(g) FROM gis_multi_polygon ORDER by fid;
|
||||
fid AsText(g)
|
||||
117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
119 MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
|
||||
SELECT fid, AsText(g) FROM gis_geometrycollection ORDER by fid;
|
||||
fid AsText(g)
|
||||
120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
|
||||
121 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
|
||||
SELECT fid, AsText(g) FROM gis_geometry ORDER by fid;
|
||||
fid AsText(g)
|
||||
101 POINT(10 10)
|
||||
102 POINT(20 10)
|
||||
103 POINT(20 20)
|
||||
104 POINT(10 20)
|
||||
105 LINESTRING(0 0,0 10,10 0)
|
||||
106 LINESTRING(10 10,20 10,20 20,10 20,10 10)
|
||||
107 LINESTRING(10 10,40 10)
|
||||
108 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
|
||||
110 POLYGON((0 0,30 0,30 30,0 0))
|
||||
111 MULTIPOINT(0 0,10 10,10 20,20 20)
|
||||
112 MULTIPOINT(1 1,11 11,11 21,21 21)
|
||||
113 MULTIPOINT(3 6,4 10)
|
||||
114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
|
||||
115 MULTILINESTRING((10 48,10 21,10 0))
|
||||
116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
|
||||
117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
119 MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
|
||||
120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
|
||||
121 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
|
||||
SELECT fid, Dimension(g) FROM gis_geometry ORDER by fid;
|
||||
fid Dimension(g)
|
||||
101 0
|
||||
102 0
|
||||
103 0
|
||||
104 0
|
||||
105 1
|
||||
106 1
|
||||
107 1
|
||||
108 2
|
||||
109 2
|
||||
110 2
|
||||
111 0
|
||||
112 0
|
||||
113 0
|
||||
114 1
|
||||
115 1
|
||||
116 1
|
||||
117 2
|
||||
118 2
|
||||
119 2
|
||||
120 1
|
||||
121 1
|
||||
SELECT fid, GeometryType(g) FROM gis_geometry ORDER by fid;
|
||||
fid GeometryType(g)
|
||||
101 POINT
|
||||
102 POINT
|
||||
103 POINT
|
||||
104 POINT
|
||||
105 LINESTRING
|
||||
106 LINESTRING
|
||||
107 LINESTRING
|
||||
108 POLYGON
|
||||
109 POLYGON
|
||||
110 POLYGON
|
||||
111 MULTIPOINT
|
||||
112 MULTIPOINT
|
||||
113 MULTIPOINT
|
||||
114 MULTILINESTRING
|
||||
115 MULTILINESTRING
|
||||
116 MULTILINESTRING
|
||||
117 MULTIPOLYGON
|
||||
118 MULTIPOLYGON
|
||||
119 MULTIPOLYGON
|
||||
120 GEOMETRYCOLLECTION
|
||||
121 GEOMETRYCOLLECTION
|
||||
SELECT fid, IsEmpty(g) FROM gis_geometry ORDER by fid;
|
||||
fid IsEmpty(g)
|
||||
101 0
|
||||
102 0
|
||||
103 0
|
||||
104 0
|
||||
105 0
|
||||
106 0
|
||||
107 0
|
||||
108 0
|
||||
109 0
|
||||
110 0
|
||||
111 0
|
||||
112 0
|
||||
113 0
|
||||
114 0
|
||||
115 0
|
||||
116 0
|
||||
117 0
|
||||
118 0
|
||||
119 0
|
||||
120 0
|
||||
121 0
|
||||
SELECT fid, AsText(Envelope(g)) FROM gis_geometry ORDER by fid;
|
||||
fid AsText(Envelope(g))
|
||||
101 POLYGON((10 10,10 10,10 10,10 10,10 10))
|
||||
102 POLYGON((20 10,20 10,20 10,20 10,20 10))
|
||||
103 POLYGON((20 20,20 20,20 20,20 20,20 20))
|
||||
104 POLYGON((10 20,10 20,10 20,10 20,10 20))
|
||||
105 POLYGON((0 0,10 0,10 10,0 10,0 0))
|
||||
106 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
107 POLYGON((10 10,40 10,40 10,10 10,10 10))
|
||||
108 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
109 POLYGON((0 0,50 0,50 50,0 50,0 0))
|
||||
110 POLYGON((0 0,30 0,30 30,0 30,0 0))
|
||||
111 POLYGON((0 0,20 0,20 20,0 20,0 0))
|
||||
112 POLYGON((1 1,21 1,21 21,1 21,1 1))
|
||||
113 POLYGON((3 6,4 6,4 10,3 10,3 6))
|
||||
114 POLYGON((10 0,16 0,16 48,10 48,10 0))
|
||||
115 POLYGON((10 0,10 0,10 48,10 48,10 0))
|
||||
116 POLYGON((1 2,21 2,21 8,1 8,1 2))
|
||||
117 POLYGON((28 0,84 0,84 42,28 42,28 0))
|
||||
118 POLYGON((28 0,84 0,84 42,28 42,28 0))
|
||||
119 POLYGON((0 0,3 0,3 3,0 3,0 0))
|
||||
120 POLYGON((0 0,10 0,10 10,0 10,0 0))
|
||||
121 POLYGON((3 6,44 6,44 9,3 9,3 6))
|
||||
explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_geometry ALL NULL NULL NULL NULL 21
|
||||
Warnings:
|
||||
Note 1003 select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
|
||||
SELECT fid, X(g) FROM gis_point ORDER by fid;
|
||||
fid X(g)
|
||||
101 10
|
||||
102 20
|
||||
103 20
|
||||
104 10
|
||||
SELECT fid, Y(g) FROM gis_point ORDER by fid;
|
||||
fid Y(g)
|
||||
101 10
|
||||
102 10
|
||||
103 20
|
||||
104 20
|
||||
explain extended select X(g),Y(g) FROM gis_point;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_point ALL NULL NULL NULL NULL 4
|
||||
Warnings:
|
||||
Note 1003 select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
|
||||
SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
|
||||
fid AsText(StartPoint(g))
|
||||
105 POINT(0 0)
|
||||
106 POINT(10 10)
|
||||
107 POINT(10 10)
|
||||
SELECT fid, AsText(EndPoint(g)) FROM gis_line ORDER by fid;
|
||||
fid AsText(EndPoint(g))
|
||||
105 POINT(10 0)
|
||||
106 POINT(10 10)
|
||||
107 POINT(40 10)
|
||||
SELECT fid, GLength(g) FROM gis_line ORDER by fid;
|
||||
fid GLength(g)
|
||||
105 24.142135623731
|
||||
106 40
|
||||
107 30
|
||||
SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
|
||||
fid NumPoints(g)
|
||||
105 3
|
||||
106 5
|
||||
107 2
|
||||
SELECT fid, AsText(PointN(g, 2)) FROM gis_line ORDER by fid;
|
||||
fid AsText(PointN(g, 2))
|
||||
105 POINT(0 10)
|
||||
106 POINT(20 10)
|
||||
107 POINT(40 10)
|
||||
SELECT fid, IsClosed(g) FROM gis_line ORDER by fid;
|
||||
fid IsClosed(g)
|
||||
105 0
|
||||
106 1
|
||||
107 0
|
||||
explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_line ALL NULL NULL NULL NULL 3
|
||||
Warnings:
|
||||
Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
|
||||
SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
|
||||
fid AsText(Centroid(g))
|
||||
108 POINT(15 15)
|
||||
109 POINT(25.416666666667 25.416666666667)
|
||||
110 POINT(20 10)
|
||||
SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
|
||||
fid Area(g)
|
||||
108 100
|
||||
109 2400
|
||||
110 450
|
||||
SELECT fid, AsText(ExteriorRing(g)) FROM gis_polygon ORDER by fid;
|
||||
fid AsText(ExteriorRing(g))
|
||||
108 LINESTRING(10 10,20 10,20 20,10 20,10 10)
|
||||
109 LINESTRING(0 0,50 0,50 50,0 50,0 0)
|
||||
110 LINESTRING(0 0,30 0,30 30,0 0)
|
||||
SELECT fid, NumInteriorRings(g) FROM gis_polygon ORDER by fid;
|
||||
fid NumInteriorRings(g)
|
||||
108 0
|
||||
109 1
|
||||
110 0
|
||||
SELECT fid, AsText(InteriorRingN(g, 1)) FROM gis_polygon ORDER by fid;
|
||||
fid AsText(InteriorRingN(g, 1))
|
||||
108 NULL
|
||||
109 LINESTRING(10 10,20 10,20 20,10 20,10 10)
|
||||
110 NULL
|
||||
explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_polygon ALL NULL NULL NULL NULL 3
|
||||
Warnings:
|
||||
Note 1003 select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
|
||||
SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
|
||||
fid IsClosed(g)
|
||||
114 0
|
||||
115 0
|
||||
116 0
|
||||
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon ORDER by fid;
|
||||
fid AsText(Centroid(g))
|
||||
117 POINT(55.588527753042 17.426536064114)
|
||||
118 POINT(55.588527753042 17.426536064114)
|
||||
119 POINT(2 2)
|
||||
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
|
||||
fid Area(g)
|
||||
117 1684.5
|
||||
118 1684.5
|
||||
119 4.5
|
||||
SELECT fid, NumGeometries(g) from gis_multi_point ORDER by fid;
|
||||
fid NumGeometries(g)
|
||||
111 4
|
||||
112 4
|
||||
113 2
|
||||
SELECT fid, NumGeometries(g) from gis_multi_line ORDER by fid;
|
||||
fid NumGeometries(g)
|
||||
114 2
|
||||
115 1
|
||||
116 2
|
||||
SELECT fid, NumGeometries(g) from gis_multi_polygon ORDER by fid;
|
||||
fid NumGeometries(g)
|
||||
117 2
|
||||
118 2
|
||||
119 1
|
||||
SELECT fid, NumGeometries(g) from gis_geometrycollection ORDER by fid;
|
||||
fid NumGeometries(g)
|
||||
120 2
|
||||
121 2
|
||||
explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3
|
||||
Warnings:
|
||||
Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
|
||||
fid AsText(GeometryN(g, 2))
|
||||
111 POINT(10 10)
|
||||
112 POINT(11 11)
|
||||
113 POINT(4 10)
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_line ORDER by fid;
|
||||
fid AsText(GeometryN(g, 2))
|
||||
114 LINESTRING(16 0,16 23,16 48)
|
||||
115 NULL
|
||||
116 LINESTRING(2 5,5 8,21 7)
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_polygon ORDER by fid;
|
||||
fid AsText(GeometryN(g, 2))
|
||||
117 POLYGON((59 18,67 18,67 13,59 13,59 18))
|
||||
118 POLYGON((59 18,67 18,67 13,59 13,59 18))
|
||||
119 NULL
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_geometrycollection ORDER by fid;
|
||||
fid AsText(GeometryN(g, 2))
|
||||
120 LINESTRING(0 0,10 10)
|
||||
121 LINESTRING(3 6,7 9)
|
||||
SELECT fid, AsText(GeometryN(g, 1)) from gis_geometrycollection ORDER by fid;
|
||||
fid AsText(GeometryN(g, 1))
|
||||
120 POINT(0 0)
|
||||
121 POINT(44 6)
|
||||
explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3
|
||||
Warnings:
|
||||
Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
|
||||
SELECT g1.fid as first, g2.fid as second,
|
||||
Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
|
||||
Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
|
||||
Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
|
||||
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
|
||||
first second w c o e d t i r
|
||||
120 120 1 1 0 1 0 0 1 0
|
||||
120 121 0 0 0 0 0 0 1 0
|
||||
121 120 0 0 1 0 0 0 1 0
|
||||
121 121 1 1 0 1 0 0 1 0
|
||||
explain extended SELECT g1.fid as first, g2.fid as second,
|
||||
Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
|
||||
Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
|
||||
Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
|
||||
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE g1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
|
||||
1 SIMPLE g2 ALL NULL NULL NULL NULL 2
|
||||
Warnings:
|
||||
Note 1003 select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
|
||||
DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
|
||||
CREATE TABLE t1 (
|
||||
gp point,
|
||||
ln linestring,
|
||||
pg polygon,
|
||||
mp multipoint,
|
||||
mln multilinestring,
|
||||
mpg multipolygon,
|
||||
gc geometrycollection,
|
||||
gm geometry
|
||||
);
|
||||
SHOW FIELDS FROM t1;
|
||||
Field Type Null Key Default Extra
|
||||
gp point YES NULL
|
||||
ln linestring YES NULL
|
||||
pg polygon YES NULL
|
||||
mp multipoint YES NULL
|
||||
mln multilinestring YES NULL
|
||||
mpg multipolygon YES NULL
|
||||
gc geometrycollection YES NULL
|
||||
gm geometry YES NULL
|
||||
ALTER TABLE t1 ADD fid INT;
|
||||
SHOW FIELDS FROM t1;
|
||||
Field Type Null Key Default Extra
|
||||
gp point YES NULL
|
||||
ln linestring YES NULL
|
||||
pg polygon YES NULL
|
||||
mp multipoint YES NULL
|
||||
mln multilinestring YES NULL
|
||||
mpg multipolygon YES NULL
|
||||
gc geometrycollection YES NULL
|
||||
gm geometry YES NULL
|
||||
fid int(11) YES NULL
|
||||
DROP TABLE t1;
|
||||
create table t1 (a geometry not null);
|
||||
insert into t1 values (GeomFromText('Point(1 2)'));
|
||||
insert into t1 values ('Garbage');
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
insert IGNORE into t1 values ('Garbage');
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
drop table t1;
|
||||
create table t1 (fl geometry);
|
||||
insert into t1 values (1);
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
insert into t1 values (1.11);
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
insert into t1 values ("qwerty");
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
insert into t1 values (pointfromtext('point(1,1)'));
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
drop table t1;
|
@ -1584,8 +1584,6 @@ g 10
|
||||
h 10
|
||||
i 10
|
||||
alter table t1 modify v varchar(300), drop key v, drop key v_2, add key v (v);
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 255 bytes
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -1594,7 +1592,7 @@ t1 CREATE TABLE `t1` (
|
||||
`t` text,
|
||||
KEY `c` (`c`),
|
||||
KEY `t` (`t`(10)),
|
||||
KEY `v` (`v`(255))
|
||||
KEY `v` (`v`)
|
||||
) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1
|
||||
select count(*) from t1 where v='a';
|
||||
count(*)
|
||||
@ -1616,19 +1614,19 @@ count(*)
|
||||
9
|
||||
explain select count(*) from t1 where v='a ';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref v v 258 const # Using where
|
||||
1 SIMPLE t1 ref v v 303 const # Using where
|
||||
explain select count(*) from t1 where v like 'a%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range v v 258 NULL # Using where
|
||||
1 SIMPLE t1 range v v 303 NULL # Using where
|
||||
explain select count(*) from t1 where v between 'a' and 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref v v 258 const # Using where
|
||||
1 SIMPLE t1 ref v v 303 const # Using where
|
||||
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref v v 258 const # Using where
|
||||
1 SIMPLE t1 ref v v 303 const # Using where
|
||||
explain select * from t1 where v='a';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref v v 258 const # Using where
|
||||
1 SIMPLE t1 ref v v 303 const # Using where
|
||||
select v,count(*) from t1 group by v limit 10;
|
||||
v count(*)
|
||||
a 1
|
||||
@ -1656,15 +1654,15 @@ i 10
|
||||
select sql_big_result v,count(t) from t1 group by v limit 10;
|
||||
v count(t)
|
||||
a 1
|
||||
a 10
|
||||
b 10
|
||||
c 10
|
||||
d 10
|
||||
e 10
|
||||
f 10
|
||||
g 10
|
||||
h 10
|
||||
i 10
|
||||
a 10
|
||||
b 10
|
||||
c 10
|
||||
d 10
|
||||
e 10
|
||||
f 10
|
||||
g 10
|
||||
h 10
|
||||
i 10
|
||||
alter table t1 drop key v, add key v (v(30));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
@ -1746,8 +1744,6 @@ g 10
|
||||
h 10
|
||||
i 10
|
||||
alter table t1 modify v varchar(600), drop key v, add key v (v);
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 255 bytes
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -1756,7 +1752,7 @@ t1 CREATE TABLE `t1` (
|
||||
`t` text,
|
||||
KEY `c` (`c`),
|
||||
KEY `t` (`t`(10)),
|
||||
KEY `v` (`v`(255))
|
||||
KEY `v` (`v`)
|
||||
) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1
|
||||
select v,count(*) from t1 group by v limit 10;
|
||||
v count(*)
|
||||
@ -1785,15 +1781,15 @@ i 10
|
||||
select sql_big_result v,count(t) from t1 group by v limit 10;
|
||||
v count(t)
|
||||
a 1
|
||||
a 10
|
||||
b 10
|
||||
c 10
|
||||
d 10
|
||||
e 10
|
||||
f 10
|
||||
g 10
|
||||
h 10
|
||||
i 10
|
||||
a 10
|
||||
b 10
|
||||
c 10
|
||||
d 10
|
||||
e 10
|
||||
f 10
|
||||
g 10
|
||||
h 10
|
||||
i 10
|
||||
drop table t1;
|
||||
create table t1 (a char(10), unique (a));
|
||||
insert into t1 values ('a ');
|
||||
@ -1874,7 +1870,7 @@ a b
|
||||
drop table t1;
|
||||
create table t1 (v varchar(65530), key(v));
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 255 bytes
|
||||
Warning 1071 Specified key was too long; max key length is MAX_KEY_LENGTH bytes
|
||||
drop table if exists t1;
|
||||
create table t1 (v varchar(65536));
|
||||
Warnings:
|
||||
|
458
mysql-test/r/bdb_gis.result
Normal file
458
mysql-test/r/bdb_gis.result
Normal file
@ -0,0 +1,458 @@
|
||||
SET storage_engine=bdb;
|
||||
DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
|
||||
CREATE TABLE gis_point (fid INTEGER, g POINT);
|
||||
CREATE TABLE gis_line (fid INTEGER, g LINESTRING);
|
||||
CREATE TABLE gis_polygon (fid INTEGER, g POLYGON);
|
||||
CREATE TABLE gis_multi_point (fid INTEGER, g MULTIPOINT);
|
||||
CREATE TABLE gis_multi_line (fid INTEGER, g MULTILINESTRING);
|
||||
CREATE TABLE gis_multi_polygon (fid INTEGER, g MULTIPOLYGON);
|
||||
CREATE TABLE gis_geometrycollection (fid INTEGER, g GEOMETRYCOLLECTION);
|
||||
CREATE TABLE gis_geometry (fid INTEGER, g GEOMETRY);
|
||||
SHOW CREATE TABLE gis_point;
|
||||
Table Create Table
|
||||
gis_point CREATE TABLE `gis_point` (
|
||||
`fid` int(11) default NULL,
|
||||
`g` point default NULL
|
||||
) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g point YES NULL
|
||||
SHOW FIELDS FROM gis_line;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g linestring YES NULL
|
||||
SHOW FIELDS FROM gis_polygon;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g polygon YES NULL
|
||||
SHOW FIELDS FROM gis_multi_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g multipoint YES NULL
|
||||
SHOW FIELDS FROM gis_multi_line;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g multilinestring YES NULL
|
||||
SHOW FIELDS FROM gis_multi_polygon;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g multipolygon YES NULL
|
||||
SHOW FIELDS FROM gis_geometrycollection;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g geometrycollection YES NULL
|
||||
SHOW FIELDS FROM gis_geometry;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
g geometry YES NULL
|
||||
INSERT INTO gis_point VALUES
|
||||
(101, PointFromText('POINT(10 10)')),
|
||||
(102, PointFromText('POINT(20 10)')),
|
||||
(103, PointFromText('POINT(20 20)')),
|
||||
(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
|
||||
INSERT INTO gis_line VALUES
|
||||
(105, LineFromText('LINESTRING(0 0,0 10,10 0)')),
|
||||
(106, LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')),
|
||||
(107, LineStringFromWKB(LineString(Point(10, 10), Point(40, 10))));
|
||||
INSERT INTO gis_polygon VALUES
|
||||
(108, PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),
|
||||
(109, PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')),
|
||||
(110, PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))));
|
||||
INSERT INTO gis_multi_point VALUES
|
||||
(111, MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')),
|
||||
(112, MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')),
|
||||
(113, MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10))));
|
||||
INSERT INTO gis_multi_line VALUES
|
||||
(114, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')),
|
||||
(115, MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')),
|
||||
(116, MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))));
|
||||
INSERT INTO gis_multi_polygon VALUES
|
||||
(117, MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(118, MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
|
||||
(119, MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))));
|
||||
INSERT INTO gis_geometrycollection VALUES
|
||||
(120, GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
|
||||
(121, GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))));
|
||||
INSERT into gis_geometry SELECT * FROM gis_point;
|
||||
INSERT into gis_geometry SELECT * FROM gis_line;
|
||||
INSERT into gis_geometry SELECT * FROM gis_polygon;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_point;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_line;
|
||||
INSERT into gis_geometry SELECT * FROM gis_multi_polygon;
|
||||
INSERT into gis_geometry SELECT * FROM gis_geometrycollection;
|
||||
SELECT fid, AsText(g) FROM gis_point ORDER by fid;
|
||||
fid AsText(g)
|
||||
101 POINT(10 10)
|
||||
102 POINT(20 10)
|
||||
103 POINT(20 20)
|
||||
104 POINT(10 20)
|
||||
SELECT fid, AsText(g) FROM gis_line ORDER by fid;
|
||||
fid AsText(g)
|
||||
105 LINESTRING(0 0,0 10,10 0)
|
||||
106 LINESTRING(10 10,20 10,20 20,10 20,10 10)
|
||||
107 LINESTRING(10 10,40 10)
|
||||
SELECT fid, AsText(g) FROM gis_polygon ORDER by fid;
|
||||
fid AsText(g)
|
||||
108 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
|
||||
110 POLYGON((0 0,30 0,30 30,0 0))
|
||||
SELECT fid, AsText(g) FROM gis_multi_point ORDER by fid;
|
||||
fid AsText(g)
|
||||
111 MULTIPOINT(0 0,10 10,10 20,20 20)
|
||||
112 MULTIPOINT(1 1,11 11,11 21,21 21)
|
||||
113 MULTIPOINT(3 6,4 10)
|
||||
SELECT fid, AsText(g) FROM gis_multi_line ORDER by fid;
|
||||
fid AsText(g)
|
||||
114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
|
||||
115 MULTILINESTRING((10 48,10 21,10 0))
|
||||
116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
|
||||
SELECT fid, AsText(g) FROM gis_multi_polygon ORDER by fid;
|
||||
fid AsText(g)
|
||||
117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
119 MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
|
||||
SELECT fid, AsText(g) FROM gis_geometrycollection ORDER by fid;
|
||||
fid AsText(g)
|
||||
120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
|
||||
121 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
|
||||
SELECT fid, AsText(g) FROM gis_geometry ORDER by fid;
|
||||
fid AsText(g)
|
||||
101 POINT(10 10)
|
||||
102 POINT(20 10)
|
||||
103 POINT(20 20)
|
||||
104 POINT(10 20)
|
||||
105 LINESTRING(0 0,0 10,10 0)
|
||||
106 LINESTRING(10 10,20 10,20 20,10 20,10 10)
|
||||
107 LINESTRING(10 10,40 10)
|
||||
108 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
109 POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
|
||||
110 POLYGON((0 0,30 0,30 30,0 0))
|
||||
111 MULTIPOINT(0 0,10 10,10 20,20 20)
|
||||
112 MULTIPOINT(1 1,11 11,11 21,21 21)
|
||||
113 MULTIPOINT(3 6,4 10)
|
||||
114 MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
|
||||
115 MULTILINESTRING((10 48,10 21,10 0))
|
||||
116 MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
|
||||
117 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
118 MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
119 MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
|
||||
120 GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
|
||||
121 GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
|
||||
SELECT fid, Dimension(g) FROM gis_geometry ORDER by fid;
|
||||
fid Dimension(g)
|
||||
101 0
|
||||
102 0
|
||||
103 0
|
||||
104 0
|
||||
105 1
|
||||
106 1
|
||||
107 1
|
||||
108 2
|
||||
109 2
|
||||
110 2
|
||||
111 0
|
||||
112 0
|
||||
113 0
|
||||
114 1
|
||||
115 1
|
||||
116 1
|
||||
117 2
|
||||
118 2
|
||||
119 2
|
||||
120 1
|
||||
121 1
|
||||
SELECT fid, GeometryType(g) FROM gis_geometry ORDER by fid;
|
||||
fid GeometryType(g)
|
||||
101 POINT
|
||||
102 POINT
|
||||
103 POINT
|
||||
104 POINT
|
||||
105 LINESTRING
|
||||
106 LINESTRING
|
||||
107 LINESTRING
|
||||
108 POLYGON
|
||||
109 POLYGON
|
||||
110 POLYGON
|
||||
111 MULTIPOINT
|
||||
112 MULTIPOINT
|
||||
113 MULTIPOINT
|
||||
114 MULTILINESTRING
|
||||
115 MULTILINESTRING
|
||||
116 MULTILINESTRING
|
||||
117 MULTIPOLYGON
|
||||
118 MULTIPOLYGON
|
||||
119 MULTIPOLYGON
|
||||
120 GEOMETRYCOLLECTION
|
||||
121 GEOMETRYCOLLECTION
|
||||
SELECT fid, IsEmpty(g) FROM gis_geometry ORDER by fid;
|
||||
fid IsEmpty(g)
|
||||
101 0
|
||||
102 0
|
||||
103 0
|
||||
104 0
|
||||
105 0
|
||||
106 0
|
||||
107 0
|
||||
108 0
|
||||
109 0
|
||||
110 0
|
||||
111 0
|
||||
112 0
|
||||
113 0
|
||||
114 0
|
||||
115 0
|
||||
116 0
|
||||
117 0
|
||||
118 0
|
||||
119 0
|
||||
120 0
|
||||
121 0
|
||||
SELECT fid, AsText(Envelope(g)) FROM gis_geometry ORDER by fid;
|
||||
fid AsText(Envelope(g))
|
||||
101 POLYGON((10 10,10 10,10 10,10 10,10 10))
|
||||
102 POLYGON((20 10,20 10,20 10,20 10,20 10))
|
||||
103 POLYGON((20 20,20 20,20 20,20 20,20 20))
|
||||
104 POLYGON((10 20,10 20,10 20,10 20,10 20))
|
||||
105 POLYGON((0 0,10 0,10 10,0 10,0 0))
|
||||
106 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
107 POLYGON((10 10,40 10,40 10,10 10,10 10))
|
||||
108 POLYGON((10 10,20 10,20 20,10 20,10 10))
|
||||
109 POLYGON((0 0,50 0,50 50,0 50,0 0))
|
||||
110 POLYGON((0 0,30 0,30 30,0 30,0 0))
|
||||
111 POLYGON((0 0,20 0,20 20,0 20,0 0))
|
||||
112 POLYGON((1 1,21 1,21 21,1 21,1 1))
|
||||
113 POLYGON((3 6,4 6,4 10,3 10,3 6))
|
||||
114 POLYGON((10 0,16 0,16 48,10 48,10 0))
|
||||
115 POLYGON((10 0,10 0,10 48,10 48,10 0))
|
||||
116 POLYGON((1 2,21 2,21 8,1 8,1 2))
|
||||
117 POLYGON((28 0,84 0,84 42,28 42,28 0))
|
||||
118 POLYGON((28 0,84 0,84 42,28 42,28 0))
|
||||
119 POLYGON((0 0,3 0,3 3,0 3,0 0))
|
||||
120 POLYGON((0 0,10 0,10 10,0 10,0 0))
|
||||
121 POLYGON((3 6,44 6,44 9,3 9,3 6))
|
||||
explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_geometry ALL NULL NULL NULL NULL 21
|
||||
Warnings:
|
||||
Note 1003 select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
|
||||
SELECT fid, X(g) FROM gis_point ORDER by fid;
|
||||
fid X(g)
|
||||
101 10
|
||||
102 20
|
||||
103 20
|
||||
104 10
|
||||
SELECT fid, Y(g) FROM gis_point ORDER by fid;
|
||||
fid Y(g)
|
||||
101 10
|
||||
102 10
|
||||
103 20
|
||||
104 20
|
||||
explain extended select X(g),Y(g) FROM gis_point;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_point ALL NULL NULL NULL NULL 4
|
||||
Warnings:
|
||||
Note 1003 select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
|
||||
SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
|
||||
fid AsText(StartPoint(g))
|
||||
105 POINT(0 0)
|
||||
106 POINT(10 10)
|
||||
107 POINT(10 10)
|
||||
SELECT fid, AsText(EndPoint(g)) FROM gis_line ORDER by fid;
|
||||
fid AsText(EndPoint(g))
|
||||
105 POINT(10 0)
|
||||
106 POINT(10 10)
|
||||
107 POINT(40 10)
|
||||
SELECT fid, GLength(g) FROM gis_line ORDER by fid;
|
||||
fid GLength(g)
|
||||
105 24.142135623731
|
||||
106 40
|
||||
107 30
|
||||
SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
|
||||
fid NumPoints(g)
|
||||
105 3
|
||||
106 5
|
||||
107 2
|
||||
SELECT fid, AsText(PointN(g, 2)) FROM gis_line ORDER by fid;
|
||||
fid AsText(PointN(g, 2))
|
||||
105 POINT(0 10)
|
||||
106 POINT(20 10)
|
||||
107 POINT(40 10)
|
||||
SELECT fid, IsClosed(g) FROM gis_line ORDER by fid;
|
||||
fid IsClosed(g)
|
||||
105 0
|
||||
106 1
|
||||
107 0
|
||||
explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_line ALL NULL NULL NULL NULL 3
|
||||
Warnings:
|
||||
Note 1003 select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
|
||||
SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
|
||||
fid AsText(Centroid(g))
|
||||
108 POINT(15 15)
|
||||
109 POINT(25.416666666667 25.416666666667)
|
||||
110 POINT(20 10)
|
||||
SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
|
||||
fid Area(g)
|
||||
108 100
|
||||
109 2400
|
||||
110 450
|
||||
SELECT fid, AsText(ExteriorRing(g)) FROM gis_polygon ORDER by fid;
|
||||
fid AsText(ExteriorRing(g))
|
||||
108 LINESTRING(10 10,20 10,20 20,10 20,10 10)
|
||||
109 LINESTRING(0 0,50 0,50 50,0 50,0 0)
|
||||
110 LINESTRING(0 0,30 0,30 30,0 0)
|
||||
SELECT fid, NumInteriorRings(g) FROM gis_polygon ORDER by fid;
|
||||
fid NumInteriorRings(g)
|
||||
108 0
|
||||
109 1
|
||||
110 0
|
||||
SELECT fid, AsText(InteriorRingN(g, 1)) FROM gis_polygon ORDER by fid;
|
||||
fid AsText(InteriorRingN(g, 1))
|
||||
108 NULL
|
||||
109 LINESTRING(10 10,20 10,20 20,10 20,10 10)
|
||||
110 NULL
|
||||
explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_polygon ALL NULL NULL NULL NULL 3
|
||||
Warnings:
|
||||
Note 1003 select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
|
||||
SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
|
||||
fid IsClosed(g)
|
||||
114 0
|
||||
115 0
|
||||
116 0
|
||||
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon ORDER by fid;
|
||||
fid AsText(Centroid(g))
|
||||
117 POINT(55.588527753042 17.426536064114)
|
||||
118 POINT(55.588527753042 17.426536064114)
|
||||
119 POINT(2 2)
|
||||
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
|
||||
fid Area(g)
|
||||
117 1684.5
|
||||
118 1684.5
|
||||
119 4.5
|
||||
SELECT fid, NumGeometries(g) from gis_multi_point ORDER by fid;
|
||||
fid NumGeometries(g)
|
||||
111 4
|
||||
112 4
|
||||
113 2
|
||||
SELECT fid, NumGeometries(g) from gis_multi_line ORDER by fid;
|
||||
fid NumGeometries(g)
|
||||
114 2
|
||||
115 1
|
||||
116 2
|
||||
SELECT fid, NumGeometries(g) from gis_multi_polygon ORDER by fid;
|
||||
fid NumGeometries(g)
|
||||
117 2
|
||||
118 2
|
||||
119 1
|
||||
SELECT fid, NumGeometries(g) from gis_geometrycollection ORDER by fid;
|
||||
fid NumGeometries(g)
|
||||
120 2
|
||||
121 2
|
||||
explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3
|
||||
Warnings:
|
||||
Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
|
||||
fid AsText(GeometryN(g, 2))
|
||||
111 POINT(10 10)
|
||||
112 POINT(11 11)
|
||||
113 POINT(4 10)
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_line ORDER by fid;
|
||||
fid AsText(GeometryN(g, 2))
|
||||
114 LINESTRING(16 0,16 23,16 48)
|
||||
115 NULL
|
||||
116 LINESTRING(2 5,5 8,21 7)
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_polygon ORDER by fid;
|
||||
fid AsText(GeometryN(g, 2))
|
||||
117 POLYGON((59 18,67 18,67 13,59 13,59 18))
|
||||
118 POLYGON((59 18,67 18,67 13,59 13,59 18))
|
||||
119 NULL
|
||||
SELECT fid, AsText(GeometryN(g, 2)) from gis_geometrycollection ORDER by fid;
|
||||
fid AsText(GeometryN(g, 2))
|
||||
120 LINESTRING(0 0,10 10)
|
||||
121 LINESTRING(3 6,7 9)
|
||||
SELECT fid, AsText(GeometryN(g, 1)) from gis_geometrycollection ORDER by fid;
|
||||
fid AsText(GeometryN(g, 1))
|
||||
120 POINT(0 0)
|
||||
121 POINT(44 6)
|
||||
explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE gis_multi_point ALL NULL NULL NULL NULL 3
|
||||
Warnings:
|
||||
Note 1003 select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
|
||||
SELECT g1.fid as first, g2.fid as second,
|
||||
Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
|
||||
Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
|
||||
Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
|
||||
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
|
||||
first second w c o e d t i r
|
||||
120 120 1 1 0 1 0 0 1 0
|
||||
120 121 0 0 0 0 0 0 1 0
|
||||
121 120 0 0 1 0 0 0 1 0
|
||||
121 121 1 1 0 1 0 0 1 0
|
||||
explain extended SELECT g1.fid as first, g2.fid as second,
|
||||
Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
|
||||
Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
|
||||
Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
|
||||
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE g1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
|
||||
1 SIMPLE g2 ALL NULL NULL NULL NULL 2
|
||||
Warnings:
|
||||
Note 1003 select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
|
||||
DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
|
||||
CREATE TABLE t1 (
|
||||
gp point,
|
||||
ln linestring,
|
||||
pg polygon,
|
||||
mp multipoint,
|
||||
mln multilinestring,
|
||||
mpg multipolygon,
|
||||
gc geometrycollection,
|
||||
gm geometry
|
||||
);
|
||||
SHOW FIELDS FROM t1;
|
||||
Field Type Null Key Default Extra
|
||||
gp point YES NULL
|
||||
ln linestring YES NULL
|
||||
pg polygon YES NULL
|
||||
mp multipoint YES NULL
|
||||
mln multilinestring YES NULL
|
||||
mpg multipolygon YES NULL
|
||||
gc geometrycollection YES NULL
|
||||
gm geometry YES NULL
|
||||
ALTER TABLE t1 ADD fid INT;
|
||||
SHOW FIELDS FROM t1;
|
||||
Field Type Null Key Default Extra
|
||||
gp point YES NULL
|
||||
ln linestring YES NULL
|
||||
pg polygon YES NULL
|
||||
mp multipoint YES NULL
|
||||
mln multilinestring YES NULL
|
||||
mpg multipolygon YES NULL
|
||||
gc geometrycollection YES NULL
|
||||
gm geometry YES NULL
|
||||
fid int(11) YES NULL
|
||||
DROP TABLE t1;
|
||||
create table t1 (a geometry not null);
|
||||
insert into t1 values (GeomFromText('Point(1 2)'));
|
||||
insert into t1 values ('Garbage');
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
insert IGNORE into t1 values ('Garbage');
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
drop table t1;
|
||||
create table t1 (fl geometry);
|
||||
insert into t1 values (1);
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
insert into t1 values (1.11);
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
insert into t1 values ("qwerty");
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
insert into t1 values (pointfromtext('point(1,1)'));
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
drop table t1;
|
@ -85,7 +85,7 @@ NULL
|
||||
select b from t1 having binary b like '';
|
||||
b
|
||||
drop table t1;
|
||||
create table t1 (a char(15) binary, b binary(15));
|
||||
create table t1 (a char(3) binary, b binary(3));
|
||||
insert into t1 values ('aaa','bbb'),('AAA','BBB');
|
||||
select upper(a),upper(b) from t1;
|
||||
upper(a) upper(b)
|
||||
|
@ -231,7 +231,7 @@ t1 CREATE TABLE `t1` (
|
||||
`c5` varchar(2) character set utf8 NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 (a binary(10), b char(10) character set koi8r);
|
||||
create table t1 (a binary(4), b char(4) character set koi8r);
|
||||
insert into t1 values (_binary'<27><><EFBFBD><EFBFBD>',_binary'<27><><EFBFBD><EFBFBD>');
|
||||
select a,b,cast(a as char character set cp1251),cast(b as binary) from t1;
|
||||
a b cast(a as char character set cp1251) cast(b as binary)
|
||||
@ -334,6 +334,9 @@ cast(repeat('1',20) as signed)
|
||||
-7335632962598440505
|
||||
Warnings:
|
||||
Warning 1105 Cast to signed converted positive out-of-range integer to it's negative complement
|
||||
select cast(1.0e+300 as signed int);
|
||||
cast(1.0e+300 as signed int)
|
||||
9223372036854775807
|
||||
select cast('1.2' as decimal(3,2));
|
||||
cast('1.2' as decimal(3,2))
|
||||
1.20
|
||||
|
2159
mysql-test/r/compress.result
Normal file
2159
mysql-test/r/compress.result
Normal file
File diff suppressed because it is too large
Load Diff
@ -20,6 +20,10 @@ time_zone_transition_type
|
||||
user
|
||||
show tables;
|
||||
Tables_in_test
|
||||
connect(localhost,root,z,test2,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'root'@'localhost' (using password: YES)
|
||||
connect(localhost,root,z,test,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'root'@'localhost' (using password: YES)
|
||||
grant ALL on *.* to test@localhost identified by "gambling";
|
||||
grant ALL on *.* to test@127.0.0.1 identified by "gambling";
|
||||
show tables;
|
||||
@ -43,6 +47,14 @@ time_zone_transition_type
|
||||
user
|
||||
show tables;
|
||||
Tables_in_test
|
||||
connect(localhost,test,,test2,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
|
||||
connect(localhost,test,,"",MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
|
||||
connect(localhost,test,zorro,test2,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
||||
connect(localhost,test,zorro,test,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
||||
update mysql.user set password=old_password("gambling2") where user=_binary"test";
|
||||
flush privileges;
|
||||
set password="";
|
||||
@ -70,6 +82,14 @@ time_zone_transition_type
|
||||
user
|
||||
show tables;
|
||||
Tables_in_test
|
||||
connect(localhost,test,,test2,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
|
||||
connect(localhost,test,,test,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: NO)
|
||||
connect(localhost,test,zorro,test2,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
||||
connect(localhost,test,zorro,test,MASTER_PORT,MYSQL_TEST_DIR/var/tmp/master.sock);
|
||||
ERROR 28000: Access denied for user 'test'@'localhost' (using password: YES)
|
||||
delete from mysql.user where user=_binary"test";
|
||||
flush privileges;
|
||||
create table t1 (id integer not null auto_increment primary key);
|
||||
|
@ -641,3 +641,16 @@ create table if not exists t1 (a int);
|
||||
Warnings:
|
||||
Note 1050 Table 't1' already exists
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
a varchar(112) charset utf8 collate utf8_bin not null,
|
||||
primary key (a)
|
||||
) select 'test' as a ;
|
||||
Warnings:
|
||||
Warning 1364 Field 'a' doesn't have a default value
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` varchar(112) character set utf8 collate utf8_bin NOT NULL,
|
||||
PRIMARY KEY (`a`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
|
@ -170,3 +170,22 @@ SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST (0xA741ADCCA66EB6DC IN BOOLEAN MODE
|
||||
HEX(a)
|
||||
A741ADCCA66EB6DC20A7DAADCCABDCA66E
|
||||
DROP TABLE t1;
|
||||
set names big5;
|
||||
create table t1 (a char character set big5);
|
||||
insert into t1 values (0xF9D6),(0xF9D7),(0xF9D8),(0xF9D9);
|
||||
insert into t1 values (0xF9DA),(0xF9DB),(0xF9DC);
|
||||
select hex(a) a, hex(@u:=convert(a using utf8)) b,
|
||||
hex(convert(@u using big5)) c from t1 order by a;
|
||||
a b c
|
||||
F9D6 E7A281 F9D6
|
||||
F9D7 E98AB9 F9D7
|
||||
F9D8 E8A38F F9D8
|
||||
F9D9 E5A2BB F9D9
|
||||
F9DA E68192 F9DA
|
||||
F9DB E7B2A7 F9DB
|
||||
F9DC E5ABBA F9DC
|
||||
alter table t1 convert to character set utf8;
|
||||
select hex(a) from t1 where a = _big5 0xF9DC;
|
||||
hex(a)
|
||||
E5ABBA
|
||||
drop table t1;
|
||||
|
@ -19,3 +19,26 @@ SELECT * FROM t1 WHERE popisek LIKE '2005-01-1';
|
||||
popisek
|
||||
2005-01-1
|
||||
drop table t1;
|
||||
set names cp1250;
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
str VARCHAR(32) CHARACTER SET cp1250 COLLATE cp1250_czech_cs NOT NULL default '',
|
||||
UNIQUE KEY (str)
|
||||
);
|
||||
INSERT INTO t1 VALUES (NULL, 'a');
|
||||
INSERT INTO t1 VALUES (NULL, 'aa');
|
||||
INSERT INTO t1 VALUES (NULL, 'aaa');
|
||||
INSERT INTO t1 VALUES (NULL, 'aaaa');
|
||||
INSERT INTO t1 VALUES (NULL, 'aaaaa');
|
||||
INSERT INTO t1 VALUES (NULL, 'aaaaaa');
|
||||
INSERT INTO t1 VALUES (NULL, 'aaaaaaa');
|
||||
select * from t1 where str like 'aa%';
|
||||
id str
|
||||
2 aa
|
||||
3 aaa
|
||||
4 aaaa
|
||||
5 aaaaa
|
||||
6 aaaaaa
|
||||
7 aaaaaaa
|
||||
drop table t1;
|
||||
|
@ -23,7 +23,7 @@ a
|
||||
b
|
||||
c
|
||||
drop table t1;
|
||||
create table t1 (a char(15) binary, b binary(15)) character set cp1251;
|
||||
create table t1 (a char(3) binary, b binary(3)) character set cp1251;
|
||||
insert into t1 values ('aaa','bbb'),('AAA','BBB');
|
||||
select upper(a),upper(b) from t1;
|
||||
upper(a) upper(b)
|
||||
|
@ -11349,3 +11349,20 @@ cp932_bin 6109
|
||||
cp932_bin 61
|
||||
cp932_bin 6120
|
||||
drop table t1;
|
||||
create table t1 (col1 varchar(1)) character set cp932;
|
||||
insert into t1 values ('a');
|
||||
insert into t1 values ('ab');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'col1' at row 1
|
||||
select * from t1;
|
||||
col1
|
||||
a
|
||||
a
|
||||
insert into t1 values ('abc');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'col1' at row 1
|
||||
select * from t1;
|
||||
col1
|
||||
a
|
||||
a
|
||||
a
|
||||
|
17
mysql-test/r/ctype_cp932_binlog.result
Normal file
17
mysql-test/r/ctype_cp932_binlog.result
Normal file
@ -0,0 +1,17 @@
|
||||
drop table if exists t1;
|
||||
set names cp932;
|
||||
set character_set_database = cp932;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1(f1 blob);
|
||||
PREPARE stmt1 FROM 'INSERT INTO t1 VALUES(?)';
|
||||
SET @var1= x'8300';
|
||||
EXECUTE stmt1 USING @var1;
|
||||
SHOW BINLOG EVENTS FROM 98;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 98 Query 1 185 use `test`; CREATE TABLE t1(f1 blob)
|
||||
master-bin.000001 185 User var 1 224 @`var1`=_binary 0x8300 COLLATE binary
|
||||
master-bin.000001 224 Query 1 317 use `test`; INSERT INTO t1 VALUES(@'var1')
|
||||
SELECT HEX(f1) FROM t1;
|
||||
HEX(f1)
|
||||
8300
|
||||
DROP table t1;
|
@ -296,6 +296,9 @@ FD C3BD FD 1
|
||||
FE C3BE FE 1
|
||||
FF C3BF FF 1
|
||||
DROP TABLE t1;
|
||||
SELECT 1 as <20>, 2 as <20>, 3 as <20>, 4 as <20>, 5 as <20>, 6 as <20>, 7 as <20>, 8 as <20>;
|
||||
<EFBFBD> <09> <09> <09> <09> <09> <09> <09>
|
||||
1 2 3 4 5 6 7 8
|
||||
select 'a' regexp 'A' collate latin1_general_ci;
|
||||
'a' regexp 'A' collate latin1_general_ci
|
||||
1
|
||||
|
@ -340,7 +340,7 @@ CYR CAPIT SOFT SIGN
|
||||
CYR CAPIT E <09> <09>
|
||||
CYR CAPIT YU <09> <09>
|
||||
CYR CAPIT YA <09> <09>
|
||||
ALTER TABLE t1 ADD bin_f CHAR(32) BYTE NOT NULL default '';
|
||||
ALTER TABLE t1 ADD bin_f CHAR(1) BYTE NOT NULL default '';
|
||||
UPDATE t1 SET bin_f=koi8_ru_f;
|
||||
SELECT COUNT(DISTINCT bin_f),COUNT(DISTINCT koi8_ru_f),COUNT(DISTINCT utf8_f) FROM t1;
|
||||
COUNT(DISTINCT bin_f) COUNT(DISTINCT koi8_ru_f) COUNT(DISTINCT utf8_f)
|
||||
@ -1331,146 +1331,146 @@ UPDATE t1 SET greek_f=CONVERT(ucs2_f USING greek) WHERE comment LIKE _latin2'GRE
|
||||
UPDATE t1 SET armscii8_f=CONVERT(ucs2_f USING armscii8) WHERE comment LIKE _latin2'ARM%';
|
||||
UPDATE t1 SET utf8_f=CONVERT(ucs2_f USING utf8) WHERE utf8_f=_utf8'';
|
||||
UPDATE t1 SET ucs2_f=CONVERT(utf8_f USING ucs2) WHERE ucs2_f=_ucs2'';
|
||||
SELECT * FROM t1;
|
||||
comment koi8_ru_f utf8_f bin_f ucs2_f armscii8_f greek_f
|
||||
LAT SMALL A a a a a
|
||||
LAT SMALL B b b b b
|
||||
LAT SMALL C c c c c
|
||||
LAT SMALL D d d d d
|
||||
LAT SMALL E e e e e
|
||||
LAT SMALL F f f f f
|
||||
LAT SMALL G g g g g
|
||||
LAT SMALL H h h h h
|
||||
LAT SMALL I i i i i
|
||||
LAT SMALL J j j j j
|
||||
LAT SMALL K k k k k
|
||||
LAT SMALL L l l l l
|
||||
LAT SMALL M m m m m
|
||||
LAT SMALL N n n n n
|
||||
LAT SMALL O o o o o
|
||||
LAT SMALL P p p p p
|
||||
LAT SMALL Q q q q q
|
||||
LAT SMALL R r r r r
|
||||
LAT SMALL S s s s s
|
||||
LAT SMALL T t t t t
|
||||
LAT SMALL U u u u u
|
||||
LAT SMALL V v v v v
|
||||
LAT SMALL W w w w w
|
||||
LAT SMALL X x x x x
|
||||
LAT SMALL Y y y y y
|
||||
LAT SMALL Z z z z z
|
||||
LAT CAPIT A A A A A
|
||||
LAT CAPIT B B B B B
|
||||
LAT CAPIT C C C C C
|
||||
LAT CAPIT D D D D D
|
||||
LAT CAPIT E E E E E
|
||||
LAT CAPIT F F F F F
|
||||
LAT CAPIT G G G G G
|
||||
LAT CAPIT H H H H H
|
||||
LAT CAPIT I I I I I
|
||||
LAT CAPIT J J J J J
|
||||
LAT CAPIT K K K K K
|
||||
LAT CAPIT L L L L L
|
||||
LAT CAPIT M M M M M
|
||||
LAT CAPIT N N N N N
|
||||
LAT CAPIT O O O O O
|
||||
LAT CAPIT P P P P P
|
||||
LAT CAPIT Q Q Q Q Q
|
||||
LAT CAPIT R R R R R
|
||||
LAT CAPIT S S S S S
|
||||
LAT CAPIT T T T T T
|
||||
LAT CAPIT U U U U U
|
||||
LAT CAPIT V V V V V
|
||||
LAT CAPIT W W W W W
|
||||
LAT CAPIT X X X X X
|
||||
LAT CAPIT Y Y Y Y Y
|
||||
LAT CAPIT Z Z Z Z Z
|
||||
CYR SMALL A а а <EFBFBD> а
|
||||
CYR SMALL BE б б <EFBFBD> б
|
||||
CYR SMALL VE в в <EFBFBD> в
|
||||
CYR SMALL GE г г <EFBFBD> г
|
||||
CYR SMALL DE д д <EFBFBD> д
|
||||
CYR SMALL IE е е <EFBFBD> е
|
||||
CYR SMALL IO ё ё <EFBFBD> ё
|
||||
CYR SMALL ZHE ж ж <EFBFBD> ж
|
||||
CYR SMALL ZE з з <EFBFBD> з
|
||||
CYR SMALL I и и <EFBFBD> и
|
||||
CYR SMALL KA к к <EFBFBD> к
|
||||
CYR SMALL EL л л <EFBFBD> л
|
||||
CYR SMALL EM м м <EFBFBD> м
|
||||
CYR SMALL EN н н <EFBFBD> н
|
||||
CYR SMALL O о о <EFBFBD> о
|
||||
CYR SMALL PE п п <EFBFBD> п
|
||||
CYR SMALL ER р р <EFBFBD> р
|
||||
CYR SMALL ES с с <EFBFBD> с
|
||||
CYR SMALL TE т т <EFBFBD> т
|
||||
CYR SMALL U у у <EFBFBD> у
|
||||
CYR SMALL EF ф ф <EFBFBD> ф
|
||||
CYR SMALL HA х х <EFBFBD> х
|
||||
CYR SMALL TSE ц ц <EFBFBD> ц
|
||||
CYR SMALL CHE ч ч <EFBFBD> ч
|
||||
CYR SMALL SHA ш ш <EFBFBD> ш
|
||||
CYR SMALL SCHA щ щ <EFBFBD> щ
|
||||
CYR SMALL HARD SIGN ъ ъ <EFBFBD> ъ
|
||||
CYR SMALL YERU ы ы <EFBFBD> ы
|
||||
CYR SMALL SOFT SIGN ь ь <EFBFBD> ь
|
||||
CYR SMALL E э э <EFBFBD> э
|
||||
CYR SMALL YU ю ю <EFBFBD> ю
|
||||
CYR SMALL YA я я <EFBFBD> я
|
||||
CYR CAPIT A А А <EFBFBD> А
|
||||
CYR CAPIT BE Б Б <EFBFBD> Б
|
||||
CYR CAPIT VE В В <EFBFBD> В
|
||||
CYR CAPIT GE Г Г <EFBFBD> Г
|
||||
CYR CAPIT DE Д Д <EFBFBD> Д
|
||||
CYR CAPIT IE Е Е <EFBFBD> Е
|
||||
CYR CAPIT IO Ё Ё <EFBFBD> Ё
|
||||
CYR CAPIT ZHE Ж Ж <EFBFBD> Ж
|
||||
CYR CAPIT ZE З З <EFBFBD> З
|
||||
CYR CAPIT I И И <EFBFBD> И
|
||||
CYR CAPIT KA К К <EFBFBD> К
|
||||
CYR CAPIT EL Л Л <EFBFBD> Л
|
||||
CYR CAPIT EM М М <EFBFBD> М
|
||||
CYR CAPIT EN Н Н <EFBFBD> Н
|
||||
CYR CAPIT O О О <EFBFBD> О
|
||||
CYR CAPIT PE П П <EFBFBD> П
|
||||
CYR CAPIT ER Р Р <EFBFBD> Р
|
||||
CYR CAPIT ES С С <EFBFBD> С
|
||||
CYR CAPIT TE Т Т <EFBFBD> Т
|
||||
CYR CAPIT U У У <EFBFBD> У
|
||||
CYR CAPIT EF Ф Ф <EFBFBD> Ф
|
||||
CYR CAPIT HA Х Х <EFBFBD> Х
|
||||
CYR CAPIT TSE Ц Ц <EFBFBD> Ц
|
||||
CYR CAPIT CHE Ч Ч <EFBFBD> Ч
|
||||
CYR CAPIT SHA Ш Ш <EFBFBD> Ш
|
||||
CYR CAPIT SCHA Щ Щ <EFBFBD> Щ
|
||||
CYR CAPIT HARD SIGN Ъ Ъ <EFBFBD> Ъ
|
||||
CYR CAPIT YERU Ы Ы <EFBFBD> Ы
|
||||
CYR CAPIT SOFT SIGN Ь Ь <EFBFBD> Ь
|
||||
CYR CAPIT E Э Э <EFBFBD> Э
|
||||
CYR CAPIT YU Ю Ю <EFBFBD> Ю
|
||||
CYR CAPIT YA Я Я <EFBFBD> Я
|
||||
GREEK CAPIT ALPHA Α Α Α
|
||||
GREEK CAPIT BETA Β Β Β
|
||||
GREEK CAPIT GAMMA Γ Γ Γ
|
||||
GREEK CAPIT DELTA Δ Δ Δ
|
||||
GREEK CAPIT EPSILON Ε Ε Ε
|
||||
GREEK SMALL ALPHA α α α
|
||||
GREEK SMALL BETA β β β
|
||||
GREEK SMALL GAMMA γ γ γ
|
||||
GREEK SMALL DELTA δ δ δ
|
||||
GREEK SMALL EPSILON ε ε ε
|
||||
ARMENIAN CAPIT AYB Ա Ա Ա
|
||||
ARMENIAN CAPIT BEN Բ Բ Բ
|
||||
ARMENIAN CAPIT GIM Գ Գ Գ
|
||||
ARMENIAN CAPIT DA Դ Դ Դ
|
||||
ARMENIAN CAPIT ECH Ե Ե Ե
|
||||
ARMENIAN CAPIT ZA Զ Զ Զ
|
||||
ARMENIAN SMALL YAB ա ա ա
|
||||
ARMENIAN SMALL BEN բ բ բ
|
||||
ARMENIAN SMALL GIM գ գ գ
|
||||
ARMENIAN SMALL DA դ դ դ
|
||||
ARMENIAN SMALL ECH ե ե ե
|
||||
ARMENIAN SMALL ZA զ զ զ
|
||||
SELECT comment, koi8_ru_f, utf8_f, hex(bin_f), ucs2_f, armscii8_f, greek_f FROM t1;
|
||||
comment koi8_ru_f utf8_f hex(bin_f) ucs2_f armscii8_f greek_f
|
||||
LAT SMALL A a a 61 a
|
||||
LAT SMALL B b b 62 b
|
||||
LAT SMALL C c c 63 c
|
||||
LAT SMALL D d d 64 d
|
||||
LAT SMALL E e e 65 e
|
||||
LAT SMALL F f f 66 f
|
||||
LAT SMALL G g g 67 g
|
||||
LAT SMALL H h h 68 h
|
||||
LAT SMALL I i i 69 i
|
||||
LAT SMALL J j j 6A j
|
||||
LAT SMALL K k k 6B k
|
||||
LAT SMALL L l l 6C l
|
||||
LAT SMALL M m m 6D m
|
||||
LAT SMALL N n n 6E n
|
||||
LAT SMALL O o o 6F o
|
||||
LAT SMALL P p p 70 p
|
||||
LAT SMALL Q q q 71 q
|
||||
LAT SMALL R r r 72 r
|
||||
LAT SMALL S s s 73 s
|
||||
LAT SMALL T t t 74 t
|
||||
LAT SMALL U u u 75 u
|
||||
LAT SMALL V v v 76 v
|
||||
LAT SMALL W w w 77 w
|
||||
LAT SMALL X x x 78 x
|
||||
LAT SMALL Y y y 79 y
|
||||
LAT SMALL Z z z 7A z
|
||||
LAT CAPIT A A A 41 A
|
||||
LAT CAPIT B B B 42 B
|
||||
LAT CAPIT C C C 43 C
|
||||
LAT CAPIT D D D 44 D
|
||||
LAT CAPIT E E E 45 E
|
||||
LAT CAPIT F F F 46 F
|
||||
LAT CAPIT G G G 47 G
|
||||
LAT CAPIT H H H 48 H
|
||||
LAT CAPIT I I I 49 I
|
||||
LAT CAPIT J J J 4A J
|
||||
LAT CAPIT K K K 4B K
|
||||
LAT CAPIT L L L 4C L
|
||||
LAT CAPIT M M M 4D M
|
||||
LAT CAPIT N N N 4E N
|
||||
LAT CAPIT O O O 4F O
|
||||
LAT CAPIT P P P 50 P
|
||||
LAT CAPIT Q Q Q 51 Q
|
||||
LAT CAPIT R R R 52 R
|
||||
LAT CAPIT S S S 53 S
|
||||
LAT CAPIT T T T 54 T
|
||||
LAT CAPIT U U U 55 U
|
||||
LAT CAPIT V V V 56 V
|
||||
LAT CAPIT W W W 57 W
|
||||
LAT CAPIT X X X 58 X
|
||||
LAT CAPIT Y Y Y 59 Y
|
||||
LAT CAPIT Z Z Z 5A Z
|
||||
CYR SMALL A а а C1 а
|
||||
CYR SMALL BE б б C2 б
|
||||
CYR SMALL VE в в D7 в
|
||||
CYR SMALL GE г г C7 г
|
||||
CYR SMALL DE д д C4 д
|
||||
CYR SMALL IE е е C5 е
|
||||
CYR SMALL IO ё ё A3 ё
|
||||
CYR SMALL ZHE ж ж D6 ж
|
||||
CYR SMALL ZE з з DA з
|
||||
CYR SMALL I и и C9 и
|
||||
CYR SMALL KA к к CB к
|
||||
CYR SMALL EL л л CC л
|
||||
CYR SMALL EM м м CD м
|
||||
CYR SMALL EN н н CE н
|
||||
CYR SMALL O о о CF о
|
||||
CYR SMALL PE п п D0 п
|
||||
CYR SMALL ER р р D2 р
|
||||
CYR SMALL ES с с D3 с
|
||||
CYR SMALL TE т т D4 т
|
||||
CYR SMALL U у у D5 у
|
||||
CYR SMALL EF ф ф C6 ф
|
||||
CYR SMALL HA х х C8 х
|
||||
CYR SMALL TSE ц ц C3 ц
|
||||
CYR SMALL CHE ч ч DE ч
|
||||
CYR SMALL SHA ш ш DB ш
|
||||
CYR SMALL SCHA щ щ DD щ
|
||||
CYR SMALL HARD SIGN ъ ъ DF ъ
|
||||
CYR SMALL YERU ы ы D9 ы
|
||||
CYR SMALL SOFT SIGN ь ь D8 ь
|
||||
CYR SMALL E э э DC э
|
||||
CYR SMALL YU ю ю C0 ю
|
||||
CYR SMALL YA я я D1 я
|
||||
CYR CAPIT A А А E1 А
|
||||
CYR CAPIT BE Б Б E2 Б
|
||||
CYR CAPIT VE В В F7 В
|
||||
CYR CAPIT GE Г Г E7 Г
|
||||
CYR CAPIT DE Д Д E4 Д
|
||||
CYR CAPIT IE Е Е E5 Е
|
||||
CYR CAPIT IO Ё Ё B3 Ё
|
||||
CYR CAPIT ZHE Ж Ж F6 Ж
|
||||
CYR CAPIT ZE З З FA З
|
||||
CYR CAPIT I И И E9 И
|
||||
CYR CAPIT KA К К EB К
|
||||
CYR CAPIT EL Л Л EC Л
|
||||
CYR CAPIT EM М М ED М
|
||||
CYR CAPIT EN Н Н EE Н
|
||||
CYR CAPIT O О О EF О
|
||||
CYR CAPIT PE П П F0 П
|
||||
CYR CAPIT ER Р Р F2 Р
|
||||
CYR CAPIT ES С С F3 С
|
||||
CYR CAPIT TE Т Т F4 Т
|
||||
CYR CAPIT U У У F5 У
|
||||
CYR CAPIT EF Ф Ф E6 Ф
|
||||
CYR CAPIT HA Х Х E8 Х
|
||||
CYR CAPIT TSE Ц Ц E3 Ц
|
||||
CYR CAPIT CHE Ч Ч FE Ч
|
||||
CYR CAPIT SHA Ш Ш FB Ш
|
||||
CYR CAPIT SCHA Щ Щ FD Щ
|
||||
CYR CAPIT HARD SIGN Ъ Ъ FF Ъ
|
||||
CYR CAPIT YERU Ы Ы F9 Ы
|
||||
CYR CAPIT SOFT SIGN Ь Ь F8 Ь
|
||||
CYR CAPIT E Э Э FC Э
|
||||
CYR CAPIT YU Ю Ю E0 Ю
|
||||
CYR CAPIT YA Я Я F1 Я
|
||||
GREEK CAPIT ALPHA Α 00 Α Α
|
||||
GREEK CAPIT BETA Β 00 Β Β
|
||||
GREEK CAPIT GAMMA Γ 00 Γ Γ
|
||||
GREEK CAPIT DELTA Δ 00 Δ Δ
|
||||
GREEK CAPIT EPSILON Ε 00 Ε Ε
|
||||
GREEK SMALL ALPHA α 00 α α
|
||||
GREEK SMALL BETA β 00 β β
|
||||
GREEK SMALL GAMMA γ 00 γ γ
|
||||
GREEK SMALL DELTA δ 00 δ δ
|
||||
GREEK SMALL EPSILON ε 00 ε ε
|
||||
ARMENIAN CAPIT AYB Ա 00 Ա Ա
|
||||
ARMENIAN CAPIT BEN Բ 00 Բ Բ
|
||||
ARMENIAN CAPIT GIM Գ 00 Գ Գ
|
||||
ARMENIAN CAPIT DA Դ 00 Դ Դ
|
||||
ARMENIAN CAPIT ECH Ե 00 Ե Ե
|
||||
ARMENIAN CAPIT ZA Զ 00 Զ Զ
|
||||
ARMENIAN SMALL YAB ա 00 ա ա
|
||||
ARMENIAN SMALL BEN բ 00 բ բ
|
||||
ARMENIAN SMALL GIM գ 00 գ գ
|
||||
ARMENIAN SMALL DA դ 00 դ դ
|
||||
ARMENIAN SMALL ECH ե 00 ե ե
|
||||
ARMENIAN SMALL ZA զ 00 զ զ
|
||||
SET CHARACTER SET 'binary';
|
||||
SELECT * FROM t1;
|
||||
comment koi8_ru_f utf8_f bin_f ucs2_f armscii8_f greek_f
|
||||
@ -1590,28 +1590,28 @@ CYR CAPIT SOFT SIGN
|
||||
CYR CAPIT E <09> Э <09> -
|
||||
CYR CAPIT YU <09> Ю <09> .
|
||||
CYR CAPIT YA <09> Я <09> /
|
||||
GREEK CAPIT ALPHA Α <03> <09>
|
||||
GREEK CAPIT BETA Β <03> <09>
|
||||
GREEK CAPIT GAMMA Γ <03> <09>
|
||||
GREEK CAPIT DELTA Δ <03> <09>
|
||||
GREEK CAPIT EPSILON Ε <03> <09>
|
||||
GREEK SMALL ALPHA α <03> <09>
|
||||
GREEK SMALL BETA β <03> <09>
|
||||
GREEK SMALL GAMMA γ <03> <09>
|
||||
GREEK SMALL DELTA δ <03> <09>
|
||||
GREEK SMALL EPSILON ε <03> <09>
|
||||
ARMENIAN CAPIT AYB Ա 1 <09>
|
||||
ARMENIAN CAPIT BEN Բ 2 <09>
|
||||
ARMENIAN CAPIT GIM Գ 3 <09>
|
||||
ARMENIAN CAPIT DA Դ 4 <09>
|
||||
ARMENIAN CAPIT ECH Ե 5 <09>
|
||||
ARMENIAN CAPIT ZA Զ 6 <09>
|
||||
ARMENIAN SMALL YAB ա a <09>
|
||||
ARMENIAN SMALL BEN բ b <09>
|
||||
ARMENIAN SMALL GIM գ c <09>
|
||||
ARMENIAN SMALL DA դ d <09>
|
||||
ARMENIAN SMALL ECH ե e <09>
|
||||
ARMENIAN SMALL ZA զ f <09>
|
||||
GREEK CAPIT ALPHA Α |