mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	Merge bk-internal:/home/bk/mysql-5.0
into serg.mylan:/usr/home/serg/Abk/mysql-5.0 ndb/src/ndbapi/NdbDictionaryImpl.cpp: Auto merged ndb/test/ndbapi/testBlobs.cpp: Auto merged sql/sql_select.cc: Auto merged
This commit is contained in:
		@@ -164,7 +164,12 @@ private:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// openSSL bignum
 | 
					// openSSL bignum
 | 
				
			||||||
struct BIGNUM {
 | 
					struct BIGNUM {
 | 
				
			||||||
    Integer int_;
 | 
					    /*
 | 
				
			||||||
 | 
					      gcc 2.96 fix: because of two Integer classes (yaSSL::Integer and
 | 
				
			||||||
 | 
					      TaoCrypt::Integer), we need to explicitly state the namespace
 | 
				
			||||||
 | 
					      here to let gcc 2.96 deduce the correct type.
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					    yaSSL::Integer int_;
 | 
				
			||||||
    void assign(const byte* b, uint s) { int_.assign(b,s); }
 | 
					    void assign(const byte* b, uint s) { int_.assign(b,s); }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -445,6 +445,15 @@ const opaque master_label[MASTER_LABEL_SZ + 1] = "master secret";
 | 
				
			|||||||
const opaque key_label   [KEY_LABEL_SZ + 1]    = "key expansion";
 | 
					const opaque key_label   [KEY_LABEL_SZ + 1]    = "key expansion";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // naemspace
 | 
					} // namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  gcc 2.96 bails out because of two declarations of byte: yaSSL::byte and
 | 
				
			||||||
 | 
					  TaoCrypt::byte. TODO: define global types.hpp and move the declaration of
 | 
				
			||||||
 | 
					  'byte' there.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					using yaSSL::byte;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // yaSSL_TYPES_HPP
 | 
					#endif // yaSSL_TYPES_HPP
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,12 @@
 | 
				
			|||||||
# the $variables is extreme sensitive. 
 | 
					# the $variables is extreme sensitive. 
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###############################################################
 | 
				
			||||||
 | 
					# Debug options : To debug this test script
 | 
				
			||||||
 | 
					###############################################################
 | 
				
			||||||
 | 
					let $showbinlog= 0;
 | 
				
			||||||
 | 
					let $manipulate= 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
######## The typical test sequence
 | 
					######## The typical test sequence
 | 
				
			||||||
# 1. INSERT without commit
 | 
					# 1. INSERT without commit
 | 
				
			||||||
#    check table content of master and slave
 | 
					#    check table content of master and slave
 | 
				
			||||||
@@ -52,9 +58,12 @@ let $MAX= `SELECT MAX(f1) FROM t1` ;
 | 
				
			|||||||
eval INSERT INTO t1 SET f1= $MAX + 1;
 | 
					eval INSERT INTO t1 SET f1= $MAX + 1;
 | 
				
			||||||
# results before DDL(to be tested)
 | 
					# results before DDL(to be tested)
 | 
				
			||||||
SELECT MAX(f1) FROM t1;
 | 
					SELECT MAX(f1) FROM t1;
 | 
				
			||||||
 | 
					if ($show_binlog)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
--replace_result $VERSION VERSION
 | 
					--replace_result $VERSION VERSION
 | 
				
			||||||
--replace_column 2 # 5 #
 | 
					--replace_column 2 # 5 #
 | 
				
			||||||
eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
 | 
					eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
sync_slave_with_master;
 | 
					sync_slave_with_master;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
connection slave;
 | 
					connection slave;
 | 
				
			||||||
@@ -63,9 +72,12 @@ SELECT '-------- switch to slave --------' as "";
 | 
				
			|||||||
--enable_query_log
 | 
					--enable_query_log
 | 
				
			||||||
# results before DDL(to be tested)
 | 
					# results before DDL(to be tested)
 | 
				
			||||||
SELECT MAX(f1) FROM t1;
 | 
					SELECT MAX(f1) FROM t1;
 | 
				
			||||||
 | 
					if ($show_binlog)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
--replace_result $VERSION VERSION
 | 
					--replace_result $VERSION VERSION
 | 
				
			||||||
--replace_column 2 # 5 #
 | 
					--replace_column 2 # 5 #
 | 
				
			||||||
eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 | 
					eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################
 | 
					###############################################################
 | 
				
			||||||
# command to be tested
 | 
					# command to be tested
 | 
				
			||||||
@@ -79,9 +91,12 @@ eval $my_stmt;
 | 
				
			|||||||
let $my_stmt= ERROR: YOU FORGOT TO FILL IN THE STATEMENT;
 | 
					let $my_stmt= ERROR: YOU FORGOT TO FILL IN THE STATEMENT;
 | 
				
			||||||
# results after DDL(to be tested)
 | 
					# results after DDL(to be tested)
 | 
				
			||||||
SELECT MAX(f1) FROM t1;
 | 
					SELECT MAX(f1) FROM t1;
 | 
				
			||||||
 | 
					if ($show_binlog)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
--replace_result $VERSION VERSION
 | 
					--replace_result $VERSION VERSION
 | 
				
			||||||
--replace_column 2 # 5 #
 | 
					--replace_column 2 # 5 #
 | 
				
			||||||
eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
 | 
					eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
sync_slave_with_master;
 | 
					sync_slave_with_master;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
connection slave;
 | 
					connection slave;
 | 
				
			||||||
@@ -90,9 +105,12 @@ SELECT '-------- switch to slave --------' as "";
 | 
				
			|||||||
--enable_query_log
 | 
					--enable_query_log
 | 
				
			||||||
# results after DDL(to be tested)
 | 
					# results after DDL(to be tested)
 | 
				
			||||||
SELECT MAX(f1) FROM t1;
 | 
					SELECT MAX(f1) FROM t1;
 | 
				
			||||||
 | 
					if ($show_binlog)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
--replace_result $VERSION VERSION
 | 
					--replace_result $VERSION VERSION
 | 
				
			||||||
--replace_column 2 # 5 #
 | 
					--replace_column 2 # 5 #
 | 
				
			||||||
eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 | 
					eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################
 | 
					###############################################################
 | 
				
			||||||
# ROLLBACK
 | 
					# ROLLBACK
 | 
				
			||||||
@@ -114,9 +132,12 @@ eval SELECT CONCAT(CONCAT('TEST-INFO: MASTER: The INSERT is ',
 | 
				
			|||||||
                ' (Failed)')) AS "" 
 | 
					                ' (Failed)')) AS "" 
 | 
				
			||||||
               FROM mysqltest1.t1;
 | 
					               FROM mysqltest1.t1;
 | 
				
			||||||
--enable_query_log
 | 
					--enable_query_log
 | 
				
			||||||
 | 
					if ($show_binlog)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
--replace_result $VERSION VERSION
 | 
					--replace_result $VERSION VERSION
 | 
				
			||||||
--replace_column 2 # 5 #
 | 
					--replace_column 2 # 5 #
 | 
				
			||||||
eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
 | 
					eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
sync_slave_with_master;
 | 
					sync_slave_with_master;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
connection slave;
 | 
					connection slave;
 | 
				
			||||||
@@ -133,16 +154,17 @@ eval SELECT CONCAT(CONCAT('TEST-INFO: SLAVE:  The INSERT is ',
 | 
				
			|||||||
                ' (Failed)')) AS "" 
 | 
					                ' (Failed)')) AS "" 
 | 
				
			||||||
               FROM mysqltest1.t1;
 | 
					               FROM mysqltest1.t1;
 | 
				
			||||||
--enable_query_log
 | 
					--enable_query_log
 | 
				
			||||||
 | 
					if ($show_binlog)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
--replace_result $VERSION VERSION
 | 
					--replace_result $VERSION VERSION
 | 
				
			||||||
--replace_column 2 # 5 #
 | 
					--replace_column 2 # 5 #
 | 
				
			||||||
eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 | 
					eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################
 | 
					###############################################################
 | 
				
			||||||
# Manipulate binlog
 | 
					# Manipulate binlog
 | 
				
			||||||
###############################################################
 | 
					###############################################################
 | 
				
			||||||
#let $manipulate= 0;
 | 
					if ($manipulate)
 | 
				
			||||||
let $manipulate= 1;
 | 
					 | 
				
			||||||
while ($manipulate)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#### Manipulate the binary logs,
 | 
					#### Manipulate the binary logs,
 | 
				
			||||||
# so that the output of SHOW BINLOG EVENTS IN <current log>
 | 
					# so that the output of SHOW BINLOG EVENTS IN <current log>
 | 
				
			||||||
@@ -171,7 +193,6 @@ flush logs;
 | 
				
			|||||||
# sleep 1;
 | 
					# sleep 1;
 | 
				
			||||||
# eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 | 
					# eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 | 
				
			||||||
inc $_log_num_n;
 | 
					inc $_log_num_n;
 | 
				
			||||||
let $manipulate= 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
connection master;
 | 
					connection master;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -171,8 +171,8 @@ sub collect_one_test_case($$$$$) {
 | 
				
			|||||||
  my $slave_sh=        "$testdir/$tname-slave.sh";
 | 
					  my $slave_sh=        "$testdir/$tname-slave.sh";
 | 
				
			||||||
  my $disabled=        "$testdir/$tname.disabled";
 | 
					  my $disabled=        "$testdir/$tname.disabled";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  $tinfo->{'master_opt'}= [];
 | 
					  $tinfo->{'master_opt'}= ["--default-time-zone=+3:00"];
 | 
				
			||||||
  $tinfo->{'slave_opt'}=  [];
 | 
					  $tinfo->{'slave_opt'}=  ["--default-time-zone=+3:00"];
 | 
				
			||||||
  $tinfo->{'slave_mi'}=   [];
 | 
					  $tinfo->{'slave_mi'}=   [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( -f $master_opt_file )
 | 
					  if ( -f $master_opt_file )
 | 
				
			||||||
@@ -180,9 +180,9 @@ sub collect_one_test_case($$$$$) {
 | 
				
			|||||||
    $tinfo->{'master_restart'}= 1;    # We think so for now
 | 
					    $tinfo->{'master_restart'}= 1;    # We think so for now
 | 
				
			||||||
    # This is a dirty hack from old mysql-test-run, we use the opt file
 | 
					    # This is a dirty hack from old mysql-test-run, we use the opt file
 | 
				
			||||||
    # to flag other things as well, it is not a opt list at all
 | 
					    # to flag other things as well, it is not a opt list at all
 | 
				
			||||||
    my $extra_master_opt= mtr_get_opts_from_file($master_opt_file);
 | 
					    $tinfo->{'master_opt'}= mtr_get_opts_from_file($master_opt_file);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    foreach my $opt (@$extra_master_opt)
 | 
					    foreach my $opt (@{$tinfo->{'master_opt'}})
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      my $value;
 | 
					      my $value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -191,7 +191,7 @@ sub collect_one_test_case($$$$$) {
 | 
				
			|||||||
      if ( defined $value )
 | 
					      if ( defined $value )
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        $tinfo->{'timezone'}= $value;
 | 
					        $tinfo->{'timezone'}= $value;
 | 
				
			||||||
        $extra_master_opt= [];
 | 
					        $tinfo->{'master_opt'}= [];
 | 
				
			||||||
        $tinfo->{'master_restart'}= 0;
 | 
					        $tinfo->{'master_restart'}= 0;
 | 
				
			||||||
        last;
 | 
					        last;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -206,13 +206,11 @@ sub collect_one_test_case($$$$$) {
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
          $tinfo->{'result_file'}.= $::opt_result_ext;
 | 
					          $tinfo->{'result_file'}.= $::opt_result_ext;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        $extra_master_opt= [];
 | 
					        $tinfo->{'master_opt'}= [];
 | 
				
			||||||
        $tinfo->{'master_restart'}= 0;
 | 
					        $tinfo->{'master_restart'}= 0;
 | 
				
			||||||
        last;
 | 
					        last;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    $tinfo->{'master_opt'}= $extra_master_opt;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if ( -f $slave_opt_file )
 | 
					  if ( -f $slave_opt_file )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -669,6 +669,8 @@ sub mtr_mysqladmin_shutdown () {
 | 
				
			|||||||
    last;                               # If we got here, we are done
 | 
					    last;                               # If we got here, we are done
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sleep(5) if $::glob_win32;            # FIXME next startup fails if no sleep
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return $res;
 | 
					  return $res;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -204,7 +204,7 @@ our $opt_bench= 0;
 | 
				
			|||||||
our $opt_small_bench= 0;
 | 
					our $opt_small_bench= 0;
 | 
				
			||||||
our $opt_big_test= 0;            # Send --big-test to mysqltest
 | 
					our $opt_big_test= 0;            # Send --big-test to mysqltest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
our $opt_extra_mysqld_opt;       # FIXME not handled
 | 
					our @opt_extra_mysqld_opt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
our $opt_compress;
 | 
					our $opt_compress;
 | 
				
			||||||
our $opt_current_test;
 | 
					our $opt_current_test;
 | 
				
			||||||
@@ -500,7 +500,7 @@ sub command_line_setup () {
 | 
				
			|||||||
             'record'                   => \$opt_record,
 | 
					             'record'                   => \$opt_record,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
             # ???
 | 
					             # ???
 | 
				
			||||||
             'mysqld=s'                 => \$opt_extra_mysqld_opt,
 | 
					             'mysqld=s'                 => \@opt_extra_mysqld_opt,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
             # Run test on running server
 | 
					             # Run test on running server
 | 
				
			||||||
             'extern'                   => \$opt_extern,
 | 
					             'extern'                   => \$opt_extern,
 | 
				
			||||||
@@ -953,13 +953,25 @@ sub environment_setup () {
 | 
				
			|||||||
  $ENV{'LC_COLLATE'}=         "C";
 | 
					  $ENV{'LC_COLLATE'}=         "C";
 | 
				
			||||||
  $ENV{'USE_RUNNING_SERVER'}= $glob_use_running_server;
 | 
					  $ENV{'USE_RUNNING_SERVER'}= $glob_use_running_server;
 | 
				
			||||||
  $ENV{'MYSQL_TEST_DIR'}=     $glob_mysql_test_dir;
 | 
					  $ENV{'MYSQL_TEST_DIR'}=     $glob_mysql_test_dir;
 | 
				
			||||||
 | 
					  $ENV{'MYSQL_TEST_WINDIR'}=  $glob_mysql_test_dir;
 | 
				
			||||||
  $ENV{'MASTER_MYSOCK'}=      $master->[0]->{'path_mysock'};
 | 
					  $ENV{'MASTER_MYSOCK'}=      $master->[0]->{'path_mysock'};
 | 
				
			||||||
 | 
					  $ENV{'MASTER_WINMYSOCK'}=   $master->[0]->{'path_mysock'};
 | 
				
			||||||
  $ENV{'MASTER_MYSOCK1'}=     $master->[1]->{'path_mysock'};
 | 
					  $ENV{'MASTER_MYSOCK1'}=     $master->[1]->{'path_mysock'};
 | 
				
			||||||
  $ENV{'MASTER_MYPORT'}=      $master->[0]->{'path_myport'};
 | 
					  $ENV{'MASTER_MYPORT'}=      $master->[0]->{'path_myport'};
 | 
				
			||||||
  $ENV{'MASTER_MYPORT1'}=     $master->[1]->{'path_myport'};
 | 
					  $ENV{'MASTER_MYPORT1'}=     $master->[1]->{'path_myport'};
 | 
				
			||||||
  $ENV{'SLAVE_MYPORT'}=       $slave->[0]->{'path_myport'};
 | 
					  $ENV{'SLAVE_MYPORT'}=       $slave->[0]->{'path_myport'};
 | 
				
			||||||
# $ENV{'MYSQL_TCP_PORT'}=     '@MYSQL_TCP_PORT@'; # FIXME
 | 
					# $ENV{'MYSQL_TCP_PORT'}=     '@MYSQL_TCP_PORT@'; # FIXME
 | 
				
			||||||
  $ENV{'MYSQL_TCP_PORT'}=     3306;
 | 
					  $ENV{'MYSQL_TCP_PORT'}=     3306;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( $glob_cygwin_perl )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    foreach my $key ('MYSQL_TEST_WINDIR','MASTER_MYSOCK')
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      $ENV{$key}= `cygpath -w $ENV{$key}`;
 | 
				
			||||||
 | 
					      $ENV{$key} =~ s,\\,\\\\,g;
 | 
				
			||||||
 | 
					      chomp($ENV{$key});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1850,7 +1862,7 @@ sub mysqld_arguments ($$$$$) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  foreach my $arg ( @$extra_opt )
 | 
					  foreach my $arg ( @opt_extra_mysqld_opt, @$extra_opt )
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    mtr_add_arg($args, "%s%s", $prefix, $arg);
 | 
					    mtr_add_arg($args, "%s%s", $prefix, $arg);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -170,7 +170,8 @@ cd ..
 | 
				
			|||||||
BASEDIR=`pwd`
 | 
					BASEDIR=`pwd`
 | 
				
			||||||
cd $CWD
 | 
					cd $CWD
 | 
				
			||||||
MYSQL_TEST_DIR=$BASEDIR/mysql-test
 | 
					MYSQL_TEST_DIR=$BASEDIR/mysql-test
 | 
				
			||||||
export MYSQL_TEST_DIR
 | 
					MYSQL_TEST_WINDIR=$MYSQL_TEST_DIR
 | 
				
			||||||
 | 
					export MYSQL_TEST_DIR MYSQL_TEST_WINDIR
 | 
				
			||||||
STD_DATA=$MYSQL_TEST_DIR/std_data
 | 
					STD_DATA=$MYSQL_TEST_DIR/std_data
 | 
				
			||||||
hostname=`hostname`		# Installed in the mysql privilege table
 | 
					hostname=`hostname`		# Installed in the mysql privilege table
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -722,9 +722,7 @@ WHERE hostname LIKE '%aol%'
 | 
				
			|||||||
    GROUP BY hostname;
 | 
					    GROUP BY hostname;
 | 
				
			||||||
hostname	no
 | 
					hostname	no
 | 
				
			||||||
cache-dtc-af05.proxy.aol.com	1
 | 
					cache-dtc-af05.proxy.aol.com	1
 | 
				
			||||||
drop table if exists t1, t2;
 | 
					DROP TABLE t1;
 | 
				
			||||||
Warnings:
 | 
					 | 
				
			||||||
Note	1051	Unknown table 't2'
 | 
					 | 
				
			||||||
create table t1 (c1 char(3), c2 char(3));
 | 
					create table t1 (c1 char(3), c2 char(3));
 | 
				
			||||||
create table t2 (c3 char(3), c4 char(3));
 | 
					create table t2 (c3 char(3), c4 char(3));
 | 
				
			||||||
insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2');
 | 
					insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2');
 | 
				
			||||||
@@ -746,3 +744,12 @@ aaa
 | 
				
			|||||||
show warnings;
 | 
					show warnings;
 | 
				
			||||||
Level	Code	Message
 | 
					Level	Code	Message
 | 
				
			||||||
drop table t1, t2;
 | 
					drop table t1, t2;
 | 
				
			||||||
 | 
					CREATE TABLE t1 (a  int, b int);
 | 
				
			||||||
 | 
					INSERT INTO t1 VALUES (1,2), (1,3);
 | 
				
			||||||
 | 
					SELECT a, b FROM t1 GROUP BY 'const';
 | 
				
			||||||
 | 
					a	b
 | 
				
			||||||
 | 
					1	2
 | 
				
			||||||
 | 
					SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
 | 
				
			||||||
 | 
					a	b
 | 
				
			||||||
 | 
					1	2
 | 
				
			||||||
 | 
					DROP TABLE t1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Initialise
 | 
					# Initialise
 | 
				
			||||||
--disable_warnings
 | 
					--disable_warnings
 | 
				
			||||||
drop table if exists t1,t2,t3;
 | 
					drop table if exists t1,t2,t3;
 | 
				
			||||||
@@ -524,7 +525,7 @@ select min(b) from t1;
 | 
				
			|||||||
drop table t1;
 | 
					drop table t1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Test for bug #11088: GROUP BY a BLOB colimn with COUNT(DISTINCT column1) 
 | 
					# Test for bug #11088: GROUP BY a BLOB column with COUNT(DISTINCT column1) 
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CREATE TABLE t1 (id int PRIMARY KEY, user_id int, hostname longtext);
 | 
					CREATE TABLE t1 (id int PRIMARY KEY, user_id int, hostname longtext);
 | 
				
			||||||
@@ -539,11 +540,12 @@ SELECT hostname, COUNT(DISTINCT user_id) as no FROM t1
 | 
				
			|||||||
  WHERE hostname LIKE '%aol%'
 | 
					  WHERE hostname LIKE '%aol%'
 | 
				
			||||||
    GROUP BY hostname;
 | 
					    GROUP BY hostname;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DROP TABLE t1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Bug#11211: Ambiguous column reference in GROUP BY.
 | 
					# Bug#11211: Ambiguous column reference in GROUP BY.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
drop table if exists t1, t2;
 | 
					 | 
				
			||||||
create table t1 (c1 char(3), c2 char(3));
 | 
					create table t1 (c1 char(3), c2 char(3));
 | 
				
			||||||
create table t2 (c3 char(3), c4 char(3));
 | 
					create table t2 (c3 char(3), c4 char(3));
 | 
				
			||||||
insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2');
 | 
					insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2');
 | 
				
			||||||
@@ -563,3 +565,14 @@ group by t1.c1;
 | 
				
			|||||||
show warnings;
 | 
					show warnings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
drop table t1, t2;
 | 
					drop table t1, t2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Test for bug #8614: GROUP BY 'const with DISTINCT  
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CREATE TABLE t1 (a  int, b int);
 | 
				
			||||||
 | 
					INSERT INTO t1 VALUES (1,2), (1,3);
 | 
				
			||||||
 | 
					SELECT a, b FROM t1 GROUP BY 'const';
 | 
				
			||||||
 | 
					SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DROP TABLE t1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -812,9 +812,14 @@ JOIN::optimize()
 | 
				
			|||||||
      DBUG_RETURN(1);
 | 
					      DBUG_RETURN(1);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  simple_group= 0;
 | 
					  simple_group= 0;
 | 
				
			||||||
  group_list= remove_const(this, group_list, conds,
 | 
					  {
 | 
				
			||||||
 | 
					    ORDER *old_group_list;
 | 
				
			||||||
 | 
					    group_list= remove_const(this, (old_group_list= group_list), conds,
 | 
				
			||||||
                             rollup.state == ROLLUP::STATE_NONE,
 | 
					                             rollup.state == ROLLUP::STATE_NONE,
 | 
				
			||||||
			     &simple_group);
 | 
								     &simple_group);
 | 
				
			||||||
 | 
					    if (old_group_list && !group_list)
 | 
				
			||||||
 | 
					      select_distinct= 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  if (!group_list && group)
 | 
					  if (!group_list && group)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    order=0;					// The output has only one row
 | 
					    order=0;					// The output has only one row
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user