mirror of
https://github.com/MariaDB/server.git
synced 2025-01-24 07:44:22 +01:00
Merge remote-tracking branch '10.4' into 10.5
This commit is contained in:
commit
ac5a534a4c
306 changed files with 10920 additions and 6615 deletions
.gitlab-ci.yml.gitmodules
client
mysql.ccmysql_plugin.cmysql_upgrade.cmysqladmin.ccmysqlbinlog.ccmysqlcheck.cmysqldump.cmysqlslap.cmysqltest.cc
extra/mariabackup
include
libmysqld
man
mysql-test
include
main
ctype_ucs.resultctype_ucs.testctype_upgrade.resultctype_upgrade.testderived_view.resultderived_view.testdistinct.resultdistinct.testexplain_non_select.resultfunc_group.resultfunc_group.testfunc_json.resultfunc_json.testfunc_str.resultfunc_str.testgrant5.resultgrant5.testgroup_by.resultgroup_by.testinsert_returning.resultkill-2.resultkill-2.testlocale.resultlocale.testmulti_update.resultmulti_update.testmyisam_explain_non_select_all.resultmysqlbinlog.testname_resolution_cache_debug.resultname_resolution_cache_debug.testold-mode.resultold-mode.testopt_trace.resultpartition.resultpartition.testps.resultrowid_filter.resultselect.resultselect_jcl6.resultselect_pkeycache.resultselectivity.resultshutdown.testsubselect.resultsubselect.testsubselect4.resultsubselect_no_exists_to_in.resultsubselect_no_mat.resultsubselect_no_opts.resultsubselect_no_scache.resultsubselect_no_semijoin.resultsystem_mysql_db_fix50030.resultsystem_mysql_db_fix50117.resultsystem_mysql_db_fix50568.resultsystem_mysql_db_fix50568.testtable_value_constr.resulttable_value_constr.testtype_time.resulttype_time.test
std_data/ctype_upgrade
suite
binlog
r
t
binlog_encryption
494
.gitlab-ci.yml
Normal file
494
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,494 @@
|
|||
---
|
||||
# This Gitlab-CI pipeline offers basic validation that a commit did not
|
||||
# introduce easily detectable regressions. Builds run primairly on a new Fedora,
|
||||
# which has all the latest upstream build dependencies and thus is the primary
|
||||
# testing target, as eventually everything in Fedora becomes the next CentOS and
|
||||
# Red Hat releases.
|
||||
#
|
||||
# In addition test building on CentOS 7 and 8 to ensure that the code base
|
||||
# remains reasonably backwards compatible.
|
||||
#
|
||||
# This is now intentionally simple, to keep it fast and accurate with minimal
|
||||
# false positive failures. If one wants to extend it, see debian/salsa-ci.yml
|
||||
# for inspiration on more integration tests to run.
|
||||
#
|
||||
# Also make sure the pipeline stays within the bounds of what CI workers on
|
||||
# Gitlab-CI are capable of executing, thus ensuring that any potential
|
||||
# contributor can at any point in time fork to their own Gitlab account and
|
||||
# start working towards meaningful contributions!
|
||||
#
|
||||
# NOTE TO MERGERS: Most of the contents in the Gitlab-CI configuration has been
|
||||
# tailored for a specific release or MariaDB. As a general rule, do not merge
|
||||
# changes in this file across MariaDB branches to avoid breaking the CI. Updates
|
||||
# the Gitlab-CI pipeline are most of the time better done manually per major
|
||||
# release branch.
|
||||
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
- Salsa-CI
|
||||
|
||||
default:
|
||||
# Base image for builds and tests unless otherwise defined
|
||||
image: fedora:latest
|
||||
# Extend build jobs to have longer timeout as the default GitLab
|
||||
# timeout (1h) is often not enough
|
||||
timeout: 3h
|
||||
|
||||
# Define common CMAKE_FLAGS for all builds. Skim down build by omitting all
|
||||
# submodules (a commit in this repo does not affect their builds anyway) and
|
||||
# many components that are otherwise slow to build.
|
||||
variables:
|
||||
CMAKE_FLAGS: "-DPLUGIN_COLUMNSTORE=NO -DPLUGIN_ROCKSDB=NO -DPLUGIN_S3=NO -DPLUGIN_MROONGA=NO -DPLUGIN_CONNECT=NO -DPLUGIN_MROONGA=NO -DPLUGIN_TOKUDB=NO -DPLUGIN_PERFSCHEMA=NO -DWITH_WSREP=OFF"
|
||||
# Major version dictates which branches share the same ccache. E.g. 10.6-abc
|
||||
# and 10.6-xyz will have the same cache.
|
||||
MARIADB_MAJOR_VERSION: "10.6"
|
||||
# NOTE! Currently ccache is only used on the Centos8 build. As each job has
|
||||
# sufficiently different environments they are unable to benefit from each
|
||||
# other's ccaches. As each build generates about 1 GB of ccache, having
|
||||
# multiple caches would quickly consume all free storage on Gitlab-CI and
|
||||
# grind all builds to a halt. Also the network overhead of download/upload
|
||||
# decreases the benefit of ccache in Gitlab-CI, and current cache:when and
|
||||
# cache:policy are not flexible enough to have a system where the cache is
|
||||
# uploaded only once a week and not on every build. Having ccache on at least
|
||||
# one build still helps ensure that ccache compatibility is at least tested
|
||||
# and if the Centos 8 build is always significantly faster than all other
|
||||
# builds (e.g. on self-hosted Gitlab instances) then users would at least be
|
||||
# able to discover it.
|
||||
#
|
||||
# Most steps don't need the source code, only artifacts
|
||||
GIT_STRATEGY: none
|
||||
# Hack to satisfy directory name length requirement by CPackRPM in CMake 3.x
|
||||
# https://cmake.org/cmake/help/v3.7/module/CPackRPM.html#variable:CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX
|
||||
GIT_CLONE_PATH: $CI_BUILDS_DIR/CPACK_BUILD_SOURCE_DIRS_LONG_NAME_REQUIREMENT
|
||||
|
||||
# Define once, use many times
|
||||
.rpm_listfiles: &rpm_listfiles
|
||||
- |
|
||||
echo "Generating rpmlist-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log ..."
|
||||
for package in *.rpm
|
||||
do
|
||||
echo "$package"
|
||||
rpm -qlpv "$package" | awk '{print $1 " " $3 "/" $4 " ." $9 " " $10 " " $11}' | sort -k 3
|
||||
echo "------------------------------------------------"
|
||||
done >> "../rpmlist-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log"
|
||||
# CPackRPM lists contents in build log, so no need to show the output of this,
|
||||
# just store it as a build artifact that can be downloaded and diffed against
|
||||
# other builds to detect which files where added/removed/moved
|
||||
|
||||
fedora:
|
||||
stage: build
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_SUBMODULE_STRATEGY: normal
|
||||
script:
|
||||
- yum install -y yum-utils rpm-build openssl-devel graphviz clang gnutls-devel
|
||||
# Accelerate builds with unsafe disk access, as we can afford to loose the entire build anyway
|
||||
- yum install -y https://github.com/stewartsmith/libeatmydata/releases/download/v129/libeatmydata-129-1.fc33.x86_64.rpm
|
||||
# This repository does not have any .spec files, so install dependencies based on Fedora spec file
|
||||
- yum-builddep -y mariadb-server
|
||||
- mkdir builddir; cd builddir
|
||||
- cmake -DRPM=$CI_JOB_NAME $CMAKE_FLAGS -DWITH_SSL=bundled .. 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- cmake --graphviz=../dependencies.dot .. && dot -Tpng -o ../dependencies.png ../dependencies.dot
|
||||
- eatmydata make package -j 2 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
# @TODO: Don't use -j without the limit of 2 on Gitlab.com as builds just
|
||||
# get stuck when running multi-proc and out of memory, see https://jira.mariadb.org/browse/MDEV-25968
|
||||
- make test
|
||||
# - make test-force # mysql-test-runner takes too long, run MTR in a separate job instead
|
||||
- *rpm_listfiles
|
||||
- mkdir ../rpm; mv *.rpm ../rpm
|
||||
artifacts:
|
||||
when: always # Must be able to see logs
|
||||
paths:
|
||||
- build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpmlist-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpm
|
||||
- builddir/_CPack_Packages/Linux/RPM/SPECS/
|
||||
- dependencies.dot
|
||||
- dependencies.png
|
||||
|
||||
fedora-ninja:
|
||||
stage: build
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_SUBMODULE_STRATEGY: normal
|
||||
script:
|
||||
- yum install -y yum-utils rpm-build openssl-devel graphviz ninja-build gnutls-devel
|
||||
# Accelerate builds with unsafe disk access, as we can afford to loose the entire build anyway
|
||||
- yum install -y https://github.com/stewartsmith/libeatmydata/releases/download/v129/libeatmydata-129-1.fc33.x86_64.rpm
|
||||
# This repository does not have any .spec files, so install dependencies based on Fedora spec file
|
||||
- yum-builddep -y mariadb-server
|
||||
- mkdir builddir; cd builddir
|
||||
- cmake -DRPM=generic $CMAKE_FLAGS -DWITH_SSL=bundled -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -G Ninja .. 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- ninja -t graph > ../dependencies.dot && dot -Tpng -o ../dependencies.png ../dependencies.dot
|
||||
- eatmydata ninja package -j 2 --verbose 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
# @TODO: Unlike other builds, the Ninja builds using Gitlab.com runners don't get stuck, but they do get
|
||||
# stuck on runners with more processors, see https://jira.mariadb.org/browse/MDEV-25968.
|
||||
# Thus, use the same limitation on Ninja builds as well to ensure it never gets stuck due to this bug.
|
||||
- ninja test
|
||||
- *rpm_listfiles
|
||||
- mkdir ../rpm; mv *.rpm ../rpm
|
||||
artifacts:
|
||||
when: always # Must be able to see logs
|
||||
paths:
|
||||
- build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpmlist-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpm
|
||||
- builddir/_CPack_Packages/Linux/RPM/SPECS/
|
||||
- dependencies.dot
|
||||
- dependencies.png
|
||||
|
||||
fedora-clang:
|
||||
stage: build
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_SUBMODULE_STRATEGY: normal
|
||||
script:
|
||||
- yum install -y yum-utils rpm-build openssl-devel graphviz clang gnutls-devel
|
||||
# Accelerate builds with unsafe disk access, as we can afford to loose the entire build anyway
|
||||
- yum install -y https://github.com/stewartsmith/libeatmydata/releases/download/v129/libeatmydata-129-1.fc33.x86_64.rpm
|
||||
# This repository does not have any .spec files, so install dependencies based on Fedora spec file
|
||||
- yum-builddep -y mariadb-server
|
||||
- mkdir builddir; cd builddir
|
||||
- export CXX=${CXX:-clang++}
|
||||
- export CC=${CC:-clang}
|
||||
- export CXX_FOR_BUILD=${CXX_FOR_BUILD:-clang++}
|
||||
- export CC_FOR_BUILD=${CC_FOR_BUILD:-clang}
|
||||
- export CFLAGS='-Wno-unused-command-line-argument'
|
||||
- export CXXFLAGS='-Wno-unused-command-line-argument'
|
||||
- cmake -DRPM=generic $CMAKE_FLAGS -DWITH_SSL=bundled .. 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- cmake --graphviz=../dependencies.dot .. && dot -Tpng -o ../dependencies.png ../dependencies.dot
|
||||
- eatmydata make package -j 2 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
# @TODO: Don't use -j without the limit of 2 on Gitlab.com as builds just
|
||||
# get stuck when running multi-proc and out of memory, see https://jira.mariadb.org/browse/MDEV-25968
|
||||
- make test
|
||||
# - make test-force # mysql-test-runner takes too long, run MTr in a separate job instead
|
||||
- *rpm_listfiles
|
||||
- mkdir ../rpm; mv *.rpm ../rpm
|
||||
artifacts:
|
||||
when: always # Must be able to see logs
|
||||
paths:
|
||||
- build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpmlist-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpm
|
||||
- builddir/_CPack_Packages/Linux/RPM/SPECS/
|
||||
- dependencies.dot
|
||||
- dependencies.png
|
||||
|
||||
fedora-sanitizer:
|
||||
stage: build
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_SUBMODULE_STRATEGY: normal
|
||||
script:
|
||||
- yum install -y yum-utils rpm-build openssl-devel clang gnutls-devel
|
||||
- yum install -y libasan libtsan libubsan
|
||||
# This repository does not have any .spec files, so install dependencies based on Fedora spec file
|
||||
- yum-builddep -y mariadb-server
|
||||
- mkdir builddir; cd builddir
|
||||
- export CXX=${CXX:-clang++}
|
||||
- export CC=${CC:-clang}
|
||||
- export CXX_FOR_BUILD=${CXX_FOR_BUILD:-clang++}
|
||||
- export CC_FOR_BUILD=${CC_FOR_BUILD:-clang}
|
||||
- export CFLAGS='-Wno-unused-command-line-argument'
|
||||
- export CXXFLAGS='-Wno-unused-command-line-argument'
|
||||
- cmake -DRPM=$CI_JOB_NAME $CMAKE_FLAGS -DWITH_SSL=bundled $SANITIZER .. 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
# @TODO: the build will fail consistently at 24% when trying to make using eatmydata
|
||||
- make package -j 2 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- *rpm_listfiles
|
||||
- mkdir ../rpm; mv *.rpm ../rpm
|
||||
artifacts:
|
||||
when: always # Must be able to see logs
|
||||
paths:
|
||||
- build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpmlist-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpm
|
||||
- builddir/_CPack_Packages/Linux/RPM/SPECS/
|
||||
parallel:
|
||||
matrix:
|
||||
- SANITIZER: [-DWITH_ASAN=YES, -DWITH_TSAN=YES, -DWITH_UBSAN=YES, -DWITH_MSAN=YES]
|
||||
|
||||
centos8:
|
||||
stage: build
|
||||
image: quay.io/centos/centos:stream8 # CentOS 8 is deprecated, use this Stream8 instead
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_SUBMODULE_STRATEGY: normal
|
||||
script:
|
||||
- yum install -y yum-utils rpm-build openssl-devel pcre2-devel
|
||||
- yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
|
||||
# dnf --enablerepo=powertools install Judy-devel #--> not found
|
||||
- dnf config-manager --set-enabled powertools
|
||||
# Error:
|
||||
# Problem: conflicting requests
|
||||
# - package Judy-devel-1.0.5-18.module_el8.3.0+757+d382997d.i686 is filtered out by modular filtering
|
||||
# - package Judy-devel-1.0.5-18.module_el8.3.0+757+d382997d.x86_64 is filtered out by modular filtering
|
||||
# Solution: install Judy-devel directly from downloaded rpm file:
|
||||
- yum install -y http://vault.centos.org/centos/8/PowerTools/x86_64/os/Packages/Judy-devel-1.0.5-18.module_el8.3.0+757+d382997d.x86_64.rpm
|
||||
# Use eatmydata to speed up build
|
||||
- yum install -y https://github.com/stewartsmith/libeatmydata/releases/download/v129/libeatmydata-129-1.fc33.x86_64.rpm
|
||||
- yum install -y ccache # From EPEL
|
||||
- source /etc/profile.d/ccache.sh
|
||||
- export CCACHE_DIR="$(pwd)/.ccache"; ccache --zero-stats
|
||||
# This repository does not have any .spec files, so install dependencies based on CentOS spec file
|
||||
- yum-builddep -y mariadb-server
|
||||
- mkdir builddir; cd builddir
|
||||
- cmake -DRPM=$CI_JOB_NAME $CMAKE_FLAGS -DWITH_SSL=system .. 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- eatmydata make package -j 2 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
# @TODO: Don't use -j without the limit of 2 on Gitlab.com as builds just
|
||||
# get stuck when running multi-proc and out of memory, see https://jira.mariadb.org/browse/MDEV-25968
|
||||
- make test
|
||||
# - make test-force # mysql-test-runner takes too long, run it MTR a separate job instead
|
||||
- *rpm_listfiles
|
||||
- mkdir ../rpm; mv *.rpm ../rpm
|
||||
- ccache -s
|
||||
artifacts:
|
||||
when: always # Must be able to see logs
|
||||
paths:
|
||||
- build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpmlist-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpm
|
||||
- builddir/_CPack_Packages/Linux/RPM/SPECS/
|
||||
cache:
|
||||
key: $MARIADB_MAJOR_VERSION
|
||||
paths:
|
||||
- .ccache
|
||||
|
||||
centos7:
|
||||
stage: build
|
||||
image: centos:7
|
||||
variables:
|
||||
GIT_STRATEGY: fetch
|
||||
GIT_SUBMODULE_STRATEGY: normal
|
||||
script:
|
||||
# This repository does not have any .spec files, so install dependencies based on Fedora spec file
|
||||
- yum-builddep -y mariadb-server
|
||||
# ..with a few extra ones, as CentOS 7 is very old and these are added in newer MariaDB releases
|
||||
- yum install -y yum-utils rpm-build gcc gcc-c++ bison libxml2-devel libevent-devel openssl-devel pcre2-devel
|
||||
- mkdir builddir; cd builddir
|
||||
- cmake -DRPM=$CI_JOB_NAME $CMAKE_FLAGS -DWITH_SSL=system .. 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- make package -j 2 2>&1 | tee -a ../build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
# @TODO: Don't use -j without the limit of 2 on Gitlab.com as builds just
|
||||
# get stuck when running multi-proc and out of memory, see https://jira.mariadb.org/browse/MDEV-25968
|
||||
- make test
|
||||
# - make test-force # mysql-test-runner takes too long, run it in a separate job instead
|
||||
- *rpm_listfiles
|
||||
- mkdir ../rpm; mv *.rpm ../rpm
|
||||
artifacts:
|
||||
when: always # Must be able to see logs
|
||||
paths:
|
||||
- build-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpmlist-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
- rpm
|
||||
- builddir/_CPack_Packages/Linux/RPM/SPECS/
|
||||
|
||||
.mysql-test-run: &mysql-test-run-def
|
||||
stage: test
|
||||
script:
|
||||
# Install packages so tests and the dependencies install
|
||||
# @TODO: RPM missing 'patch' and 'diff' as dependency, so installing it manually for now
|
||||
- yum install -y rpm/*.rpm patch diffutils
|
||||
# @TODO: Fix on packaging level for /usr/share/mariadb to work and errormsg.sys be found
|
||||
- rm -rf /usr/share/mariadb; ln -s /usr/share/mysql /usr/share/mariadb
|
||||
# mtr expects to be launched in-place and with write access to it's own directories
|
||||
- cd /usr/share/mysql-test
|
||||
# Skip failing tests
|
||||
- |
|
||||
echo "
|
||||
main.mysqldump : Field separator argument is not what is expected; check the manual when executing 'SELECT INTO OUTFILE'
|
||||
main.flush_logs_not_windows : query 'flush logs' succeeded - should have failed with error ER_CANT_CREATE_FILE (1004)
|
||||
main.mysql_upgrade_noengine : upgrade output order does not match the expected
|
||||
" > skiplist
|
||||
- ./mtr --suite=main --force --parallel=auto --xml-report=$CI_PROJECT_DIR/junit.xml --skip-test-list=skiplist $RESTART_POLICY
|
||||
|
||||
mysql-test-run:
|
||||
stage: test
|
||||
dependencies:
|
||||
- fedora
|
||||
needs:
|
||||
- fedora
|
||||
<<: *mysql-test-run-def
|
||||
artifacts:
|
||||
when: always # Also show results when tests fail
|
||||
reports:
|
||||
junit:
|
||||
- junit.xml
|
||||
|
||||
# Duplicate of the above jobs, except we use sanitizer build jobs as a dependency. This is so we can keep
|
||||
# sanitizer errors separate from functional test failures. Currently, there is no way to run the same
|
||||
# job for different dependencies.
|
||||
#
|
||||
# Additionally, for each sanitizer MTR job, we enable --force-restart so that
|
||||
# sanitizer errors can be traced to individual tests. The difference in test
|
||||
# suite runtime as a result of this flag is negligable (~30s for the entire test suite).
|
||||
# (see https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_MYSQL_TEST_RUN_PL.html)
|
||||
mysql-test-run-asan:
|
||||
stage: test
|
||||
variables:
|
||||
RESTART_POLICY: "--force-restart"
|
||||
dependencies:
|
||||
- "fedora-sanitizer: [-DWITH_ASAN=YES]"
|
||||
needs:
|
||||
- "fedora-sanitizer: [-DWITH_ASAN=YES]"
|
||||
<<: *mysql-test-run-def
|
||||
artifacts:
|
||||
when: always # Also show results when tests fail
|
||||
reports:
|
||||
junit:
|
||||
- junit.xml
|
||||
|
||||
mysql-test-run-tsan:
|
||||
stage: test
|
||||
variables:
|
||||
RESTART_POLICY: "--force-restart"
|
||||
dependencies:
|
||||
- "fedora-sanitizer: [-DWITH_TSAN=YES]"
|
||||
needs:
|
||||
- "fedora-sanitizer: [-DWITH_TSAN=YES]"
|
||||
<<: *mysql-test-run-def
|
||||
allow_failure: true
|
||||
artifacts:
|
||||
when: always # Also show results when tests fail
|
||||
reports:
|
||||
junit:
|
||||
- junit.xml
|
||||
|
||||
mysql-test-run-ubsan:
|
||||
stage: test
|
||||
variables:
|
||||
RESTART_POLICY: "--force-restart"
|
||||
dependencies:
|
||||
- "fedora-sanitizer: [-DWITH_UBSAN=YES]"
|
||||
needs:
|
||||
- "fedora-sanitizer: [-DWITH_UBSAN=YES]"
|
||||
<<: *mysql-test-run-def
|
||||
allow_failure: true
|
||||
artifacts:
|
||||
when: always # Also show results when tests fail
|
||||
reports:
|
||||
junit:
|
||||
- junit.xml
|
||||
|
||||
mysql-test-run-msan:
|
||||
stage: test
|
||||
variables:
|
||||
RESTART_POLICY: "--force-restart"
|
||||
dependencies:
|
||||
- "fedora-sanitizer: [-DWITH_MSAN=YES]"
|
||||
needs:
|
||||
- "fedora-sanitizer: [-DWITH_MSAN=YES]"
|
||||
<<: *mysql-test-run-def
|
||||
allow_failure: true
|
||||
artifacts:
|
||||
when: always # Also show results when tests fail
|
||||
reports:
|
||||
junit:
|
||||
- junit.xml
|
||||
|
||||
rpmlint:
|
||||
stage: test
|
||||
dependencies:
|
||||
- fedora
|
||||
needs:
|
||||
- fedora
|
||||
script:
|
||||
- yum install -y rpmlint
|
||||
- rm -f rpm/*debuginfo* # Not relevant in this test
|
||||
# Limit output to 1000 lines as Gitlab-CI max output is 4194304 bytes
|
||||
# Save everything in a log file so it can be viewed in full via artifacts
|
||||
- rpmlint --info rpm/*.rpm | tee -a rpmlint-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
artifacts:
|
||||
when: always # Also show results when tests fail
|
||||
paths:
|
||||
- rpmlint-$CI_JOB_NAME-$CI_COMMIT_REF_SLUG.log
|
||||
allow_failure: true
|
||||
# @TODO: The package is not rpmlint clean, must allow failure for now
|
||||
|
||||
fedora install:
|
||||
stage: test
|
||||
dependencies:
|
||||
- fedora
|
||||
needs:
|
||||
- fedora
|
||||
script:
|
||||
- rm -f rpm/*debuginfo* # Not relevant in this test
|
||||
# Nothing provides galera-4 on Fedora, so this step fails if built with wsrep
|
||||
- yum install -y rpm/*.rpm
|
||||
# Fedora does not support running services in Docker (like Debian packages do) so start it manually
|
||||
- /usr/bin/mariadb-install-db -u mysql
|
||||
- sudo -u mysql /usr/sbin/mariadbd & sleep 10
|
||||
# Dump database contents as is before upgrade
|
||||
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > installed-database.sql
|
||||
# Since we did a manual start, we also need to run upgrade manually
|
||||
- /usr/bin/mariadb-upgrade -u root
|
||||
# Dump database contents as is after upgrade
|
||||
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > upgraded-database.sql
|
||||
- |
|
||||
mariadb --skip-column-names -e "SELECT @@version, @@version_comment" | tee /tmp/version
|
||||
grep $MARIADB_MAJOR_VERSION /tmp/version || echo "MariaDB didn't install properly"
|
||||
- mariadb --table -e "SELECT * FROM mysql.global_priv; SHOW CREATE USER root@localhost; SHOW CREATE USER 'mariadb.sys'@localhost"
|
||||
- mariadb --table -e "SELECT * FROM mysql.plugin; SHOW PLUGINS"
|
||||
- mariadb -e "SHUTDOWN;"
|
||||
- rm -rf /var/lib/mysql/* # Clear datadir before next run
|
||||
# Start database without install-db step
|
||||
- sudo -u mysql /usr/sbin/mariadbd --skip-network --skip-grant & sleep 10
|
||||
# Dump database contents in initial state
|
||||
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > empty-database.sql
|
||||
artifacts:
|
||||
paths:
|
||||
- installed-database.sql
|
||||
- upgraded-database.sql
|
||||
|
||||
fedora upgrade:
|
||||
stage: test
|
||||
dependencies:
|
||||
- fedora
|
||||
needs:
|
||||
- fedora
|
||||
script:
|
||||
- dnf install -y mariadb-server
|
||||
# Fedora does not support running services in Docker (like Debian packages do) so start it manually
|
||||
- /usr/libexec/mariadb-check-socket
|
||||
- /usr/libexec/mariadb-prepare-db-dir
|
||||
- sudo -u mysql /usr/libexec/mariadbd --basedir=/usr & sleep 10
|
||||
# Dump database contents in installed state
|
||||
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > old-installed-database.sql
|
||||
- /usr/libexec/mariadb-check-upgrade
|
||||
# Dump database contents in upgraded state
|
||||
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > old-upgraded-database.sql
|
||||
- mariadb --skip-column-names -e "SELECT @@version, @@version_comment" # Show version
|
||||
# @TODO: Upgrade from Fedora 33 MariaDB 10.4 to MariaDB.org latest does not work
|
||||
# so do this manual step to remove conflicts until packaging is fixed
|
||||
- yum remove -y mariadb-server-utils mariadb-gssapi-server mariadb-cracklib-password-check mariadb-backup mariadb-connector-c-config
|
||||
- rm -f rpm/*debuginfo* # Not relevant in this test
|
||||
- yum install -y rpm/*.rpm
|
||||
# nothing provides galera-4 on Fedora, so this step fails if built with wsrep
|
||||
- mysql -e "SHUTDOWN;"
|
||||
- /usr/bin/mariadb-install-db # This step should not do anything on upgrades, just exit
|
||||
- sudo -u mysql /usr/sbin/mariadbd & sleep 10
|
||||
# Dump database contents in installed state
|
||||
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > new-installed-database.sql || true
|
||||
# The step above fails on: mariadb-dump: Couldn't execute 'show events': Cannot proceed, because event scheduler is disabled (1577)
|
||||
# @TODO: Since we did a manual start, we also need to run upgrade manually
|
||||
- /usr/bin/mariadb-upgrade
|
||||
# Dump database contents in upgraded state
|
||||
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > new-upgraded-database.sql
|
||||
- |
|
||||
mariadb --skip-column-names -e "SELECT @@version, @@version_comment" | tee /tmp/version
|
||||
grep $MARIADB_MAJOR_VERSION /tmp/version || echo "MariaDB didn't upgrade properly"
|
||||
- mariadb --table -e "SELECT * FROM mysql.global_priv; SHOW CREATE USER root@localhost; SHOW CREATE USER 'mariadb.sys'@localhost"
|
||||
- mariadb --table -e "SELECT * FROM mysql.plugin; SHOW PLUGINS"
|
||||
artifacts:
|
||||
paths:
|
||||
- old-installed-database.sql
|
||||
- old-upgraded-database.sql
|
||||
- new-installed-database.sql
|
||||
- new-upgraded-database.sql
|
||||
|
||||
# Once all RPM builds and tests have passed, also run the DEB builds and tests
|
||||
# @NOTE: This is likely to work well only on salsa.debian.org as the Gitlab.com
|
||||
# runners are too small for everything this stage does.
|
||||
# build_deb:
|
||||
# stage: Salsa-CI
|
||||
# trigger:
|
||||
# include: debian/salsa-ci.yml
|
6
.gitmodules
vendored
6
.gitmodules
vendored
|
@ -1,25 +1,19 @@
|
|||
[submodule "libmariadb"]
|
||||
path = libmariadb
|
||||
url = https://github.com/MariaDB/mariadb-connector-c.git
|
||||
ignore = all
|
||||
[submodule "storage/rocksdb/rocksdb"]
|
||||
path = storage/rocksdb/rocksdb
|
||||
url = https://github.com/facebook/rocksdb.git
|
||||
ignore = all
|
||||
[submodule "wsrep-lib"]
|
||||
path = wsrep-lib
|
||||
url = https://github.com/codership/wsrep-lib.git
|
||||
branch = master
|
||||
ignore = all
|
||||
[submodule "extra/wolfssl/wolfssl"]
|
||||
path = extra/wolfssl/wolfssl
|
||||
url = https://github.com/wolfSSL/wolfssl.git
|
||||
ignore = all
|
||||
[submodule "storage/maria/libmarias3"]
|
||||
path = storage/maria/libmarias3
|
||||
url = https://github.com/mariadb-corporation/libmarias3.git
|
||||
ignore = all
|
||||
[submodule "storage/columnstore/columnstore"]
|
||||
path = storage/columnstore/columnstore
|
||||
url = https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
|
||||
ignore = all
|
||||
|
|
|
@ -5369,6 +5369,7 @@ static void init_username()
|
|||
full_username=my_strdup(PSI_NOT_INSTRUMENTED, cur[0],MYF(MY_WME));
|
||||
part_username=my_strdup(PSI_NOT_INSTRUMENTED, strtok(cur[0],"@"),MYF(MY_WME));
|
||||
(void) mysql_fetch_row(result); // Read eof
|
||||
mysql_free_result(result);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ int main(int argc,char *argv[])
|
|||
MY_INIT(argv[0]);
|
||||
sf_leaking_memory=1; /* don't report memory leaks on early exits */
|
||||
plugin_data.name= 0; /* initialize name */
|
||||
|
||||
|
||||
/*
|
||||
The following operations comprise the method for enabling or disabling
|
||||
a plugin. We begin by processing the command options then check the
|
||||
|
@ -110,15 +110,15 @@ int main(int argc,char *argv[])
|
|||
--plugin-ini (if specified). If the directories are Ok, we then look
|
||||
for the mysqld executable and the plugin soname. Finally, we build a
|
||||
bootstrap command file for use in bootstraping the server.
|
||||
|
||||
|
||||
If any step fails, the method issues an error message and the tool exits.
|
||||
|
||||
|
||||
1) Parse, execute, and verify command options.
|
||||
2) Check access to directories.
|
||||
3) Look for mysqld executable.
|
||||
4) Look for the plugin.
|
||||
5) Build a bootstrap file with commands to enable or disable plugin.
|
||||
|
||||
|
||||
*/
|
||||
if ((error= process_options(argc, argv, operation)) ||
|
||||
(error= check_access()) ||
|
||||
|
@ -126,11 +126,11 @@ int main(int argc,char *argv[])
|
|||
(error= find_plugin(tp_path)) ||
|
||||
(error= build_bootstrap_file(operation, bootstrap)))
|
||||
goto exit;
|
||||
|
||||
|
||||
/* Dump the bootstrap file if --verbose specified. */
|
||||
if (opt_verbose && ((error= dump_bootstrap_file(bootstrap))))
|
||||
goto exit;
|
||||
|
||||
|
||||
/* Start the server in bootstrap mode and execute bootstrap commands */
|
||||
error= bootstrap_server(server_path, bootstrap);
|
||||
|
||||
|
@ -238,7 +238,7 @@ static int run_command(char* cmd, const char *mode)
|
|||
#ifdef __WIN__
|
||||
/**
|
||||
Check to see if there are spaces in a path.
|
||||
|
||||
|
||||
@param[in] path The Windows path to examine.
|
||||
|
||||
@retval int spaces found = 1, no spaces = 0
|
||||
|
@ -253,7 +253,7 @@ static int has_spaces(const char *path)
|
|||
|
||||
/**
|
||||
Convert a Unix path to a Windows path.
|
||||
|
||||
|
||||
@param[in] path The Windows path to examine.
|
||||
|
||||
@returns string containing path with / changed to \\
|
||||
|
@ -335,12 +335,12 @@ static int get_default_values()
|
|||
#ifdef __WIN__
|
||||
{
|
||||
char *format_str= 0;
|
||||
|
||||
|
||||
if (has_spaces(tool_path) || has_spaces(defaults_file))
|
||||
format_str = "\"%s --mysqld > %s\"";
|
||||
else
|
||||
format_str = "%s --mysqld > %s";
|
||||
|
||||
|
||||
snprintf(defaults_cmd, sizeof(defaults_cmd), format_str,
|
||||
add_quotes(tool_path), add_quotes(defaults_file));
|
||||
if (opt_verbose)
|
||||
|
@ -675,7 +675,7 @@ static int load_plugin_data(char *plugin_name, char *config_file)
|
|||
{
|
||||
reason= "Bad format in plugin configuration file.";
|
||||
fclose(file_ptr);
|
||||
goto error;
|
||||
goto error;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -709,7 +709,7 @@ static int load_plugin_data(char *plugin_name, char *config_file)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fclose(file_ptr);
|
||||
return 0;
|
||||
|
||||
|
@ -740,7 +740,7 @@ static int check_options(int argc, char **argv, char *operation)
|
|||
int num_found= 0; /* number of options found (shortcut loop) */
|
||||
char config_file[FN_REFLEN]; /* configuration file name */
|
||||
char plugin_name[FN_REFLEN]; /* plugin name */
|
||||
|
||||
|
||||
/* Form prefix strings for the options. */
|
||||
const char *basedir_prefix = "--basedir=";
|
||||
size_t basedir_len= strlen(basedir_prefix);
|
||||
|
@ -815,7 +815,7 @@ static int check_options(int argc, char **argv, char *operation)
|
|||
return 1;
|
||||
}
|
||||
/* If a plugin was specified, read the config file. */
|
||||
else if (strlen(plugin_name) > 0)
|
||||
else if (strlen(plugin_name) > 0)
|
||||
{
|
||||
if (load_plugin_data(plugin_name, config_file))
|
||||
{
|
||||
|
@ -847,22 +847,22 @@ static int check_options(int argc, char **argv, char *operation)
|
|||
|
||||
/**
|
||||
Parse, execute, and verify command options.
|
||||
|
||||
|
||||
This method handles all of the option processing including the optional
|
||||
features for displaying data (--print-defaults, --help ,etc.) that do not
|
||||
result in an attempt to ENABLE or DISABLE of a plugin.
|
||||
|
||||
|
||||
@param[in] arc Count of arguments
|
||||
@param[in] argv Array of arguments
|
||||
@param[out] operation Operation (ENABLE or DISABLE)
|
||||
|
||||
|
||||
@retval int error = 1, success = 0, exit program = -1
|
||||
*/
|
||||
|
||||
static int process_options(int argc, char *argv[], char *operation)
|
||||
{
|
||||
int error= 0;
|
||||
|
||||
|
||||
/* Parse and execute command-line options */
|
||||
if ((error= handle_options(&argc, &argv, my_long_options, get_one_option)))
|
||||
return error;
|
||||
|
@ -881,7 +881,7 @@ static int process_options(int argc, char *argv[], char *operation)
|
|||
char buff[FN_REFLEN];
|
||||
if (basedir_len + 2 > FN_REFLEN)
|
||||
return -1;
|
||||
|
||||
|
||||
memcpy(buff, opt_basedir, basedir_len);
|
||||
buff[basedir_len]= '/';
|
||||
buff[basedir_len + 1]= '\0';
|
||||
|
@ -890,7 +890,7 @@ static int process_options(int argc, char *argv[], char *operation)
|
|||
opt_basedir= my_strdup(PSI_NOT_INSTRUMENTED, buff, MYF(MY_FAE));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
If the user did not specify the option to skip loading defaults from a
|
||||
config file and the required options are not present or there was an error
|
||||
|
@ -925,18 +925,18 @@ static int process_options(int argc, char *argv[], char *operation)
|
|||
|
||||
/**
|
||||
Check access
|
||||
|
||||
|
||||
This method checks to ensure all of the directories (opt_basedir,
|
||||
opt_plugin_dir, opt_datadir, and opt_plugin_ini) are accessible by
|
||||
the user.
|
||||
|
||||
|
||||
@retval int error = 1, success = 0
|
||||
*/
|
||||
|
||||
static int check_access()
|
||||
{
|
||||
int error= 0;
|
||||
|
||||
|
||||
if ((error= my_access(opt_basedir, F_OK)))
|
||||
{
|
||||
fprintf(stderr, "ERROR: Cannot access basedir at '%s'.\n",
|
||||
|
@ -1048,13 +1048,13 @@ static int find_plugin(char *tp_path)
|
|||
|
||||
/**
|
||||
Build the bootstrap file.
|
||||
|
||||
|
||||
Create a new file and populate it with SQL commands to ENABLE or DISABLE
|
||||
the plugin via REPLACE and DELETE operations on the mysql.plugin table.
|
||||
|
||||
param[in] operation The type of operation (ENABLE or DISABLE)
|
||||
param[out] bootstrap A FILE* pointer
|
||||
|
||||
|
||||
@retval int error = 1, success = 0
|
||||
*/
|
||||
|
||||
|
@ -1062,7 +1062,7 @@ static int build_bootstrap_file(char *operation, char *bootstrap)
|
|||
{
|
||||
int error= 0;
|
||||
FILE *file= 0;
|
||||
|
||||
|
||||
/*
|
||||
Perform plugin operation : ENABLE or DISABLE
|
||||
|
||||
|
@ -1073,10 +1073,10 @@ static int build_bootstrap_file(char *operation, char *bootstrap)
|
|||
<plugin_name>.ini configuration file. Once the file is built, a call to
|
||||
mysqld is made in read only, bootstrap modes to read the SQL statements
|
||||
and execute them.
|
||||
|
||||
|
||||
Note: Replace was used so that if a user loads a newer version of a
|
||||
library with a different library name, the new library name is
|
||||
used for symbols that match.
|
||||
used for symbols that match.
|
||||
*/
|
||||
if ((error= make_tempfile(bootstrap, "sql")))
|
||||
{
|
||||
|
@ -1123,7 +1123,7 @@ static int build_bootstrap_file(char *operation, char *bootstrap)
|
|||
printf("# Disabling %s...\n", plugin_data.name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
exit:
|
||||
fclose(file);
|
||||
return error;
|
||||
|
@ -1132,11 +1132,11 @@ exit:
|
|||
|
||||
/**
|
||||
Dump bootstrap file.
|
||||
|
||||
|
||||
Read the contents of the bootstrap file and print it out.
|
||||
|
||||
|
||||
@param[in] bootstrap_file Name of bootstrap file to read
|
||||
|
||||
|
||||
@retval int error = 1, success = 0
|
||||
*/
|
||||
|
||||
|
@ -1173,7 +1173,7 @@ exit:
|
|||
|
||||
/**
|
||||
Bootstrap the server
|
||||
|
||||
|
||||
Create a command line sequence to launch mysqld in bootstrap mode. This
|
||||
will allow mysqld to launch a minimal server instance to read and
|
||||
execute SQL commands from a file piped in (the bootstrap file). We use
|
||||
|
@ -1194,47 +1194,39 @@ exit:
|
|||
|
||||
static int bootstrap_server(char *server_path, char *bootstrap_file)
|
||||
{
|
||||
char bootstrap_cmd[FN_REFLEN];
|
||||
char bootstrap_cmd[FN_REFLEN]= {0};
|
||||
char lc_messages_dir_str[FN_REFLEN]= {0};
|
||||
int error= 0;
|
||||
|
||||
#ifdef __WIN__
|
||||
char *format_str= 0;
|
||||
const char *verbose_str= NULL;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
if (opt_lc_messages_dir != NULL)
|
||||
snprintf(lc_messages_dir_str, sizeof(lc_messages_dir_str), "--lc-messages-dir=%s",
|
||||
opt_lc_messages_dir);
|
||||
|
||||
#ifdef __WIN__
|
||||
if (opt_verbose)
|
||||
verbose_str= "--console";
|
||||
else
|
||||
verbose_str= "";
|
||||
|
||||
if (has_spaces(opt_datadir) || has_spaces(opt_basedir) ||
|
||||
has_spaces(bootstrap_file))
|
||||
{
|
||||
if (opt_lc_messages_dir != NULL)
|
||||
format_str= "\"%s %s --bootstrap --datadir=%s --basedir=%s --lc-messages-dir=%s <%s\"";
|
||||
else
|
||||
format_str= "\"%s %s --bootstrap --datadir=%s --basedir=%s <%s\"";
|
||||
}
|
||||
has_spaces(bootstrap_file) || has_spaces(lc_messages_dir_str))
|
||||
format_str= "\"%s %s --bootstrap --datadir=%s --basedir=%s %s <%s\"";
|
||||
else
|
||||
{
|
||||
if (opt_lc_messages_dir != NULL)
|
||||
format_str= "\"%s %s --bootstrap --datadir=%s --basedir=%s --lc-messages-dir=%s <%s\"";
|
||||
else
|
||||
format_str= "%s %s --bootstrap --datadir=%s --basedir=%s <%s";
|
||||
}
|
||||
format_str= "%s %s --bootstrap --datadir=%s --basedir=%s %s <%s";
|
||||
|
||||
snprintf(bootstrap_cmd, sizeof(bootstrap_cmd), format_str,
|
||||
add_quotes(convert_path(server_path)), verbose_str,
|
||||
add_quotes(opt_datadir), add_quotes(opt_basedir),
|
||||
add_quotes(bootstrap_file));
|
||||
add_quotes(lc_messages_dir_str), add_quotes(bootstrap_file));
|
||||
#else
|
||||
if (opt_lc_messages_dir != NULL)
|
||||
snprintf(bootstrap_cmd, sizeof(bootstrap_cmd),
|
||||
"%s --no-defaults --bootstrap --datadir=%s --basedir=%s --lc-messages-dir=%s"
|
||||
" <%s", server_path, opt_datadir, opt_basedir, opt_lc_messages_dir, bootstrap_file);
|
||||
else
|
||||
snprintf(bootstrap_cmd, sizeof(bootstrap_cmd),
|
||||
"%s --no-defaults --bootstrap --datadir=%s --basedir=%s"
|
||||
" <%s", server_path, opt_datadir, opt_basedir, bootstrap_file);
|
||||
|
||||
snprintf(bootstrap_cmd, sizeof(bootstrap_cmd),
|
||||
"%s --no-defaults --bootstrap --datadir=%s --basedir=%s %s"
|
||||
" <%s", server_path, opt_datadir, opt_basedir, lc_messages_dir_str, bootstrap_file);
|
||||
#endif
|
||||
|
||||
/* Execute the command */
|
||||
|
@ -1247,6 +1239,6 @@ static int bootstrap_server(char *server_path, char *bootstrap_file)
|
|||
fprintf(stderr,
|
||||
"ERROR: Unexpected result from bootstrap. Error code: %d.\n",
|
||||
error);
|
||||
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -76,6 +76,8 @@ char upgrade_from_version[sizeof("10.20.456-MariaDB")+30];
|
|||
|
||||
static my_bool opt_write_binlog;
|
||||
|
||||
static void print_conn_args(const char *tool_name);
|
||||
|
||||
#define OPT_SILENT OPT_MAX_CLIENT_OPTION
|
||||
|
||||
static struct my_option my_long_options[]=
|
||||
|
@ -155,7 +157,10 @@ static struct my_option my_long_options[]=
|
|||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"user", 'u', "User for login.", &opt_user,
|
||||
&opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"verbose", 'v', "Display more output about the process; Using it twice will print connection argument; Using it 3 times will print out all CHECK, RENAME and ALTER TABLE during the check phase.",
|
||||
{"verbose", 'v', "Display more output about the process; Using it twice will print connection argument;"
|
||||
"Using it 3 times will print out all CHECK, RENAME and ALTER TABLE during the check phase;"
|
||||
"Using it 4 times (added in MariaDB 10.0.14) will also write out all mariadb-check commands used;"
|
||||
"Using it 5 times will print all the mariadb commands used and their results while running mysql_fix_privilege_tables script.",
|
||||
&opt_not_used, &opt_not_used, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
|
||||
{"version", 'V', "Output version information and exit.", 0, 0, 0,
|
||||
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
@ -210,6 +215,7 @@ static void die(const char *fmt, ...)
|
|||
DBUG_ENTER("die");
|
||||
|
||||
/* Print the error message */
|
||||
print_conn_args("mariadb-check");
|
||||
fflush(stdout);
|
||||
va_start(args, fmt);
|
||||
if (fmt)
|
||||
|
@ -640,6 +646,7 @@ static int run_query(const char *query, DYNAMIC_STRING *ds_res,
|
|||
"--database=mysql",
|
||||
"--batch", /* Turns off pager etc. */
|
||||
force ? "--force": "--skip-force",
|
||||
opt_verbose >= 5 ? "--verbose" : "",
|
||||
ds_res || opt_silent ? "--silent": "",
|
||||
"<",
|
||||
query_file_path,
|
||||
|
@ -866,8 +873,7 @@ static int upgrade_already_done(int silent)
|
|||
"There is no need to run mysql_upgrade again for %s.",
|
||||
upgrade_from_version, version);
|
||||
if (!opt_check_upgrade)
|
||||
verbose("You can use --force if you still want to run mysql_upgrade",
|
||||
upgrade_from_version, version);
|
||||
verbose("You can use --force if you still want to run mysql_upgrade");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1329,9 +1335,7 @@ static int run_sql_fix_privilege_tables(void)
|
|||
dynstr_append(&ds_script, *query_ptr);
|
||||
}
|
||||
|
||||
run_query(ds_script.str,
|
||||
&ds_result, /* Collect result */
|
||||
TRUE);
|
||||
run_query(ds_script.str, (opt_verbose >= 5) ? NULL : &ds_result, TRUE);
|
||||
|
||||
{
|
||||
/*
|
||||
|
@ -1502,6 +1506,7 @@ int main(int argc, char **argv)
|
|||
DBUG_ASSERT(phase == phases_total);
|
||||
|
||||
end:
|
||||
print_conn_args("mariadb-check");
|
||||
free_used_memory();
|
||||
my_end(my_end_arg);
|
||||
exit(0);
|
||||
|
|
|
@ -1593,7 +1593,8 @@ static void print_relative_row_vert(MYSQL_RES *result __attribute__((unused)),
|
|||
llstr((tmp - last_values[row]), buff));
|
||||
|
||||
/* Find the minimum row length needed to output the relative value */
|
||||
if ((length=(uint) strlen(buff) > ex_val_max_len[row]) && ex_status_printed)
|
||||
length=(uint) strlen(buff);
|
||||
if (length > ex_val_max_len[row] && ex_status_printed)
|
||||
ex_val_max_len[row] = length;
|
||||
last_values[row] = tmp;
|
||||
}
|
||||
|
|
|
@ -1832,15 +1832,20 @@ static void cleanup()
|
|||
my_free_open_file_info();
|
||||
load_processor.destroy();
|
||||
mysql_server_end();
|
||||
if (opt_flashback)
|
||||
{
|
||||
delete_dynamic(&binlog_events);
|
||||
delete_dynamic(&events_in_stmt);
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
static void die()
|
||||
static void die(int err)
|
||||
{
|
||||
cleanup();
|
||||
my_end(MY_DONT_FREE_DBUG);
|
||||
exit(1);
|
||||
exit(err);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1877,7 +1882,7 @@ static my_time_t convert_str_to_timestamp(const char* str)
|
|||
l_time.time_type != MYSQL_TIMESTAMP_DATETIME || status.warnings)
|
||||
{
|
||||
error("Incorrect date and time argument: %s", str);
|
||||
die();
|
||||
die(1);
|
||||
}
|
||||
/*
|
||||
Note that Feb 30th, Apr 31st cause no error messages and are mapped to
|
||||
|
@ -1940,7 +1945,7 @@ get_one_option(const struct my_option *opt, const char *argument, const char *)
|
|||
opt->name)) <= 0)
|
||||
{
|
||||
sf_leaking_memory= 1; /* no memory leak reports here */
|
||||
die();
|
||||
die(1);
|
||||
}
|
||||
break;
|
||||
#ifdef WHEN_FLASHBACK_REVIEW_READY
|
||||
|
@ -1961,7 +1966,7 @@ get_one_option(const struct my_option *opt, const char *argument, const char *)
|
|||
opt->name)) <= 0)
|
||||
{
|
||||
sf_leaking_memory= 1; /* no memory leak reports here */
|
||||
die();
|
||||
die(1);
|
||||
}
|
||||
opt_base64_output_mode= (enum_base64_output_mode)(val - 1);
|
||||
break;
|
||||
|
@ -2046,7 +2051,7 @@ static int parse_args(int *argc, char*** argv)
|
|||
|
||||
if ((ho_error=handle_options(argc, argv, my_options, get_one_option)))
|
||||
{
|
||||
die();
|
||||
die(ho_error);
|
||||
}
|
||||
if (debug_info_flag)
|
||||
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
|
||||
|
@ -3003,6 +3008,12 @@ int main(int argc, char** argv)
|
|||
|
||||
my_set_max_open_files(open_files_limit);
|
||||
|
||||
if (opt_flashback && opt_raw_mode)
|
||||
{
|
||||
error("The --raw mode is not allowed with --flashback mode");
|
||||
die(1);
|
||||
}
|
||||
|
||||
if (opt_flashback)
|
||||
{
|
||||
my_init_dynamic_array(PSI_NOT_INSTRUMENTED, &binlog_events,
|
||||
|
@ -3018,7 +3029,7 @@ int main(int argc, char** argv)
|
|||
if (!remote_opt)
|
||||
{
|
||||
error("The --raw mode only works with --read-from-remote-server");
|
||||
die();
|
||||
die(1);
|
||||
}
|
||||
if (one_database)
|
||||
warning("The --database option is ignored in raw mode");
|
||||
|
@ -3040,7 +3051,7 @@ int main(int argc, char** argv)
|
|||
O_WRONLY | O_BINARY, MYF(MY_WME))))
|
||||
{
|
||||
error("Could not create log file '%s'", result_file_name);
|
||||
die();
|
||||
die(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -3129,7 +3140,7 @@ int main(int argc, char** argv)
|
|||
/* Set delimiter back to semicolon */
|
||||
if (retval != ERROR_STOP)
|
||||
{
|
||||
if (!stop_event_string.is_empty())
|
||||
if (!stop_event_string.is_empty() && result_file)
|
||||
fprintf(result_file, "%s", stop_event_string.ptr());
|
||||
if (!opt_raw_mode && opt_flashback)
|
||||
fprintf(result_file, "DELIMITER ;\n");
|
||||
|
|
|
@ -947,6 +947,7 @@ static int handle_request_for_tables(char *tables, size_t length,
|
|||
DBUG_RETURN(1);
|
||||
if (dont_quote)
|
||||
{
|
||||
DBUG_ASSERT(op);
|
||||
DBUG_ASSERT(strlen(op)+strlen(tables)+strlen(options)+8+1 <= query_size);
|
||||
|
||||
/* No backticks here as we added them before */
|
||||
|
|
|
@ -2527,7 +2527,10 @@ static uint dump_events_for_db(char *db)
|
|||
/* Get database collation. */
|
||||
|
||||
if (fetch_db_collation(db_name_buff, db_cl_name, sizeof (db_cl_name)))
|
||||
{
|
||||
mysql_free_result(event_list_res);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (switch_character_set_results(mysql, "binary"))
|
||||
|
@ -3329,7 +3332,10 @@ static uint get_table_structure(const char *table, const char *db, char *table_t
|
|||
if (path)
|
||||
{
|
||||
if (!(sql_file= open_sql_file_for_table(table, O_WRONLY)))
|
||||
{
|
||||
mysql_free_result(result);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
write_header(sql_file, db);
|
||||
}
|
||||
|
||||
|
@ -3730,7 +3736,7 @@ static int dump_triggers_for_table(char *table_name, char *db_name)
|
|||
char name_buff[NAME_LEN*4+3];
|
||||
char query_buff[QUERY_LENGTH];
|
||||
uint old_opt_compatible_mode= opt_compatible_mode;
|
||||
MYSQL_RES *show_triggers_rs;
|
||||
MYSQL_RES *show_triggers_rs= NULL;
|
||||
MYSQL_ROW row;
|
||||
FILE *sql_file= md_result_file;
|
||||
|
||||
|
@ -3814,8 +3820,6 @@ static int dump_triggers_for_table(char *table_name, char *db_name)
|
|||
}
|
||||
|
||||
skip:
|
||||
mysql_free_result(show_triggers_rs);
|
||||
|
||||
if (switch_character_set_results(mysql, default_charset))
|
||||
goto done;
|
||||
|
||||
|
@ -3830,7 +3834,7 @@ skip:
|
|||
done:
|
||||
if (path)
|
||||
my_fclose(sql_file, MYF(0));
|
||||
|
||||
mysql_free_result(show_triggers_rs);
|
||||
DBUG_RETURN(ret);
|
||||
}
|
||||
|
||||
|
@ -3936,7 +3940,7 @@ static void dump_table(const char *table, const char *db, const uchar *hash_key,
|
|||
uint num_fields;
|
||||
size_t total_length, init_length;
|
||||
|
||||
MYSQL_RES *res;
|
||||
MYSQL_RES *res= NULL;
|
||||
MYSQL_FIELD *field;
|
||||
MYSQL_ROW row;
|
||||
DBUG_ENTER("dump_table");
|
||||
|
@ -4130,6 +4134,8 @@ static void dump_table(const char *table, const char *db, const uchar *hash_key,
|
|||
fprintf(stderr,"%s: Error in field count for table: %s ! Aborting.\n",
|
||||
my_progname_short, result_table);
|
||||
error= EX_CONSCHECK;
|
||||
if (!quick)
|
||||
mysql_free_result(res);
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
@ -4438,6 +4444,7 @@ static void dump_table(const char *table, const char *db, const uchar *hash_key,
|
|||
err:
|
||||
dynstr_free(&query_string);
|
||||
maybe_exit(error);
|
||||
mysql_free_result(res);
|
||||
DBUG_VOID_RETURN;
|
||||
} /* dump_table */
|
||||
|
||||
|
@ -4703,7 +4710,11 @@ static int dump_all_users_roles_and_grants()
|
|||
" '@', QUOTE(DEFAULT_ROLE_HOST))) as r,"
|
||||
" CONCAT(QUOTE(mu.USER),'@',QUOTE(mu.HOST)) as u "
|
||||
"FROM mysql.user mu LEFT JOIN mysql.default_roles using (USER, HOST)"))
|
||||
{
|
||||
mysql_free_result(tableres);
|
||||
return 1;
|
||||
}
|
||||
|
||||
while ((row= mysql_fetch_row(tableres)))
|
||||
{
|
||||
if (dump_grants(row[1]))
|
||||
|
@ -5780,7 +5791,8 @@ static int get_sys_var_lower_case_table_names()
|
|||
lower_case_table_names= atoi(row[1]);
|
||||
mysql_free_result(table_res);
|
||||
}
|
||||
|
||||
if (!row)
|
||||
mysql_free_result(table_res);
|
||||
return lower_case_table_names;
|
||||
}
|
||||
|
||||
|
@ -6023,7 +6035,11 @@ static int do_show_master_status(MYSQL *mysql_con, int consistent_binlog_pos,
|
|||
}
|
||||
|
||||
if (have_mariadb_gtid && get_gtid_pos(gtid_pos, 1))
|
||||
{
|
||||
mysql_free_result(master);
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* SHOW MASTER STATUS reports file and position */
|
||||
|
@ -6145,7 +6161,10 @@ static int do_show_slave_status(MYSQL *mysql_con, int use_gtid,
|
|||
{
|
||||
char gtid_pos[MAX_GTID_LENGTH];
|
||||
if (have_mariadb_gtid && get_gtid_pos(gtid_pos, 0))
|
||||
{
|
||||
mysql_free_result(slave);
|
||||
return 1;
|
||||
}
|
||||
if (opt_comments)
|
||||
fprintf(md_result_file, "\n--\n-- Gtid position to start replication "
|
||||
"from\n--\n\n");
|
||||
|
@ -6341,7 +6360,7 @@ static ulong find_set(TYPELIB *lib, const char *x, size_t length,
|
|||
{
|
||||
const char *end= x + length;
|
||||
ulong found= 0;
|
||||
uint find;
|
||||
int find;
|
||||
char buff[255];
|
||||
|
||||
*err_pos= 0; /* No error yet */
|
||||
|
|
|
@ -1773,6 +1773,7 @@ run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit)
|
|||
uint x;
|
||||
struct timeval start_time, end_time;
|
||||
thread_context con;
|
||||
int error;
|
||||
pthread_t mainthread; /* Thread descriptor */
|
||||
pthread_attr_t attr; /* Thread attributes */
|
||||
DBUG_ENTER("run_scheduler");
|
||||
|
@ -1781,8 +1782,11 @@ run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit)
|
|||
con.limit= limit;
|
||||
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr,
|
||||
PTHREAD_CREATE_DETACHED);
|
||||
if ((error= pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)))
|
||||
{
|
||||
printf("Got error: %d from pthread_attr_setdetachstate\n", error);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&counter_mutex);
|
||||
thread_counter= 0;
|
||||
|
|
|
@ -3564,9 +3564,11 @@ void do_system(struct st_command *command)
|
|||
/* returns TRUE if path is inside a sandbox */
|
||||
bool is_sub_path(const char *path, size_t plen, const char *sandbox)
|
||||
{
|
||||
size_t len= strlen(sandbox);
|
||||
if (!sandbox || !len || plen <= len || memcmp(path, sandbox, len - 1)
|
||||
|| path[len] != '/')
|
||||
size_t len;
|
||||
if (!sandbox)
|
||||
return false;
|
||||
len= strlen(sandbox);
|
||||
if (plen <= len || memcmp(path, sandbox, len-1) || path[len] != '/')
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
@ -11752,7 +11754,7 @@ void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING *ds_input,
|
|||
|
||||
/* Sort array */
|
||||
qsort(lines.buffer, lines.elements,
|
||||
sizeof(char**), (qsort_cmp)comp_lines);
|
||||
sizeof(uchar *), (qsort_cmp)comp_lines);
|
||||
|
||||
/* Create new result */
|
||||
for (i= 0; i < lines.elements ; i++)
|
||||
|
|
|
@ -1815,13 +1815,28 @@ apply_log_finish()
|
|||
return(true);
|
||||
}
|
||||
|
||||
class Copy_back_dst_dir
|
||||
{
|
||||
std::string buf;
|
||||
|
||||
public:
|
||||
const char *make(const char *path)
|
||||
{
|
||||
if (!path || !path[0])
|
||||
return mysql_data_home;
|
||||
if (is_absolute_path(path))
|
||||
return path;
|
||||
return buf.assign(mysql_data_home).append(path).c_str();
|
||||
}
|
||||
};
|
||||
|
||||
bool
|
||||
copy_back()
|
||||
{
|
||||
bool ret = false;
|
||||
datadir_iter_t *it = NULL;
|
||||
datadir_node_t node;
|
||||
char *dst_dir;
|
||||
const char *dst_dir;
|
||||
|
||||
memset(&node, 0, sizeof(node));
|
||||
|
||||
|
@ -1873,9 +1888,9 @@ copy_back()
|
|||
|
||||
/* copy undo tablespaces */
|
||||
|
||||
Copy_back_dst_dir dst_dir_buf;
|
||||
|
||||
dst_dir = (srv_undo_dir && *srv_undo_dir)
|
||||
? srv_undo_dir : mysql_data_home;
|
||||
dst_dir = dst_dir_buf.make(srv_undo_dir);
|
||||
|
||||
ds_data = ds_create(dst_dir, DS_TYPE_LOCAL);
|
||||
|
||||
|
@ -1896,8 +1911,7 @@ copy_back()
|
|||
|
||||
/* copy redo logs */
|
||||
|
||||
dst_dir = (srv_log_group_home_dir && *srv_log_group_home_dir)
|
||||
? srv_log_group_home_dir : mysql_data_home;
|
||||
dst_dir = dst_dir_buf.make(srv_log_group_home_dir);
|
||||
|
||||
/* --backup generates a single LOG_FILE_NAME, which we must copy
|
||||
if it exists. */
|
||||
|
@ -1925,8 +1939,7 @@ copy_back()
|
|||
|
||||
/* copy innodb system tablespace(s) */
|
||||
|
||||
dst_dir = (innobase_data_home_dir && *innobase_data_home_dir)
|
||||
? innobase_data_home_dir : mysql_data_home;
|
||||
dst_dir = dst_dir_buf.make(innobase_data_home_dir);
|
||||
|
||||
ds_data = ds_create(dst_dir, DS_TYPE_LOCAL);
|
||||
|
||||
|
|
|
@ -2534,7 +2534,7 @@ swift_keystone_auth_v3(const char *auth_url, swift_auth_info *info)
|
|||
} else if (opt_swift_project != NULL) {
|
||||
snprintf(scope, sizeof(scope),
|
||||
",\"scope\":{\"project\":{\"name\":\"%s\"%s}}",
|
||||
opt_swift_project_id, domain);
|
||||
opt_swift_project, domain);
|
||||
}
|
||||
|
||||
snprintf(payload, sizeof(payload), "{\"auth\":{\"identity\":"
|
||||
|
|
|
@ -1058,7 +1058,8 @@ struct my_option xb_client_options[]= {
|
|||
(G_PTR *) &xtrabackup_print_param, (G_PTR *) &xtrabackup_print_param, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"use-memory", OPT_XTRA_USE_MEMORY,
|
||||
"The value is used instead of buffer_pool_size",
|
||||
"The value is used in place of innodb_buffer_pool_size. "
|
||||
"This option is only relevant when the --prepare option is specified.",
|
||||
(G_PTR *) &xtrabackup_use_memory, (G_PTR *) &xtrabackup_use_memory, 0,
|
||||
GET_LL, REQUIRED_ARG, 100 * 1024 * 1024L, 1024 * 1024L, LONGLONG_MAX, 0,
|
||||
1024 * 1024L, 0},
|
||||
|
@ -1785,6 +1786,12 @@ static void print_version(void)
|
|||
my_progname, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
}
|
||||
|
||||
static void concatenate_default_groups(std::vector<const char*> &backup_load_groups, const char **default_groups)
|
||||
{
|
||||
for ( ; *default_groups ; default_groups++)
|
||||
backup_load_groups.push_back(*default_groups);
|
||||
}
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
puts("Open source backup tool for InnoDB and XtraDB\n\
|
||||
|
@ -1805,7 +1812,11 @@ GNU General Public License for more details.\n\
|
|||
You can download full text of the license on http://www.gnu.org/licenses/gpl-2.0.txt\n");
|
||||
|
||||
printf("Usage: %s [--defaults-file=#] [--backup | --prepare | --copy-back | --move-back] [OPTIONS]\n",my_progname);
|
||||
print_defaults("my", load_default_groups);
|
||||
std::vector<const char*> backup_load_default_groups;
|
||||
concatenate_default_groups(backup_load_default_groups, backup_default_groups);
|
||||
concatenate_default_groups(backup_load_default_groups, load_default_groups);
|
||||
backup_load_default_groups.push_back(nullptr);
|
||||
print_defaults("my", &backup_load_default_groups[0]);
|
||||
my_print_help(xb_client_options);
|
||||
my_print_help(xb_server_options);
|
||||
my_print_variables(xb_server_options);
|
||||
|
@ -6694,6 +6705,7 @@ int main(int argc, char **argv)
|
|||
*/
|
||||
if (strcmp(argv[1], "--mysqld") == 0)
|
||||
{
|
||||
srv_operation= SRV_OPERATION_EXPORT_RESTORED;
|
||||
extern int mysqld_main(int argc, char **argv);
|
||||
argc--;
|
||||
argv++;
|
||||
|
|
|
@ -30,8 +30,6 @@
|
|||
#ifndef __cplusplus
|
||||
#define inline __inline
|
||||
#endif
|
||||
#else
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
/* OpenSSL version specific definitions */
|
||||
#if defined(OPENSSL_VERSION_NUMBER)
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
|
||||
!(defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x30500000L)
|
||||
#define HAVE_OPENSSL11 1
|
||||
#define SSL_LIBRARY OpenSSL_version(OPENSSL_VERSION)
|
||||
#define ERR_remove_state(X) ERR_clear_error()
|
||||
|
|
|
@ -2941,7 +2941,8 @@ my_bool STDCALL mysql_stmt_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *my_bind)
|
|||
break;
|
||||
default:
|
||||
strmov(stmt->sqlstate, unknown_sqlstate);
|
||||
sprintf(stmt->last_error,
|
||||
snprintf(stmt->last_error,
|
||||
sizeof(stmt->last_error),
|
||||
ER(stmt->last_errno= CR_UNSUPPORTED_PARAM_TYPE),
|
||||
param->buffer_type, count);
|
||||
DBUG_RETURN(1);
|
||||
|
@ -3028,7 +3029,9 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number,
|
|||
{
|
||||
/* Long data handling should be used only for string/binary types */
|
||||
strmov(stmt->sqlstate, unknown_sqlstate);
|
||||
sprintf(stmt->last_error, ER(stmt->last_errno= CR_INVALID_BUFFER_USE),
|
||||
snprintf(stmt->last_error,
|
||||
sizeof(stmt->last_error),
|
||||
ER(stmt->last_errno= CR_INVALID_BUFFER_USE),
|
||||
param->param_number);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
@ -4159,7 +4162,8 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *my_bind)
|
|||
if (setup_one_fetch_function(param, field))
|
||||
{
|
||||
strmov(stmt->sqlstate, unknown_sqlstate);
|
||||
sprintf(stmt->last_error,
|
||||
snprintf(stmt->last_error,
|
||||
sizeof(stmt->last_error),
|
||||
ER(stmt->last_errno= CR_UNSUPPORTED_PARAM_TYPE),
|
||||
field->type, param_count);
|
||||
DBUG_RETURN(1);
|
||||
|
|
|
@ -656,7 +656,8 @@ The MariaDB user name to use when connecting to the server and not using the cur
|
|||
Display more output about the process\&. Using it twice will print connection
|
||||
arguments; using it 3 times will print out all CHECK, RENAME and ALTER TABLE
|
||||
commands used during the check phase; using it 4 times (added in MariaDB 10.0.14)
|
||||
will also write out all mysqlcheck commands used\&.
|
||||
will also write out all mariadb-check commands used; using it 5 times will print all
|
||||
the mariadb commands used and their results while running mysql_fix_privilege_tables script\&.
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--let $_server_id= `SELECT @@server_id`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
|
||||
# There should be a debug crash after using this .inc file
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
|
|
|
@ -788,6 +788,22 @@ INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #75
|
||||
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, i INT);
|
||||
--let $query = INSERT INTO t1 VALUES (3,10), (7,11), (3,11) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);
|
||||
--source include/explain_utils.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #76
|
||||
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, i INT);
|
||||
CREATE TABLE t2 (a INT, b INT);
|
||||
INSERT INTO t2 VALUES (1,10), (3,10), (7,11), (3,11);
|
||||
--let $query = INSERT INTO t1 SELECT * FROM t2 ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);
|
||||
--source include/explain_utils.inc
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #12949629: CLIENT LOSES CONNECTION AFTER EXECUTING A PROCEDURE WITH
|
||||
--echo # EXPLAIN UPDATE/DEL/INS
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
--echo Killing server ...
|
||||
|
||||
# Write file to make mysql-test-run.pl expect the crash, but don't start it
|
||||
--let $_server_id= `SELECT @@server_id`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
|
||||
# Kill the connected server
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--let $_server_id= `SELECT @@server_id`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
|
||||
--echo # Kill the server
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
|
|
|
@ -22,8 +22,8 @@ if ($rpl_inited)
|
|||
}
|
||||
|
||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start it
|
||||
--let $_server_id= `SELECT @@server_id`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
|
||||
# Avoid warnings from connection threads that does not have time to exit
|
||||
|
|
|
@ -6442,6 +6442,23 @@ IS_IPV4('10.0.0.1')
|
|||
1
|
||||
SET NAMES utf8;
|
||||
#
|
||||
# MDEV-30746 Regression in ucs2_general_mysql500_ci
|
||||
#
|
||||
SET NAMES utf8mb3;
|
||||
CREATE TABLE t1 (a VARCHAR(32) CHARACTER SET ucs2 COLLATE ucs2_general_mysql500_ci);
|
||||
INSERT INTO t1 VALUES ('s'),('z'),(_latin1 0xDF);
|
||||
SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a ORDER BY a;
|
||||
GROUP_CONCAT(a)
|
||||
s
|
||||
z
|
||||
ß
|
||||
SELECT a, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1 ORDER BY a;
|
||||
a HEX(a) HEX(WEIGHT_STRING(a))
|
||||
s 0073 0053
|
||||
z 007A 005A
|
||||
ß 00DF 00DF
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
#
|
||||
|
|
|
@ -1136,6 +1136,18 @@ SELECT IS_IPV6('::');
|
|||
SELECT IS_IPV4('10.0.0.1');
|
||||
SET NAMES utf8;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30746 Regression in ucs2_general_mysql500_ci
|
||||
--echo #
|
||||
|
||||
SET NAMES utf8mb3;
|
||||
CREATE TABLE t1 (a VARCHAR(32) CHARACTER SET ucs2 COLLATE ucs2_general_mysql500_ci);
|
||||
INSERT INTO t1 VALUES ('s'),('z'),(_latin1 0xDF);
|
||||
SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a ORDER BY a;
|
||||
SELECT a, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1 ORDER BY a;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
|
@ -399,3 +399,56 @@ DROP TABLE maria050313_utf8_croatian_ci;
|
|||
DROP TABLE maria050533_xxx_croatian_ci;
|
||||
DROP TABLE maria100004_xxx_croatian_ci;
|
||||
DROP TABLE mysql050614_xxx_croatian_ci;
|
||||
#
|
||||
# Start of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-30746 Regression in ucs2_general_mysql500_ci
|
||||
#
|
||||
SET NAMES utf8mb3;
|
||||
SHOW CREATE TABLE t1;
|
||||
ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.t1` FORCE" or dump/reload to fix it!
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.t1` FORCE" or dump/reload to fix it!
|
||||
SELECT * FROM t1 IGNORE KEY(a);
|
||||
ERROR HY000: Table rebuild required. Please do "ALTER TABLE `test.t1` FORCE" or dump/reload to fix it!
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check error Upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
||||
REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
SELECT a, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1 ORDER BY a;
|
||||
a HEX(a) HEX(WEIGHT_STRING(a))
|
||||
s 0073 0053
|
||||
z 007A 005A
|
||||
ß 00DF 00DF
|
||||
SELECT a, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1 FORCE KEY(a) ORDER BY a;
|
||||
a HEX(a) HEX(WEIGHT_STRING(a))
|
||||
s 0073 0053
|
||||
z 007A 005A
|
||||
ß 00DF 00DF
|
||||
SELECT a, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1 IGNORE KEY(a) ORDER BY a;
|
||||
a HEX(a) HEX(WEIGHT_STRING(a))
|
||||
s 0073 0053
|
||||
z 007A 005A
|
||||
ß 00DF 00DF
|
||||
SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a ORDER BY a;
|
||||
GROUP_CONCAT(a)
|
||||
s
|
||||
z
|
||||
ß
|
||||
SELECT GROUP_CONCAT(a) FROM t1 IGNORE KEY(a) GROUP BY a ORDER BY a;
|
||||
GROUP_CONCAT(a)
|
||||
s
|
||||
z
|
||||
ß
|
||||
SELECT GROUP_CONCAT(a) FROM t1 FORCE KEY(a) GROUP BY a ORDER BY a;
|
||||
GROUP_CONCAT(a)
|
||||
s
|
||||
z
|
||||
ß
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
|
|
@ -203,3 +203,38 @@ DROP TABLE maria050313_utf8_croatian_ci;
|
|||
DROP TABLE maria050533_xxx_croatian_ci;
|
||||
DROP TABLE maria100004_xxx_croatian_ci;
|
||||
DROP TABLE mysql050614_xxx_croatian_ci;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30746 Regression in ucs2_general_mysql500_ci
|
||||
--echo #
|
||||
|
||||
SET NAMES utf8mb3;
|
||||
|
||||
copy_file std_data/ctype_upgrade/mariadb100428_ucs2_general_ci.frm $MYSQLD_DATADIR/test/t1.frm;
|
||||
copy_file std_data/ctype_upgrade/mariadb100428_ucs2_general_ci.MYD $MYSQLD_DATADIR/test/t1.MYD;
|
||||
copy_file std_data/ctype_upgrade/mariadb100428_ucs2_general_ci.MYI $MYSQLD_DATADIR/test/t1.MYI;
|
||||
|
||||
--error ER_TABLE_NEEDS_REBUILD
|
||||
SHOW CREATE TABLE t1;
|
||||
--error ER_TABLE_NEEDS_REBUILD
|
||||
SELECT * FROM t1;
|
||||
--error ER_TABLE_NEEDS_REBUILD
|
||||
SELECT * FROM t1 IGNORE KEY(a);
|
||||
CHECK TABLE t1;
|
||||
REPAIR TABLE t1;
|
||||
SELECT a, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1 ORDER BY a;
|
||||
SELECT a, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1 FORCE KEY(a) ORDER BY a;
|
||||
SELECT a, HEX(a), HEX(WEIGHT_STRING(a)) FROM t1 IGNORE KEY(a) ORDER BY a;
|
||||
SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a ORDER BY a;
|
||||
SELECT GROUP_CONCAT(a) FROM t1 IGNORE KEY(a) GROUP BY a ORDER BY a;
|
||||
SELECT GROUP_CONCAT(a) FROM t1 FORCE KEY(a) GROUP BY a ORDER BY a;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
|
@ -3689,3 +3689,485 @@ drop procedure sp2;
|
|||
drop view v, v2;
|
||||
drop table t1,t2;
|
||||
# End of 10.2 tests
|
||||
#
|
||||
# MDEV-30706: view defined as select with implicit grouping and
|
||||
# a set function used in a subquery
|
||||
#
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t1 VALUES (1,1), (2,2);
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t2 VALUES (1,1), (3,3);
|
||||
CREATE TABLE t3 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t3 VALUES (2,2), (4,4), (7,7);
|
||||
CREATE TABLE t4 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t4 VALUES (2,2), (5,5), (7,7);
|
||||
CREATE VIEW v AS SELECT
|
||||
(SELECT SUM(t4.b) FROM t1, t2 WHERE t1.a = t2.b GROUP BY t1.a) AS m
|
||||
FROM t3, t4
|
||||
WHERE t3.a = t4.b;
|
||||
SELECT
|
||||
(SELECT SUM(t4.b) FROM t1, t2 WHERE t1.a = t2.b GROUP BY t1.a) AS m
|
||||
FROM t3, t4
|
||||
WHERE t3.a = t4.b;
|
||||
m
|
||||
9
|
||||
SELECT * FROM v;
|
||||
m
|
||||
9
|
||||
WITH cte AS ( SELECT
|
||||
(SELECT SUM(t4.b) FROM t1, t2 WHERE t1.a = t2.b GROUP BY t1.a) AS m
|
||||
FROM t3, t4
|
||||
WHERE t3.a = t4.b ) SELECT * FROM cte;
|
||||
m
|
||||
9
|
||||
EXPLAIN SELECT
|
||||
(SELECT SUM(t4.b) FROM t1, t2 WHERE t1.a = t2.b GROUP BY t1.a) AS m
|
||||
FROM t3, t4
|
||||
WHERE t3.a = t4.b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 4 test.t4.b 1 Using index
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using temporary; Using filesort
|
||||
2 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 test.t2.b 1 Using index
|
||||
EXPLAIN SELECT * FROM v;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||
2 SUBQUERY t4 ALL NULL NULL NULL NULL 3 Using where
|
||||
2 SUBQUERY t3 eq_ref PRIMARY PRIMARY 4 test.t4.b 1 Using index
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using temporary; Using filesort
|
||||
3 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 test.t2.b 1 Using index
|
||||
EXPLAIN WITH cte AS ( SELECT
|
||||
(SELECT SUM(t4.b) FROM t1, t2 WHERE t1.a = t2.b GROUP BY t1.a) AS m
|
||||
FROM t3, t4
|
||||
WHERE t3.a = t4.b ) SELECT * FROM cte;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||
2 DERIVED t4 ALL NULL NULL NULL NULL 3 Using where
|
||||
2 DERIVED t3 eq_ref PRIMARY PRIMARY 4 test.t4.b 1 Using index
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using temporary; Using filesort
|
||||
3 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 test.t2.b 1 Using index
|
||||
PREPARE stmt FROM "SELECT
|
||||
(SELECT SUM(t4.b) FROM t1, t2 WHERE t1.a = t2.b GROUP BY t1.a) AS m
|
||||
FROM t3, t4
|
||||
WHERE t3.a = t4.b";
|
||||
execute stmt;
|
||||
m
|
||||
9
|
||||
execute stmt;
|
||||
m
|
||||
9
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "SELECT * FROM v";
|
||||
execute stmt;
|
||||
m
|
||||
9
|
||||
execute stmt;
|
||||
m
|
||||
9
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "WITH cte AS ( SELECT
|
||||
(SELECT SUM(t4.b) FROM t1, t2 WHERE t1.a = t2.b GROUP BY t1.a) AS m
|
||||
FROM t3, t4
|
||||
WHERE t3.a = t4.b ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
m
|
||||
9
|
||||
execute stmt;
|
||||
m
|
||||
9
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
#
|
||||
# MDEV-29224: view defined as select with implicit grouping and
|
||||
# a set function used in a subquery
|
||||
#
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 (f2 int);
|
||||
INSERT INTO t2 VALUES (3);
|
||||
CREATE VIEW v AS SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
||||
SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
SELECT * FROM v;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
WITH cte AS ( SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1 ) SELECT * FROM cte;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
EXPLAIN SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1
|
||||
EXPLAIN SELECT * FROM v;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2
|
||||
3 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1
|
||||
EXPLAIN WITH cte AS ( SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1 ) SELECT * FROM cte;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 2
|
||||
3 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1
|
||||
PREPARE stmt FROM "SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1";
|
||||
execute stmt;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
execute stmt;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "SELECT * FROM v";
|
||||
execute stmt;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
execute stmt;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "WITH cte AS ( SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1 ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
execute stmt;
|
||||
( SELECT MAX(f1) FROM t2 )
|
||||
2
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-28573: view defined as select with implicit grouping and
|
||||
# a set function used in a subquery
|
||||
#
|
||||
CREATE TABLE t1 (a INTEGER, b INTEGER);
|
||||
CREATE TABLE t2 (c INTEGER);
|
||||
INSERT INTO t1 VALUES (1,11), (2,22), (2,22);
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
CREATE VIEW v1 AS SELECT (SELECT COUNT(b) FROM t2) FROM t1;
|
||||
CREATE VIEW v2 AS SELECT (SELECT COUNT(b) FROM t2 WHERE c > 1) FROM t1;
|
||||
SELECT (SELECT COUNT(b) FROM t2) FROM t1;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
SELECT * FROM v1;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
WITH cte AS ( SELECT (SELECT COUNT(b) FROM t2) FROM t1 ) SELECT * FROM cte;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
SELECT (SELECT COUNT(b) FROM t2 WHERE c > 1) FROM t1;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
SELECT * FROM v2;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
WITH cte AS ( SELECT (SELECT COUNT(b) FROM t2 WHERE c > 1) FROM t1 ) SELECT * FROM cte;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
EXPLAIN SELECT (SELECT COUNT(b) FROM t2) FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
|
||||
EXPLAIN SELECT * FROM v1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||
2 SUBQUERY t1 ALL NULL NULL NULL NULL 3
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
|
||||
EXPLAIN WITH cte AS ( SELECT (SELECT COUNT(b) FROM t2) FROM t1 ) SELECT * FROM cte;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 3
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
|
||||
PREPARE stmt FROM "SELECT (SELECT COUNT(b) FROM t2) FROM t1";
|
||||
execute stmt;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
execute stmt;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "SELECT * FROM v1";
|
||||
execute stmt;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
execute stmt;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "WITH cte AS ( SELECT (SELECT COUNT(b) FROM t2) FROM t1 ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
execute stmt;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "SELECT (SELECT COUNT(b) FROM t2 WHERE c > 1) FROM t1";
|
||||
execute stmt;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
execute stmt;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "SELECT * FROM v2";
|
||||
execute stmt;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
execute stmt;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "WITH cte AS ( SELECT (SELECT COUNT(b) FROM t2 WHERE c > 1) FROM t1 ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
execute stmt;
|
||||
(SELECT COUNT(b) FROM t2 WHERE c > 1)
|
||||
3
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-28570: VIEW with WHERE containing subquery
|
||||
# with set function aggregated in query
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
CREATE TABLE t2 (c int, d int);
|
||||
INSERT INTO t1 VALUES
|
||||
(1,10), (2,10), (1,20), (2,20), (3,20), (2,30), (4,40);
|
||||
INSERT INTO t2 VALUES
|
||||
(2,10), (2,20), (4,10), (5,10), (3,20), (2,40);
|
||||
CREATE VIEW v AS SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20);
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20);
|
||||
a
|
||||
2
|
||||
4
|
||||
SELECT * FROM v;
|
||||
a
|
||||
2
|
||||
4
|
||||
WITH cte AS ( SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20) ) SELECT * FROM cte;
|
||||
a
|
||||
2
|
||||
4
|
||||
EXPLAIN SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 7 Using temporary; Using filesort
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 6
|
||||
EXPLAIN SELECT * FROM v;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 7
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 7 Using temporary; Using filesort
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 6
|
||||
EXPLAIN WITH cte AS ( SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20) ) SELECT * FROM cte;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 7
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 7 Using temporary; Using filesort
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 6
|
||||
PREPARE stmt FROM "SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20)";
|
||||
execute stmt;
|
||||
a
|
||||
2
|
||||
4
|
||||
execute stmt;
|
||||
a
|
||||
2
|
||||
4
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "SELECT * FROM v";
|
||||
execute stmt;
|
||||
a
|
||||
2
|
||||
4
|
||||
execute stmt;
|
||||
a
|
||||
2
|
||||
4
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "WITH cte AS ( SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20) ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
a
|
||||
2
|
||||
4
|
||||
execute stmt;
|
||||
a
|
||||
2
|
||||
4
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-28571: VIEW with select list containing subquery
|
||||
# with set function aggregated in query
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
CREATE TABLE t2 (m int, n int);
|
||||
INSERT INTO t1 VALUES (2,2), (2,2), (3,3), (3,3), (3,3), (4,4);
|
||||
INSERT INTO t2 VALUES (1,11), (2,22), (3,32), (4,44), (4,44);
|
||||
CREATE VIEW v AS SELECT (SELECT GROUP_CONCAT(COUNT(a)) FROM t2 WHERE m = a) AS c
|
||||
FROM t1
|
||||
GROUP BY a;
|
||||
SELECT (SELECT GROUP_CONCAT(COUNT(a)) FROM t2 WHERE m = a) AS c
|
||||
FROM t1
|
||||
GROUP BY a;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
SELECT * FROM v;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
WITH cte AS ( SELECT (SELECT GROUP_CONCAT(COUNT(a)) FROM t2 WHERE m = a) AS c
|
||||
FROM t1
|
||||
GROUP BY a ) SELECT * FROM cte;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
EXPLAIN SELECT (SELECT GROUP_CONCAT(COUNT(a)) FROM t2 WHERE m = a) AS c
|
||||
FROM t1
|
||||
GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 6 Using temporary; Using filesort
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 5 Using where
|
||||
EXPLAIN SELECT * FROM v;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 6
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 6 Using temporary; Using filesort
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 5 Using where
|
||||
EXPLAIN WITH cte AS ( SELECT (SELECT GROUP_CONCAT(COUNT(a)) FROM t2 WHERE m = a) AS c
|
||||
FROM t1
|
||||
GROUP BY a ) SELECT * FROM cte;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 6
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 6 Using temporary; Using filesort
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 5 Using where
|
||||
PREPARE stmt FROM "SELECT (SELECT GROUP_CONCAT(COUNT(a)) FROM t2 WHERE m = a) AS c
|
||||
FROM t1
|
||||
GROUP BY a";
|
||||
execute stmt;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
execute stmt;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "SELECT * FROM v";
|
||||
execute stmt;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
execute stmt;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
DEALLOCATE PREPARE stmt;
|
||||
PREPARE stmt FROM "WITH cte AS ( SELECT (SELECT GROUP_CONCAT(COUNT(a)) FROM t2 WHERE m = a) AS c
|
||||
FROM t1
|
||||
GROUP BY a ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
execute stmt;
|
||||
c
|
||||
2
|
||||
3
|
||||
1,1
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# MDEV-30668: VIEW with WHERE containing nested subquery
|
||||
# with set function aggregated in outer subquery
|
||||
#
|
||||
create table t1 (a int);
|
||||
insert into t1 values (3), (7), (1);
|
||||
create table t2 (b int);
|
||||
insert into t2 values (2), (1), (4), (7);
|
||||
create table t3 (a int, b int);
|
||||
insert into t3 values (2,10), (7,30), (2,30), (1,10), (7,40);
|
||||
create view v as select * from t1
|
||||
where t1.a in (select t3.a from t3 group by t3.a
|
||||
having t3.a > any (select t2.b from t2
|
||||
where t2.b*10 < sum(t3.b)));
|
||||
select * from t1
|
||||
where t1.a in (select t3.a from t3 group by t3.a
|
||||
having t3.a > any (select t2.b from t2
|
||||
where t2.b*10 < sum(t3.b)));
|
||||
a
|
||||
7
|
||||
select * from v;
|
||||
a
|
||||
7
|
||||
with cte as ( select * from t1
|
||||
where t1.a in (select t3.a from t3 group by t3.a
|
||||
having t3.a > any (select t2.b from t2
|
||||
where t2.b*10 < sum(t3.b))) ) select * from cte;
|
||||
a
|
||||
7
|
||||
explain select * from t1
|
||||
where t1.a in (select t3.a from t3 group by t3.a
|
||||
having t3.a > any (select t2.b from t2
|
||||
where t2.b*10 < sum(t3.b)));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 test.t1.a 1
|
||||
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using temporary
|
||||
3 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 4 Using where
|
||||
explain select * from v;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 test.t1.a 1
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using temporary
|
||||
4 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 4 Using where
|
||||
explain with cte as ( select * from t1
|
||||
where t1.a in (select t3.a from t3 group by t3.a
|
||||
having t3.a > any (select t2.b from t2
|
||||
where t2.b*10 < sum(t3.b))) ) select * from cte;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 test.t1.a 1
|
||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using temporary
|
||||
4 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 4 Using where
|
||||
prepare stmt from "select * from t1
|
||||
where t1.a in (select t3.a from t3 group by t3.a
|
||||
having t3.a > any (select t2.b from t2
|
||||
where t2.b*10 < sum(t3.b)))";
|
||||
execute stmt;
|
||||
a
|
||||
7
|
||||
execute stmt;
|
||||
a
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from "select * from v";
|
||||
execute stmt;
|
||||
a
|
||||
7
|
||||
execute stmt;
|
||||
a
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from "with cte as ( select * from t1
|
||||
where t1.a in (select t3.a from t3 group by t3.a
|
||||
having t3.a > any (select t2.b from t2
|
||||
where t2.b*10 < sum(t3.b))) ) select * from cte";
|
||||
execute stmt;
|
||||
a
|
||||
7
|
||||
execute stmt;
|
||||
a
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
drop view v;
|
||||
drop table t1,t2,t3;
|
||||
# End of 10.4 tests
|
||||
|
|
|
@ -2455,3 +2455,300 @@ drop view v, v2;
|
|||
drop table t1,t2;
|
||||
|
||||
--echo # End of 10.2 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30706: view defined as select with implicit grouping and
|
||||
--echo # a set function used in a subquery
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t1 VALUES (1,1), (2,2);
|
||||
CREATE TABLE t2 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t2 VALUES (1,1), (3,3);
|
||||
CREATE TABLE t3 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t3 VALUES (2,2), (4,4), (7,7);
|
||||
CREATE TABLE t4 (a INT PRIMARY KEY, b INT);
|
||||
INSERT INTO t4 VALUES (2,2), (5,5), (7,7);
|
||||
|
||||
let $q=
|
||||
SELECT
|
||||
(SELECT SUM(t4.b) FROM t1, t2 WHERE t1.a = t2.b GROUP BY t1.a) AS m
|
||||
FROM t3, t4
|
||||
WHERE t3.a = t4.b;
|
||||
|
||||
eval CREATE VIEW v AS $q;
|
||||
|
||||
eval $q;
|
||||
SELECT * FROM v;
|
||||
eval WITH cte AS ( $q ) SELECT * FROM cte;
|
||||
|
||||
eval EXPLAIN $q;
|
||||
EXPLAIN SELECT * FROM v;
|
||||
eval EXPLAIN WITH cte AS ( $q ) SELECT * FROM cte;
|
||||
|
||||
eval PREPARE stmt FROM "$q";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "SELECT * FROM v";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "WITH cte AS ( $q ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-29224: view defined as select with implicit grouping and
|
||||
--echo # a set function used in a subquery
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
CREATE TABLE t2 (f2 int);
|
||||
INSERT INTO t2 VALUES (3);
|
||||
|
||||
let $q=
|
||||
SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
||||
|
||||
eval CREATE VIEW v AS $q;
|
||||
|
||||
eval $q;
|
||||
SELECT * FROM v;
|
||||
eval WITH cte AS ( $q ) SELECT * FROM cte;
|
||||
|
||||
eval EXPLAIN $q;
|
||||
EXPLAIN SELECT * FROM v;
|
||||
eval EXPLAIN WITH cte AS ( $q ) SELECT * FROM cte;
|
||||
|
||||
eval PREPARE stmt FROM "$q";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "SELECT * FROM v";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "WITH cte AS ( $q ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-28573: view defined as select with implicit grouping and
|
||||
--echo # a set function used in a subquery
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INTEGER, b INTEGER);
|
||||
CREATE TABLE t2 (c INTEGER);
|
||||
INSERT INTO t1 VALUES (1,11), (2,22), (2,22);
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
|
||||
let $q1=
|
||||
SELECT (SELECT COUNT(b) FROM t2) FROM t1;
|
||||
let $q2=
|
||||
SELECT (SELECT COUNT(b) FROM t2 WHERE c > 1) FROM t1;
|
||||
|
||||
eval CREATE VIEW v1 AS $q1;
|
||||
eval CREATE VIEW v2 AS $q2;
|
||||
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
eval $q1;
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
SELECT * FROM v1;
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
eval WITH cte AS ( $q1 ) SELECT * FROM cte;
|
||||
eval $q2;
|
||||
SELECT * FROM v2;
|
||||
eval WITH cte AS ( $q2 ) SELECT * FROM cte;
|
||||
|
||||
eval EXPLAIN $q1;
|
||||
EXPLAIN SELECT * FROM v1;
|
||||
eval EXPLAIN WITH cte AS ( $q1 ) SELECT * FROM cte;
|
||||
|
||||
eval PREPARE stmt FROM "$q1";
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
execute stmt;
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "SELECT * FROM v1";
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
execute stmt;
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "WITH cte AS ( $q1 ) SELECT * FROM cte";
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
execute stmt;
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "$q2";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "SELECT * FROM v2";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "WITH cte AS ( $q2 ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-28570: VIEW with WHERE containing subquery
|
||||
--echo # with set function aggregated in query
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
CREATE TABLE t2 (c int, d int);
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
(1,10), (2,10), (1,20), (2,20), (3,20), (2,30), (4,40);
|
||||
INSERT INTO t2 VALUES
|
||||
(2,10), (2,20), (4,10), (5,10), (3,20), (2,40);
|
||||
|
||||
let $q=
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20);
|
||||
|
||||
eval CREATE VIEW v AS $q;
|
||||
|
||||
eval $q;
|
||||
SELECT * FROM v;
|
||||
eval WITH cte AS ( $q ) SELECT * FROM cte;
|
||||
|
||||
eval EXPLAIN $q;
|
||||
EXPLAIN SELECT * FROM v;
|
||||
eval EXPLAIN WITH cte AS ( $q ) SELECT * FROM cte;
|
||||
|
||||
eval PREPARE stmt FROM "$q";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "SELECT * FROM v";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "WITH cte AS ( $q ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-28571: VIEW with select list containing subquery
|
||||
--echo # with set function aggregated in query
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
CREATE TABLE t2 (m int, n int);
|
||||
INSERT INTO t1 VALUES (2,2), (2,2), (3,3), (3,3), (3,3), (4,4);
|
||||
INSERT INTO t2 VALUES (1,11), (2,22), (3,32), (4,44), (4,44);
|
||||
|
||||
let $q=
|
||||
SELECT (SELECT GROUP_CONCAT(COUNT(a)) FROM t2 WHERE m = a) AS c
|
||||
FROM t1
|
||||
GROUP BY a;
|
||||
|
||||
eval CREATE VIEW v AS $q;
|
||||
|
||||
eval $q;
|
||||
SELECT * FROM v;
|
||||
eval WITH cte AS ( $q ) SELECT * FROM cte;
|
||||
|
||||
eval EXPLAIN $q;
|
||||
EXPLAIN SELECT * FROM v;
|
||||
eval EXPLAIN WITH cte AS ( $q ) SELECT * FROM cte;
|
||||
|
||||
eval PREPARE stmt FROM "$q";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "SELECT * FROM v";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
eval PREPARE stmt FROM "WITH cte AS ( $q ) SELECT * FROM cte";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
DROP VIEW v;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30668: VIEW with WHERE containing nested subquery
|
||||
--echo # with set function aggregated in outer subquery
|
||||
--echo #
|
||||
|
||||
create table t1 (a int);
|
||||
insert into t1 values (3), (7), (1);
|
||||
|
||||
create table t2 (b int);
|
||||
insert into t2 values (2), (1), (4), (7);
|
||||
|
||||
create table t3 (a int, b int);
|
||||
insert into t3 values (2,10), (7,30), (2,30), (1,10), (7,40);
|
||||
|
||||
let $q=
|
||||
select * from t1
|
||||
where t1.a in (select t3.a from t3 group by t3.a
|
||||
having t3.a > any (select t2.b from t2
|
||||
where t2.b*10 < sum(t3.b)));
|
||||
eval create view v as $q;
|
||||
|
||||
eval $q;
|
||||
eval select * from v;
|
||||
eval with cte as ( $q ) select * from cte;
|
||||
|
||||
eval explain $q;
|
||||
eval explain select * from v;
|
||||
eval explain with cte as ( $q ) select * from cte;
|
||||
|
||||
eval prepare stmt from "$q";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
eval prepare stmt from "select * from v";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
eval prepare stmt from "with cte as ( $q ) select * from cte";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
drop view v;
|
||||
drop table t1,t2,t3;
|
||||
|
||||
--echo # End of 10.4 tests
|
||||
|
|
|
@ -1071,6 +1071,43 @@ UNION
|
|||
drop table t1;
|
||||
End of 5.5 tests
|
||||
#
|
||||
# MDEV-20057 Distinct SUM on CROSS JOIN and grouped returns wrong result
|
||||
#
|
||||
create table t1 (c int, d int);
|
||||
insert into t1 values (5, 1), (0, 3);
|
||||
select distinct sum(distinct 1), sum(t1.d) > 2 from (t1 e join t1) group by t1.c;
|
||||
sum(distinct 1) sum(t1.d) > 2
|
||||
1 1
|
||||
1 0
|
||||
select distinct sum(distinct 1), sum(t1.d) > 2, t1.c from (t1 e join t1) group by t1.c;
|
||||
sum(distinct 1) sum(t1.d) > 2 c
|
||||
1 1 0
|
||||
1 0 5
|
||||
insert into t1 values (6,6);
|
||||
select distinct sum(distinct 1), sum(t1.d) > 5 from (t1 e join t1) group by t1.c;
|
||||
sum(distinct 1) sum(t1.d) > 5
|
||||
1 1
|
||||
1 0
|
||||
select distinct sum(distinct 1), sum(t1.d) > 5, t1.c from (t1 e join t1) group by t1.c;
|
||||
sum(distinct 1) sum(t1.d) > 5 c
|
||||
1 1 0
|
||||
1 0 5
|
||||
1 1 6
|
||||
set @@sort_buffer_size=1024;
|
||||
insert into t1 select -seq,-seq from seq_1_to_100;
|
||||
select distinct sum(distinct 1), sum(t1.d) > 2, length(group_concat(t1.d)) > 1000 from (t1 e join t1) group by t1.c having t1.c > -2 ;
|
||||
sum(distinct 1) sum(t1.d) > 2 length(group_concat(t1.d)) > 1000
|
||||
1 0 0
|
||||
1 1 0
|
||||
select distinct sum(distinct 1), sum(t1.d) > 2, length(group_concat(t1.d)) > 1000,t1.c from (t1 e join t1) group by t1.c having t1.c > -2;
|
||||
sum(distinct 1) sum(t1.d) > 2 length(group_concat(t1.d)) > 1000 c
|
||||
1 0 0 -1
|
||||
1 1 0 0
|
||||
1 1 0 5
|
||||
1 1 0 6
|
||||
drop table t1;
|
||||
# End of 10.4 tests
|
||||
#
|
||||
# MDEV-27382: OFFSET is ignored when it is combined with the DISTINCT, IN() and JOIN
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#
|
||||
|
||||
--source include/default_optimizer_switch.inc
|
||||
--source include/have_sequence.inc
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3;
|
||||
--enable_warnings
|
||||
|
@ -819,6 +820,28 @@ drop table t1;
|
|||
|
||||
--echo End of 5.5 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-20057 Distinct SUM on CROSS JOIN and grouped returns wrong result
|
||||
--echo #
|
||||
|
||||
create table t1 (c int, d int);
|
||||
insert into t1 values (5, 1), (0, 3);
|
||||
select distinct sum(distinct 1), sum(t1.d) > 2 from (t1 e join t1) group by t1.c;
|
||||
select distinct sum(distinct 1), sum(t1.d) > 2, t1.c from (t1 e join t1) group by t1.c;
|
||||
|
||||
insert into t1 values (6,6);
|
||||
select distinct sum(distinct 1), sum(t1.d) > 5 from (t1 e join t1) group by t1.c;
|
||||
select distinct sum(distinct 1), sum(t1.d) > 5, t1.c from (t1 e join t1) group by t1.c;
|
||||
|
||||
# Force usage of remove_dup_with_compare() algorithm
|
||||
set @@sort_buffer_size=1024;
|
||||
insert into t1 select -seq,-seq from seq_1_to_100;
|
||||
select distinct sum(distinct 1), sum(t1.d) > 2, length(group_concat(t1.d)) > 1000 from (t1 e join t1) group by t1.c having t1.c > -2 ;
|
||||
select distinct sum(distinct 1), sum(t1.d) > 2, length(group_concat(t1.d)) > 1000,t1.c from (t1 e join t1) group by t1.c having t1.c > -2;
|
||||
drop table t1;
|
||||
|
||||
--echo # End of 10.4 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-27382: OFFSET is ignored when it is combined with the DISTINCT, IN() and JOIN
|
||||
--echo #
|
||||
|
|
|
@ -157,9 +157,13 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
|
|||
explain extended update t2 set b=3 where a in (3,4);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`b` = 3 where `test`.`t2`.`a` in (3,4)
|
||||
explain extended delete from t2 where a in (3,4);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` where `test`.`t2`.`a` in (3,4)
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Check the special case where partition pruning removed all partitions
|
||||
|
|
|
@ -1443,16 +1443,11 @@ FROM derived1 AS X
|
|||
WHERE
|
||||
X.int_nokey < 61
|
||||
GROUP BY pk
|
||||
LIMIT 1)
|
||||
LIMIT 1) AS m
|
||||
FROM D AS X
|
||||
WHERE X.int_key < 13
|
||||
GROUP BY int_nokey LIMIT 1;
|
||||
(SELECT COUNT( int_nokey )
|
||||
FROM derived1 AS X
|
||||
WHERE
|
||||
X.int_nokey < 61
|
||||
GROUP BY pk
|
||||
LIMIT 1)
|
||||
m
|
||||
1
|
||||
DROP TABLE derived1;
|
||||
DROP TABLE D;
|
||||
|
|
|
@ -579,8 +579,6 @@ DROP TABLE t1;
|
|||
#
|
||||
# Bug #16792 query with subselect, join, and group not returning proper values
|
||||
#
|
||||
#enable after fix MDEV-28573
|
||||
--disable_view_protocol
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1,1),(1,2),(2,3);
|
||||
|
||||
|
@ -591,7 +589,6 @@ SELECT AVG(2), BIT_AND(2), BIT_OR(2), BIT_XOR(2), COUNT(*), COUNT(12),
|
|||
COUNT(DISTINCT 12), MIN(2),MAX(2),STD(2), VARIANCE(2),SUM(2),
|
||||
GROUP_CONCAT(2),GROUP_CONCAT(DISTINCT 2);
|
||||
DROP TABLE t1;
|
||||
--enable_view_protocol
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
|
@ -623,13 +620,10 @@ drop table t1, t2, t3;
|
|||
#
|
||||
# BUG#3190, WL#1639: Standard Deviation STDDEV - 2 different calculations
|
||||
#
|
||||
#enable after fix MDEV-28573
|
||||
--disable_view_protocol
|
||||
CREATE TABLE t1 (id int(11),value1 float(10,2));
|
||||
INSERT INTO t1 VALUES (1,0.00),(1,1.00), (1,2.00), (2,10.00), (2,11.00), (2,12.00), (2,13.00);
|
||||
select id, stddev_pop(value1), var_pop(value1), stddev_samp(value1), var_samp(value1) from t1 group by id;
|
||||
DROP TABLE t1;
|
||||
--enable_view_protocol
|
||||
|
||||
#
|
||||
# BUG#8464 decimal AVG returns incorrect result
|
||||
|
@ -966,22 +960,19 @@ INSERT INTO D VALUES
|
|||
(83,45,4,repeat(' X', 42)),
|
||||
(105,53,12,NULL);
|
||||
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
SELECT
|
||||
(SELECT COUNT( int_nokey )
|
||||
FROM derived1 AS X
|
||||
WHERE
|
||||
X.int_nokey < 61
|
||||
GROUP BY pk
|
||||
LIMIT 1)
|
||||
LIMIT 1) AS m
|
||||
FROM D AS X
|
||||
WHERE X.int_key < 13
|
||||
GROUP BY int_nokey LIMIT 1;
|
||||
|
||||
DROP TABLE derived1;
|
||||
DROP TABLE D;
|
||||
--enable_view_protocol
|
||||
|
||||
#
|
||||
# Bug #39656: Behaviour different for agg functions with & without where -
|
||||
|
|
|
@ -1449,6 +1449,13 @@ JSON_LOOSE(JSON_EXTRACT(a, '$**.analyzing_range_alternatives'))
|
|||
[{"range_scan_alternatives": [{"index": "a_b", "ranges": ["2 <= a <= 2 AND 4 <= b <= 4", "123"], "rowid_ordered": true, "using_mrr": false, "index_only": true, "rows": 1, "cost": 1.1752, "chosen": true}], "analyzing_roworder_intersect": {"cause": "too few roworder scans"}, "analyzing_index_merge_union": [], "test_one_line_array": ["123"]}]
|
||||
drop table t200;
|
||||
#
|
||||
# MDEV-24538: JSON_LENGTH does not return error upon wrong number of parameters
|
||||
#
|
||||
SELECT JSON_LENGTH('{"a":"b"}','$','$', 'foo');
|
||||
ERROR 42000: Incorrect parameter count in the call to native function 'json_length'
|
||||
SELECT JSON_LENGTH();
|
||||
ERROR 42000: Incorrect parameter count in the call to native function 'JSON_LENGTH'
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
#
|
||||
|
|
|
@ -665,6 +665,7 @@ SELECT 1 + JSON_VALUE('{"nulltest": null}', '$.nulltest');
|
|||
SELECT NULL;
|
||||
SELECT JSON_EXTRACT('{"a":null, "b":10, "c":"null"}', '$.a');
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.3 tests
|
||||
--echo #
|
||||
|
@ -917,6 +918,14 @@ select JSON_PRETTY(JSON_EXTRACT(a, '$**.analyzing_range_alternatives')) from t20
|
|||
select JSON_LOOSE(JSON_EXTRACT(a, '$**.analyzing_range_alternatives')) from t200;
|
||||
drop table t200;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-24538: JSON_LENGTH does not return error upon wrong number of parameters
|
||||
--echo #
|
||||
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
SELECT JSON_LENGTH('{"a":"b"}','$','$', 'foo');
|
||||
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||
SELECT JSON_LENGTH();
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
|
@ -5242,6 +5242,15 @@ DROP TABLE t1;
|
|||
# Start of 10.4 tests
|
||||
#
|
||||
#
|
||||
# MDEV-30351 crash in Item_func_left::val_str
|
||||
#
|
||||
SELECT WEIGHT_STRING('aa') IN (LEFT(WEIGHT_STRING('aaa'),4),'bbb') as expect_1;
|
||||
expect_1
|
||||
1
|
||||
SELECT UNHEX('0032') in (LEFT(UNHEX('003200'), 2),'dog') as expect_1;
|
||||
expect_1
|
||||
1
|
||||
#
|
||||
# MDEV-21841 CONV() function truncates the result type to 21 symbol.
|
||||
#
|
||||
CREATE TABLE t1(i BIGINT);
|
||||
|
|
|
@ -2277,16 +2277,22 @@ CREATE TABLE crash_test_2 (
|
|||
--echo # Cleanup
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.3 tests
|
||||
--echo #
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30351 crash in Item_func_left::val_str
|
||||
--echo #
|
||||
|
||||
SELECT WEIGHT_STRING('aa') IN (LEFT(WEIGHT_STRING('aaa'),4),'bbb') as expect_1;
|
||||
|
||||
SELECT UNHEX('0032') in (LEFT(UNHEX('003200'), 2),'dog') as expect_1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-21841 CONV() function truncates the result type to 21 symbol.
|
||||
--echo #
|
||||
|
|
|
@ -453,4 +453,13 @@ insert mysql.host values (1);
|
|||
flush privileges;
|
||||
ERROR HY000: Fatal error: mysql.host table is damaged or in unsupported 3.20 format
|
||||
drop table mysql.host;
|
||||
#
|
||||
# MDEV-30826 Invalid data on mysql.host segfaults the server after an upgrade to 10.4
|
||||
#
|
||||
create table mysql.host (host char(60) binary default '' not null, db char(64) binary 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, delete_priv enum('n','y') collate utf8_general_ci default 'n' not null, create_priv enum('n','y') collate utf8_general_ci default 'n' not null, drop_priv enum('n','y') collate utf8_general_ci default 'n' not null, grant_priv enum('n','y') collate utf8_general_ci default 'n' not null, references_priv enum('n','y') collate utf8_general_ci default 'n' not null, index_priv enum('n','y') collate utf8_general_ci default 'n' not null, alter_priv enum('n','y') collate utf8_general_ci default 'n' not null, create_tmp_table_priv enum('n','y') collate utf8_general_ci default 'n' not null, lock_tables_priv enum('n','y') collate utf8_general_ci default 'n' not null, create_view_priv enum('n','y') collate utf8_general_ci default 'n' not null, show_view_priv enum('n','y') collate utf8_general_ci default 'n' not null, create_routine_priv enum('n','y') collate utf8_general_ci default 'n' not null, alter_routine_priv enum('n','y') collate utf8_general_ci default 'n' not null, execute_priv enum('n','y') collate utf8_general_ci default 'n' not null, trigger_priv enum('n','y') collate utf8_general_ci default 'n' not null, primary key /*host*/ (host,db)) engine=myisam character set utf8 collate utf8_bin comment='host privileges; merged with database privileges';
|
||||
insert mysql.host values('10.5.0.0/255.255.0.0','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','N');
|
||||
flush privileges;
|
||||
drop table mysql.host;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
|
|
@ -408,4 +408,16 @@ insert mysql.host values (1);
|
|||
flush privileges;
|
||||
drop table mysql.host;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30826 Invalid data on mysql.host segfaults the server after an upgrade to 10.4
|
||||
--echo #
|
||||
|
||||
# from mysql_system_tables.sql in 10.3:
|
||||
create table mysql.host (host char(60) binary default '' not null, db char(64) binary 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, delete_priv enum('n','y') collate utf8_general_ci default 'n' not null, create_priv enum('n','y') collate utf8_general_ci default 'n' not null, drop_priv enum('n','y') collate utf8_general_ci default 'n' not null, grant_priv enum('n','y') collate utf8_general_ci default 'n' not null, references_priv enum('n','y') collate utf8_general_ci default 'n' not null, index_priv enum('n','y') collate utf8_general_ci default 'n' not null, alter_priv enum('n','y') collate utf8_general_ci default 'n' not null, create_tmp_table_priv enum('n','y') collate utf8_general_ci default 'n' not null, lock_tables_priv enum('n','y') collate utf8_general_ci default 'n' not null, create_view_priv enum('n','y') collate utf8_general_ci default 'n' not null, show_view_priv enum('n','y') collate utf8_general_ci default 'n' not null, create_routine_priv enum('n','y') collate utf8_general_ci default 'n' not null, alter_routine_priv enum('n','y') collate utf8_general_ci default 'n' not null, execute_priv enum('n','y') collate utf8_general_ci default 'n' not null, trigger_priv enum('n','y') collate utf8_general_ci default 'n' not null, primary key /*host*/ (host,db)) engine=myisam character set utf8 collate utf8_bin comment='host privileges; merged with database privileges';
|
||||
insert mysql.host values('10.5.0.0/255.255.0.0','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','N');
|
||||
flush privileges;
|
||||
drop table mysql.host;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
|
@ -1036,8 +1036,9 @@ FROM t1 AS t1_outer GROUP BY t1_outer.b;
|
|||
21
|
||||
21
|
||||
SELECT (SELECT SUM(t1_inner.a) FROM t1 AS t1_inner GROUP BY t1_inner.b LIMIT 1)
|
||||
AS m
|
||||
FROM t1 AS t1_outer;
|
||||
(SELECT SUM(t1_inner.a) FROM t1 AS t1_inner GROUP BY t1_inner.b LIMIT 1)
|
||||
m
|
||||
3
|
||||
3
|
||||
3
|
||||
|
@ -1277,12 +1278,9 @@ a
|
|||
select avg (
|
||||
(select
|
||||
(select sum(outr.a + innr.a) from t1 as innr limit 1) as tt
|
||||
from t1 as outr order by outr.a limit 1))
|
||||
from t1 as outr order by outr.a limit 1)) as m
|
||||
from t1 as most_outer;
|
||||
avg (
|
||||
(select
|
||||
(select sum(outr.a + innr.a) from t1 as innr limit 1) as tt
|
||||
from t1 as outr order by outr.a limit 1))
|
||||
m
|
||||
29.0000
|
||||
select avg (
|
||||
(select (
|
||||
|
|
|
@ -783,11 +783,9 @@ SELECT 1 FROM t1 as t1_outer GROUP BY a
|
|||
SELECT (SELECT SUM(t1_inner.a) FROM t1 AS t1_inner LIMIT 1)
|
||||
FROM t1 AS t1_outer GROUP BY t1_outer.b;
|
||||
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
SELECT (SELECT SUM(t1_inner.a) FROM t1 AS t1_inner GROUP BY t1_inner.b LIMIT 1)
|
||||
AS m
|
||||
FROM t1 AS t1_outer;
|
||||
--enable_view_protocol
|
||||
|
||||
--error ER_WRONG_FIELD_WITH_GROUP
|
||||
SELECT (SELECT SUM(t1_outer.a) FROM t1 AS t1_inner LIMIT 1)
|
||||
|
@ -863,6 +861,7 @@ DROP TABLE t1;
|
|||
--echo #
|
||||
--echo # Bug#27219: Aggregate functions in ORDER BY.
|
||||
--echo #
|
||||
|
||||
SET @save_sql_mode=@@sql_mode;
|
||||
SET @@sql_mode='ONLY_FULL_GROUP_BY';
|
||||
|
||||
|
@ -884,6 +883,8 @@ SELECT 1 FROM t1 ORDER BY SUM(a) + 1;
|
|||
--error 1140
|
||||
SELECT 1 FROM t1 ORDER BY SUM(a), b;
|
||||
|
||||
--disable_service_connection
|
||||
|
||||
--error 1140
|
||||
SELECT a FROM t1 ORDER BY COUNT(b);
|
||||
|
||||
|
@ -896,9 +897,6 @@ SELECT t1.a FROM t1 ORDER BY (SELECT SUM(t2.a) FROM t2 ORDER BY t2.a);
|
|||
--error 1140
|
||||
SELECT t1.a FROM t1 ORDER BY (SELECT t2.a FROM t2 ORDER BY SUM(t2.b) LIMIT 1);
|
||||
|
||||
#enable after fix MDEV-28570
|
||||
--disable_view_protocol
|
||||
|
||||
--error 1140
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a = (SELECT t2.a FROM t2 ORDER BY SUM(t2.b) LIMIT 1);
|
||||
|
@ -936,7 +934,7 @@ SELECT 1 FROM t1 GROUP BY t1.a
|
|||
SELECT 1 FROM t1 GROUP BY t1.a
|
||||
HAVING (SELECT AVG(t1.b + t2.b) FROM t2 ORDER BY t2.a LIMIT 1);
|
||||
|
||||
--enable_view_protocol
|
||||
--enable_service_connection
|
||||
|
||||
# Both SUMs are aggregated in the subquery, no mixture:
|
||||
SELECT t1.a FROM t1
|
||||
|
@ -961,18 +959,17 @@ SELECT t1.a, SUM(t1.b) FROM t1
|
|||
ORDER BY SUM(t2.b + t1.a) LIMIT 1)
|
||||
GROUP BY t1.a;
|
||||
|
||||
#enable after fix MDEV-28570, MDEV-28571
|
||||
--disable_view_protocol
|
||||
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING (1, 1) = (SELECT SUM(t1.a), t1.a FROM t2 LIMIT 1);
|
||||
|
||||
select avg (
|
||||
(select
|
||||
(select sum(outr.a + innr.a) from t1 as innr limit 1) as tt
|
||||
from t1 as outr order by outr.a limit 1))
|
||||
from t1 as outr order by outr.a limit 1)) as m
|
||||
from t1 as most_outer;
|
||||
|
||||
--disable_service_connection
|
||||
|
||||
--error 1140
|
||||
select avg (
|
||||
(select (
|
||||
|
@ -980,7 +977,7 @@ select avg (
|
|||
from t1 as outr order by count(outr.a) limit 1)) as tt
|
||||
from t1 as most_outer;
|
||||
|
||||
--enable_view_protocol
|
||||
--enable_service_connection
|
||||
|
||||
select (select sum(outr.a + t1.a) from t1 limit 1) as tt from t1 as outr order by outr.a;
|
||||
|
||||
|
@ -1378,7 +1375,7 @@ DROP TABLE t1;
|
|||
--echo # Bug#11765254 (58200): Assertion failed: param.sort_length when grouping
|
||||
--echo # by functions
|
||||
--echo #
|
||||
#createing view adds one new warning
|
||||
#creating view adds one new warning
|
||||
--disable_view_protocol
|
||||
|
||||
set tmp_memory_table_size=0;
|
||||
|
|
|
@ -63,6 +63,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN EXTENDED INSERT INTO t1(id1,val1) VALUES(9,'j') RETURNING id1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 INSERT t1 ALL NULL NULL NULL NULL NULL 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t1`(id1,val1) values (9,'j')
|
||||
EXPLAIN FORMAT="json" INSERT INTO t1(id1,val1) VALUES (10,'k') RETURNING id1;
|
||||
EXPLAIN
|
||||
{
|
||||
|
@ -151,6 +153,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN EXTENDED INSERT INTO t1 VALUES (17,'s'),(18,'t') RETURNING *;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 INSERT t1 ALL NULL NULL NULL NULL NULL 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t1` values (17,'s'),(18,'t')
|
||||
EXPLAIN FORMAT="json" INSERT INTO t1 VALUES(19,'u'),(20,'v') RETURNING id1;
|
||||
EXPLAIN
|
||||
{
|
||||
|
@ -236,6 +240,8 @@ EXPLAIN EXTENDED INSERT INTO ins_duplicate(id,val) VALUES (2,'b')
|
|||
ON DUPLICATE KEY UPDATE val='i' RETURNING val;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 INSERT ins_duplicate ALL NULL NULL NULL NULL NULL 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`ins_duplicate`(id,val) values (2,'b') on duplicate key update `test`.`ins_duplicate`.`val` = 'i'
|
||||
EXPLAIN FORMAT="json" INSERT INTO ins_duplicate(id,val) VALUES (2,'b')
|
||||
ON DUPLICATE KEY UPDATE val='j' RETURNING val;
|
||||
EXPLAIN
|
||||
|
@ -320,6 +326,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN EXTENDED INSERT INTO t1 SET id1=10, val1='j' RETURNING val1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 INSERT t1 ALL NULL NULL NULL NULL NULL 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t1`(id1,val1) values (10,'j')
|
||||
EXPLAIN FORMAT="json" INSERT INTO t1 SET id1=11, val1='k' RETURNING val1;
|
||||
EXPLAIN
|
||||
{
|
||||
|
@ -404,6 +412,8 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
EXPLAIN EXTENDED INSERT INTO t1 SELECT * FROM t1 WHERE id1=9 RETURNING val1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t1` select sql_buffer_result NULL AS `id1`,NULL AS `val1` from `test`.`t1` where 0
|
||||
EXPLAIN FORMAT="json" INSERT INTO t1 SELECT * FROM t1 WHERE id1=10 RETURNING val1;
|
||||
EXPLAIN
|
||||
{
|
||||
|
|
|
@ -10,3 +10,34 @@ foo
|
|||
root
|
||||
kill user foo@'127.0.0.1';
|
||||
drop user foo@'127.0.0.1';
|
||||
#
|
||||
# KILL USER and missing privileges
|
||||
#
|
||||
create user a@'127.0.0.1';
|
||||
create user b@'127.0.0.1';
|
||||
grant process on *.* to a@'127.0.0.1';
|
||||
grant select on *.* to b@'127.0.0.1';
|
||||
connect a,127.0.0.1,a;
|
||||
show grants;
|
||||
Grants for a@127.0.0.1
|
||||
GRANT PROCESS ON *.* TO `a`@`127.0.0.1`
|
||||
connect b,127.0.0.1,b;
|
||||
show processlist;
|
||||
Id User Host db Command Time State Info Progress
|
||||
# b # test # # starting show processlist #
|
||||
kill user a;
|
||||
kill user x;
|
||||
connection a;
|
||||
show processlist;
|
||||
Id User Host db Command Time State Info Progress
|
||||
# root # test # # # # #
|
||||
# a # test # # # # #
|
||||
# b # test # # # # #
|
||||
kill user b;
|
||||
ERROR HY000: Operation KILL USER failed for b@%
|
||||
connection default;
|
||||
drop user a@'127.0.0.1';
|
||||
drop user b@'127.0.0.1';
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
|
|
|
@ -27,3 +27,30 @@ let $wait_condition=
|
|||
--source include/wait_condition.inc
|
||||
drop user foo@'127.0.0.1';
|
||||
--enable_service_connection
|
||||
|
||||
--echo #
|
||||
--echo # KILL USER and missing privileges
|
||||
--echo #
|
||||
create user a@'127.0.0.1';
|
||||
create user b@'127.0.0.1';
|
||||
grant process on *.* to a@'127.0.0.1';
|
||||
grant select on *.* to b@'127.0.0.1';
|
||||
--connect a,127.0.0.1,a
|
||||
show grants;
|
||||
--connect b,127.0.0.1,b
|
||||
--replace_column 1 # 3 # 5 # 6 # 9 #
|
||||
show processlist;
|
||||
kill user a; # existing connection, but not visible to current_user
|
||||
kill user x; # not existing connection
|
||||
--connection a
|
||||
--replace_column 1 # 3 # 5 # 6 # 7 # 8 # 9 #
|
||||
show processlist;
|
||||
--error ER_KILL_DENIED_ERROR
|
||||
kill user b;
|
||||
--connection default
|
||||
drop user a@'127.0.0.1';
|
||||
drop user b@'127.0.0.1';
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.3 tests
|
||||
--echo #
|
||||
|
|
|
@ -306,3 +306,13 @@ date_format('2001-01-06', '%w %a %W', 'de_CH')
|
|||
select date_format('2001-09-01', '%c %b %M', 'de_CH');
|
||||
date_format('2001-09-01', '%c %b %M', 'de_CH')
|
||||
9 Sep September
|
||||
#
|
||||
# MDEV-30630 locale: Chinese error message for ZH_CN
|
||||
#
|
||||
SET lc_messages=ZH_CN;
|
||||
SELECT x;
|
||||
ERROR 42S22: 未知列'x'在'field list'
|
||||
SET lc_messages=DEFAULT;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
|
|
@ -181,3 +181,17 @@ select date_format('2001-10-01', '%c %b %M', 'rm_CH');
|
|||
select date_format('2001-12-01', '%c %b %M', 'rm_CH');
|
||||
select date_format('2001-01-06', '%w %a %W', 'de_CH');
|
||||
select date_format('2001-09-01', '%c %b %M', 'de_CH');
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30630 locale: Chinese error message for ZH_CN
|
||||
--echo #
|
||||
|
||||
SET lc_messages=ZH_CN;
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
SELECT x;
|
||||
|
||||
SET lc_messages=DEFAULT;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
|
@ -1253,7 +1253,7 @@ EXPLAIN
|
|||
DROP TABLES t1, t2;
|
||||
# End of 10.3 tests
|
||||
#
|
||||
# MDEV-28538: multi-table UPDATE/DELETE with possible exists-to-in
|
||||
# MDEV-30538: multi-table UPDATE/DELETE with possible exists-to-in
|
||||
#
|
||||
create table t1 (c1 int, c2 int, c3 int, index idx(c2));
|
||||
insert into t1 values
|
||||
|
|
|
@ -1134,7 +1134,7 @@ DROP TABLES t1, t2;
|
|||
--echo # End of 10.3 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-28538: multi-table UPDATE/DELETE with possible exists-to-in
|
||||
--echo # MDEV-30538: multi-table UPDATE/DELETE with possible exists-to-in
|
||||
--echo #
|
||||
|
||||
create table t1 (c1 int, c2 int, c3 int, index idx(c2));
|
||||
|
|
|
@ -17,6 +17,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t1 SET a = 10 WHERE a < 10;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` set `test`.`t1`.`a` = 10 where `test`.`t1`.`a` < 10
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -60,6 +62,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE a < 10;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`a` < 10
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -103,6 +107,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 USING t1 WHERE a = 1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` using `test`.`t1` where `test`.`t1`.`a` = 1
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -150,6 +156,8 @@ EXPLAIN EXTENDED UPDATE t1, t2 SET t1.a = 10 WHERE t1.a = 1;
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` join `test`.`t2` set `test`.`t1`.`a` = 10 where `test`.`t1`.`a` = 1
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -200,6 +208,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY t11 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` `t11` join (/* select#2 */ select `test`.`t2`.`b` AS `b` from `test`.`t2`) `t12` set `test`.`t11`.`a` = 10 where `test`.`t11`.`a` = 1
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -248,6 +258,8 @@ EXPLAIN EXTENDED UPDATE t1 SET a = 10 WHERE 1 IN (SELECT 1 FROM t2 WHERE
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` set `test`.`t1`.`a` = 10 where <in_optimizer>(1,<exists>(/* select#2 */ select 1 from `test`.`t2` where `test`.`t2`.`b` < 3 and 1))
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -300,6 +312,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ update `test`.`t1` set `test`.`t1`.`a` = 10 where <in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select `test`.`t2`.`b` from `test`.`t2` where `test`.`t1`.`a` < 3 and <cache>(`test`.`t1`.`a`) = `test`.`t2`.`b`))
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -353,6 +366,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` semi join (`test`.`t2`) join `test`.`t2` set `test`.`t1`.`a` = 10 where `test`.`t2`.`b` < 3
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -405,6 +420,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY t11 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` `t11` join (/* select#2 */ select `test`.`t2`.`b` AS `b` from `test`.`t2`) `t12` set `test`.`t11`.`a` = `test`.`t11`.`a` + 10
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -457,6 +474,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <derived2> system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY t11 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` `t11` set `test`.`t11`.`a` = `test`.`t11`.`a` + 10
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -511,6 +530,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY t11 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` `t11` join (/* select#2 */ select `test`.`t2`.`b` AS `b` from `test`.`t2`) `t12` set `test`.`t11`.`a` = 10 where `test`.`t11`.`a` > 1
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -555,6 +576,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE a > 1 LIMIT 1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`a` > 1 limit 1
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -598,6 +621,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE 0;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where 0
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -638,6 +663,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 USING t1 WHERE 0;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` using `test`.`t1` where 0
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -678,6 +705,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE a = 3;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range a a 5 NULL 1 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`a` = 3
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 5
|
||||
|
@ -719,6 +748,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE a < 3;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range a a 5 NULL 1 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`a` < 3
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 5
|
||||
|
@ -758,6 +789,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`a` > 0 order by `test`.`t1`.`a`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -797,6 +830,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`a` > 0 order by `test`.`t1`.`a`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -840,6 +875,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE (@a:= a) ORDER BY a LIMIT 1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 1 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where @a:=`test`.`t1`.`a` order by `test`.`t1`.`a` limit 1
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -884,6 +921,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 ORDER BY a ASC, b ASC LIMIT 1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` order by `test`.`t1`.`a`,`test`.`t1`.`b` limit 1
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
|
@ -941,6 +980,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
1 SIMPLE t2 ref PRIMARY PRIMARY 4 test.t1.a1 1 100.00
|
||||
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 8 test.t2.b2,test.t1.b1 1 100.00
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1`,`test`.`t2`,`test`.`t3` using `test`.`t1` join `test`.`t2` join `test`.`t3` where `test`.`t2`.`a2` = `test`.`t1`.`a1` and `test`.`t3`.`a3` = `test`.`t2`.`b2` and `test`.`t3`.`b3` = `test`.`t1`.`b1`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 13
|
||||
|
@ -993,6 +1034,8 @@ EXPLAIN EXTENDED UPDATE t1 SET a = 10 WHERE a IN (SELECT a FROM t2);
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` set `test`.`t1`.`a` = 10 where <in_optimizer>(`test`.`t1`.`a`,<exists>(/* select#2 */ select `test`.`t2`.`a` from `test`.`t2` where <cache>(`test`.`t1`.`a`) = `test`.`t2`.`a`))
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1043,6 +1086,8 @@ EXPLAIN EXTENDED DELETE FROM t1 WHERE a1 IN (SELECT a2 FROM t2 WHERE a2 > 2);
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ delete from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a1`,<exists>(/* select#2 */ select `test`.`t2`.`a2` from `test`.`t2` where `test`.`t2`.`a2` > 2 and <cache>(`test`.`t1`.`a1`) = `test`.`t2`.`a2`))
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1088,6 +1133,8 @@ EXPLAIN EXTENDED DELETE FROM t1 WHERE a1 IN (SELECT a2 FROM t2 WHERE a2 > 2);
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ delete from `test`.`t1` where <in_optimizer>(`test`.`t1`.`a1`,<exists>(/* select#2 */ select `test`.`t2`.`a2` from `test`.`t2` where `test`.`t2`.`a2` > 2 and <cache>(`test`.`t1`.`a1`) = `test`.`t2`.`a2`))
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1132,6 +1179,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t1 SET i = 10;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 100.00
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` set `test`.`t1`.`i` = 10
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -1175,6 +1224,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL 5 NULL Deleting all rows
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -1221,6 +1272,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index NULL a 15 NULL 5 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -1267,6 +1320,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED INSERT INTO t2 SELECT * FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t2` select `test`.`t1`.`i` AS `i` from `test`.`t1`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1311,6 +1366,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED REPLACE INTO t2 SELECT * FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 replace into `test`.`t2` select `test`.`t1`.`i` AS `i` from `test`.`t1`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1351,6 +1408,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED INSERT INTO t1 SET i = 10;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 INSERT t1 ALL NULL NULL NULL NULL NULL 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t1`(i) values (10)
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -1374,6 +1433,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED REPLACE INTO t1 SET i = 10;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 INSERT t1 ALL NULL NULL NULL NULL NULL 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 replace into `test`.`t1`(i) values (10)
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -1402,6 +1463,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE i > 10 AND i <= 18 ORDER BY i LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 5 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`i` > 10 and `test`.`t1`.`i` <= 18 order by `test`.`t1`.`i` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1447,6 +1510,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE i > 10 AND i <= 18 ORDER BY i LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`i` > 10 and `test`.`t1`.`i` <= 18 order by `test`.`t1`.`i` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1500,6 +1565,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -1554,6 +1621,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index NULL a 15 NULL 5 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -1603,6 +1672,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -1657,6 +1728,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -1712,6 +1785,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 WHERE key1 < 13 or key2 < 14 ORDER BY key1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index_merge key1,key2 key1,key2 5,5 NULL 7 100.00 Using sort_union(key1,key2); Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` where `test`.`t2`.`key1` < 13 or `test`.`t2`.`key2` < 14 order by `test`.`t2`.`key1`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -1765,6 +1840,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 WHERE i > 10 AND i <= 18 ORDER BY i DESC LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 5 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` where `test`.`t2`.`i` > 10 and `test`.`t2`.`i` <= 18 order by `test`.`t2`.`i` desc limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1812,6 +1889,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 ORDER BY a, b DESC LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` order by `test`.`t2`.`a`,`test`.`t2`.`b` desc limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -1866,6 +1945,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t2 ORDER BY a DESC, b DESC LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index NULL a 6 NULL 5 100.00
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t2` order by `test`.`t2`.`a` desc,`test`.`t2`.`b` desc limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -1915,6 +1996,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET a = 10 WHERE i > 10 AND i <= 18 ORDER BY i LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 5 100.00 Using where; Using buffer
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`a` = 10 where `test`.`t2`.`i` > 10 and `test`.`t2`.`i` <= 18 order by `test`.`t2`.`i` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -1963,6 +2046,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET a = 10 WHERE i > 10 AND i <= 18 ORDER BY i LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`a` = 10 where `test`.`t2`.`i` > 10 and `test`.`t2`.`i` <= 18 order by `test`.`t2`.`i` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -2017,6 +2102,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET d = 10 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`d` = 10 where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -2072,6 +2159,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET d = 10 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index NULL a 15 NULL 5 100.00 Using where; Using buffer
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`d` = 10 where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -2122,6 +2211,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET d = 10 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`d` = 10 where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -2176,6 +2267,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET d = 10 WHERE b = 10 ORDER BY a, c LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`d` = 10 where `test`.`t2`.`b` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`c` limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 8
|
||||
|
@ -2231,6 +2324,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET i = 123 WHERE key1 < 13 or key2 < 14 ORDER BY key1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index_merge key1,key2 key1,key2 5,5 NULL 7 100.00 Using sort_union(key1,key2); Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`i` = 123 where `test`.`t2`.`key1` < 13 or `test`.`t2`.`key2` < 14 order by `test`.`t2`.`key1`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -2284,6 +2379,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET a = 10 WHERE i > 10 AND i <= 18 ORDER BY i DESC LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 5 100.00 Using where; Using buffer
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`a` = 10 where `test`.`t2`.`i` > 10 and `test`.`t2`.`i` <= 18 order by `test`.`t2`.`i` desc limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -2332,6 +2429,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET c = 10 ORDER BY a, b DESC LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 26 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`c` = 10 order by `test`.`t2`.`a`,`test`.`t2`.`b` desc limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -2387,6 +2486,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t2 SET c = 10 ORDER BY a DESC, b DESC LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 index NULL a 6 NULL 5 100.00 Using buffer
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t2` set `test`.`t2`.`c` = 10 order by `test`.`t2`.`a` desc,`test`.`t2`.`b` desc limit 5
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -2439,6 +2540,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t1 SET c2 = 0 WHERE c1_idx = 'y' ORDER BY pk DESC LIMIT 2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range c1_idx c1_idx 2 NULL 2 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` set `test`.`t1`.`c2` = 0 where `test`.`t1`.`c1_idx` = 'y' order by `test`.`t1`.`pk` desc limit 2
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -2485,6 +2588,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM t1 WHERE c1_idx = 'y' ORDER BY pk DESC LIMIT 2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range c1_idx c1_idx 2 NULL 2 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` where `test`.`t1`.`c1_idx` = 'y' order by `test`.`t1`.`pk` desc limit 2
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -2534,6 +2639,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t1 SET a=a+10 WHERE a > 34;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 100.00 Using where; Using buffer
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` set `test`.`t1`.`a` = `test`.`t1`.`a` + 10 where `test`.`t1`.`a` > 34
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -2581,6 +2688,8 @@ EXPLAIN EXTENDED UPDATE t1 LEFT JOIN t2 ON t1.c1 = t2.c1 SET t2.c2 = 10;
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 Const row not found
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` set NULL = 10
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
|
@ -2624,6 +2733,8 @@ EXPLAIN EXTENDED UPDATE t1 LEFT JOIN t2 ON t1.c1 = t2.c1 SET t2.c2 = 10 W
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 system NULL NULL NULL NULL 0 0.00 Const row not found
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` set NULL = 10 where `test`.`t1`.`c3` = 10
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
|
@ -2676,6 +2787,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 DEPENDENT SUBQUERY t2 ALL IDX NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.f1' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ update `test`.`t1` set `test`.`t1`.`f2` = (/* select#2 */ select max(`test`.`t2`.`f4`) from `test`.`t2` where `test`.`t2`.`f3` = `test`.`t1`.`f1`)
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
|
@ -2747,6 +2859,8 @@ EXPLAIN EXTENDED UPDATE v1 SET a = 1 WHERE a > 0;
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t11 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
1 SIMPLE t12 ALL NULL NULL NULL NULL 2 100.00
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` `t11` join `test`.`t1` `t12` set `test`.`t11`.`a` = 1 where `test`.`t11`.`a` > 0
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -2792,6 +2906,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
1 SIMPLE t11 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
1 SIMPLE t12 ALL NULL NULL NULL NULL 2 100.00
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` join `test`.`t1` `t11` join `test`.`t1` `t12` set `test`.`t11`.`a` = 1 where `test`.`t11`.`a` = `test`.`t1`.`a`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -2841,6 +2957,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED DELETE FROM v1 WHERE a < 4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ delete from `test`.`t1` where `test`.`t1`.`a` < 4
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -2892,6 +3010,8 @@ EXPLAIN EXTENDED DELETE v1 FROM t2, v1 WHERE t2.x = v1.a;
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.x 1 100.00
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` using `test`.`t2` join `test`.`t1` where `test`.`t1`.`a` = `test`.`t2`.`x`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -2943,6 +3063,8 @@ EXPLAIN EXTENDED DELETE v1 FROM t2, v1 WHERE t2.x = v1.a;
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.x 1 100.00
|
||||
Warnings:
|
||||
Note 1003 delete from `test`.`t1` using `test`.`t2` join `test`.`t1` where `test`.`t1`.`a` = `test`.`t2`.`x`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 6
|
||||
|
@ -2987,6 +3109,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED INSERT INTO v1 VALUES (10);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 INSERT t1 ALL NULL NULL NULL NULL NULL 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t1`(x) values (10)
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 2
|
||||
|
@ -3027,6 +3151,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED INSERT INTO v1 SELECT * FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 0 0.00 Const row not found
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t2`(x) /* select#1 */ select NULL AS `a` from `test`.`t1`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -3084,6 +3210,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
2 DEPENDENT SUBQUERY <derived3> index_subquery key0 key0 5 func 2 100.00
|
||||
3 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` set `test`.`t1`.`a` = 10 where <in_optimizer>(`test`.`t1`.`a`,<exists>(<index_lookup>(<cache>(`test`.`t1`.`a`) in (temporary) on key0)))
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -3137,6 +3265,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <derived3> ref key0 key0 5 test.t1.a 2 100.00 FirstMatch(t1)
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
3 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` semi join ((/* select#3 */ select `test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`b` limit 2,2) `x`) join `test`.`t2` set `test`.`t1`.`a` = 10 where `x`.`b` = `test`.`t1`.`a`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -3192,6 +3322,8 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3 100.00
|
||||
4 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t1` semi join ((/* select#4 */ select `test`.`t2`.`b` AS `b` from `test`.`t2` order by `test`.`t2`.`b` limit 2,2) `x`) join (/* select#2 */ select `test`.`t2`.`b` AS `b` from `test`.`t2`) `y` set `test`.`t1`.`a` = 10 where `x`.`b` = `test`.`t1`.`a`
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
|
@ -3241,6 +3373,8 @@ JOIN t1 AS a12 ON a12.c1 = a11.c1
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 0 100.00
|
||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t3` set `test`.`t3`.`c3` = (/* select#2 */ select count(NULL) from `test`.`t1` `a11` straight_join `test`.`t2` `a21` join `test`.`t1` `a12` where 0)
|
||||
DROP TABLE t1, t2, t3;
|
||||
#73
|
||||
CREATE TABLE t1 (id INT);
|
||||
|
@ -3269,6 +3403,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t1 SET a=a+1 WHERE a>10;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 100.00 Using where; Using buffer
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` set `test`.`t1`.`a` = `test`.`t1`.`a` + 1 where `test`.`t1`.`a` > 10
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -3306,6 +3442,8 @@ FLUSH TABLES;
|
|||
EXPLAIN EXTENDED UPDATE t1 SET a=a+1 WHERE a>10 ORDER BY a+20;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 100.00 Using where; Using filesort
|
||||
Warnings:
|
||||
Note 1003 update `test`.`t1` set `test`.`t1`.`a` = `test`.`t1`.`a` + 1 where `test`.`t1`.`a` > 10 order by `test`.`t1`.`a` + 20
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 3
|
||||
|
@ -3331,6 +3469,61 @@ Handler_read_key 4
|
|||
Sort_range 1
|
||||
|
||||
DROP TABLE t1;
|
||||
#75
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, i INT);
|
||||
#
|
||||
# query: INSERT INTO t1 VALUES (3,10), (7,11), (3,11) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);
|
||||
# select:
|
||||
#
|
||||
EXPLAIN INSERT INTO t1 VALUES (3,10), (7,11), (3,11) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 INSERT t1 ALL NULL NULL NULL NULL NULL NULL
|
||||
FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED INSERT INTO t1 VALUES (3,10), (7,11), (3,11) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 INSERT t1 ALL NULL NULL NULL NULL NULL 100.00 NULL
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t1` values (3,10),(7,11),(3,11) on duplicate key update `test`.`t1`.`id` = last_insert_id(`test`.`t1`.`id`)
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
# Status of testing query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 4
|
||||
Handler_read_rnd 1
|
||||
Handler_write 3
|
||||
|
||||
DROP TABLE t1;
|
||||
#76
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, i INT);
|
||||
CREATE TABLE t2 (a INT, b INT);
|
||||
INSERT INTO t2 VALUES (1,10), (3,10), (7,11), (3,11);
|
||||
#
|
||||
# query: INSERT INTO t1 SELECT * FROM t2 ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);
|
||||
# select:
|
||||
#
|
||||
EXPLAIN INSERT INTO t1 SELECT * FROM t2 ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 4
|
||||
FLUSH STATUS;
|
||||
FLUSH TABLES;
|
||||
EXPLAIN EXTENDED INSERT INTO t1 SELECT * FROM t2 ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 4 100.00
|
||||
Warnings:
|
||||
Note 1003 insert into `test`.`t1` select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t2` on duplicate key update `test`.`t1`.`id` = last_insert_id(`test`.`t1`.`id`)
|
||||
# Status of EXPLAIN EXTENDED query
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
# Status of testing query execution:
|
||||
Variable_name Value
|
||||
Handler_read_key 7
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_next 5
|
||||
Handler_write 4
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug #12949629: CLIENT LOSES CONNECTION AFTER EXECUTING A PROCEDURE WITH
|
||||
# EXPLAIN UPDATE/DEL/INS
|
||||
|
|
|
@ -534,7 +534,7 @@ remove_file $MYSQLTEST_VARDIR/tmp/mysqlbinlog.warn;
|
|||
--echo # MYSQL_BINLOG std_data/master-bin.000001 --base64-output 2>&1
|
||||
# The error produces the absolute path of the mysqlbinlog executable, remove it.
|
||||
--replace_regex /.*mariadb-binlog.*:/mariadb-binlog:/i
|
||||
--error 1
|
||||
--error 5
|
||||
--exec $MYSQL_BINLOG std_data/master-bin.000001 --base64-output 2>&1
|
||||
|
||||
--echo #
|
||||
|
|
25
mysql-test/main/name_resolution_cache_debug.result
Normal file
25
mysql-test/main/name_resolution_cache_debug.result
Normal file
|
@ -0,0 +1,25 @@
|
|||
connect con1,localhost,root;
|
||||
create table t1 (a int, b int);
|
||||
create table t2 (c int, d int);
|
||||
create view v1 as select c+1 as e, d+1 as f from t2;
|
||||
SET DEBUG_SYNC= 'table_field_cached SIGNAL in_sync WAIT_FOR go';
|
||||
prepare stmt1 from "select a from t1";
|
||||
execute stmt1;
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||
SET DEBUG_SYNC= 'now SIGNAL go';
|
||||
connection con1;
|
||||
a
|
||||
SET DEBUG_SYNC= 'table_field_cached SIGNAL in_sync WAIT_FOR go';
|
||||
prepare stmt1 from "select e from v1";
|
||||
execute stmt1;
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||
SET DEBUG_SYNC= 'now SIGNAL go';
|
||||
connection con1;
|
||||
e
|
||||
connection default;
|
||||
disconnect con1;
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
drop view v1;
|
||||
drop table t1,t2;
|
36
mysql-test/main/name_resolution_cache_debug.test
Normal file
36
mysql-test/main/name_resolution_cache_debug.test
Normal file
|
@ -0,0 +1,36 @@
|
|||
|
||||
source include/have_debug_sync.inc;
|
||||
|
||||
connect con1,localhost,root;
|
||||
create table t1 (a int, b int);
|
||||
create table t2 (c int, d int);
|
||||
create view v1 as select c+1 as e, d+1 as f from t2;
|
||||
|
||||
SET DEBUG_SYNC= 'table_field_cached SIGNAL in_sync WAIT_FOR go';
|
||||
prepare stmt1 from "select a from t1";
|
||||
--send execute stmt1
|
||||
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||
SET DEBUG_SYNC= 'now SIGNAL go';
|
||||
|
||||
connection con1;
|
||||
--reap
|
||||
|
||||
SET DEBUG_SYNC= 'table_field_cached SIGNAL in_sync WAIT_FOR go';
|
||||
prepare stmt1 from "select e from v1";
|
||||
--send execute stmt1
|
||||
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR in_sync';
|
||||
SET DEBUG_SYNC= 'now SIGNAL go';
|
||||
|
||||
connection con1;
|
||||
--reap
|
||||
|
||||
connection default;
|
||||
disconnect con1;
|
||||
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
drop view v1;
|
||||
drop table t1,t2;
|
|
@ -221,3 +221,39 @@ a UNIX_TIMESTAMP(t1.a) a UNIX_TIMESTAMP(t2.a)
|
|||
DROP TABLE t1;
|
||||
SET time_zone=DEFAULT;
|
||||
SET global mysql56_temporal_format=true;
|
||||
#
|
||||
# MDEV-26765 UNIX_TIMESTAMP(CURRENT_TIME()) return null ?!?
|
||||
#
|
||||
SET old_mode=zero_date_time_cast;
|
||||
SET @@time_zone='+00:00';
|
||||
SET timestamp=1234567;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
CURRENT_TIMESTAMP
|
||||
1970-01-15 06:56:07
|
||||
SELECT UNIX_TIMESTAMP(CURRENT_TIME());
|
||||
UNIX_TIMESTAMP(CURRENT_TIME())
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect datetime value: '06:56:07'
|
||||
SELECT UNIX_TIMESTAMP(TIME'06:56:07');
|
||||
UNIX_TIMESTAMP(TIME'06:56:07')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect datetime value: '06:56:07'
|
||||
SELECT UNIX_TIMESTAMP(TIME'10:20:30');
|
||||
UNIX_TIMESTAMP(TIME'10:20:30')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect datetime value: '10:20:30'
|
||||
CREATE OR REPLACE TABLE t1 (a TIME);
|
||||
INSERT INTO t1 VALUES (TIME'06:56:07'),('10:20:30');
|
||||
SELECT UNIX_TIMESTAMP(a) FROM t1 ORDER BY a;
|
||||
UNIX_TIMESTAMP(a)
|
||||
NULL
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
Warning 1264 Out of range value for column 'a' at row 2
|
||||
DROP TABLE t1;
|
||||
SET @@time_zone=DEFAULT;
|
||||
SET TIMESTAMP=DEFAULT;
|
||||
|
|
|
@ -149,3 +149,23 @@ SELECT t1.a, UNIX_TIMESTAMP(t1.a), t2.a, UNIX_TIMESTAMP(t2.a) FROM t1 t1, t1 t2
|
|||
DROP TABLE t1;
|
||||
SET time_zone=DEFAULT;
|
||||
SET global mysql56_temporal_format=true;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-26765 UNIX_TIMESTAMP(CURRENT_TIME()) return null ?!?
|
||||
--echo #
|
||||
|
||||
SET old_mode=zero_date_time_cast;
|
||||
SET @@time_zone='+00:00';
|
||||
SET timestamp=1234567;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
SELECT UNIX_TIMESTAMP(CURRENT_TIME());
|
||||
SELECT UNIX_TIMESTAMP(TIME'06:56:07');
|
||||
SELECT UNIX_TIMESTAMP(TIME'10:20:30');
|
||||
CREATE OR REPLACE TABLE t1 (a TIME);
|
||||
INSERT INTO t1 VALUES (TIME'06:56:07'),('10:20:30');
|
||||
SELECT UNIX_TIMESTAMP(a) FROM t1 ORDER BY a;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET @@time_zone=DEFAULT;
|
||||
SET TIMESTAMP=DEFAULT;
|
||||
|
|
|
@ -1016,7 +1016,6 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
|
|||
"index": "a",
|
||||
"used_range_estimates": false,
|
||||
"cause": "not available",
|
||||
"rowid_filter_skipped": "cost_factor <= 0",
|
||||
"rows": 1,
|
||||
"cost": 200.0585794,
|
||||
"chosen": true
|
||||
|
@ -1073,7 +1072,6 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
|
|||
"index": "a",
|
||||
"used_range_estimates": false,
|
||||
"cause": "not available",
|
||||
"rowid_filter_skipped": "cost_factor <= 0",
|
||||
"rows": 1,
|
||||
"cost": 200.0585794,
|
||||
"chosen": true
|
||||
|
@ -3733,7 +3731,7 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
|||
"select_id": 1,
|
||||
"steps": [
|
||||
{
|
||||
"expanded_query": "select NULL AS `NULL` from t0 join t1 where t0.a = t1.a and t1.a < 3"
|
||||
"expanded_query": "delete from t0,t1 using t0 join t1 where t0.a = t1.a and t1.a < 3"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -3962,7 +3960,6 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
|
|||
"index": "a",
|
||||
"used_range_estimates": false,
|
||||
"cause": "not better than ref estimates",
|
||||
"rowid_filter_skipped": "cost_factor <= 0",
|
||||
"rows": 1,
|
||||
"cost": 3.001757383,
|
||||
"chosen": true
|
||||
|
@ -4098,7 +4095,7 @@ explain select * from (select rand() from t1)q {
|
|||
"derived": {
|
||||
"table": "q",
|
||||
"select_id": 2,
|
||||
"algorithm": "merged"
|
||||
"algorithm": "materialized"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -4112,7 +4109,7 @@ explain select * from (select rand() from t1)q {
|
|||
}
|
||||
},
|
||||
{
|
||||
"expanded_query": "/* select#1 */ select rand() AS `rand()` from (/* select#2 */ select rand() AS `rand()` from t1) q"
|
||||
"expanded_query": "/* select#1 */ select q.`rand()` AS `rand()` from (/* select#2 */ select rand() AS `rand()` from t1) q"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -4121,14 +4118,6 @@ explain select * from (select rand() from t1)q {
|
|||
"join_optimization": {
|
||||
"select_id": 1,
|
||||
"steps": [
|
||||
{
|
||||
"derived": {
|
||||
"table": "q",
|
||||
"select_id": 2,
|
||||
"algorithm": "materialized",
|
||||
"cause": "Random function in the select"
|
||||
}
|
||||
},
|
||||
{
|
||||
"join_optimization": {
|
||||
"select_id": 2,
|
||||
|
@ -8031,7 +8020,6 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
|
|||
"index": "b",
|
||||
"used_range_estimates": false,
|
||||
"cause": "not available",
|
||||
"rowid_filter_skipped": "cost_factor <= 0",
|
||||
"rows": 1,
|
||||
"cost": 20.00585794,
|
||||
"chosen": true
|
||||
|
@ -8234,7 +8222,6 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
|
|||
"index": "a",
|
||||
"used_range_estimates": false,
|
||||
"cause": "not available",
|
||||
"rowid_filter_skipped": "cost_factor <= 0",
|
||||
"rows": 1,
|
||||
"cost": 20.00585794,
|
||||
"chosen": true
|
||||
|
@ -8302,7 +8289,6 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
|
|||
"index": "a",
|
||||
"used_range_estimates": false,
|
||||
"cause": "not available",
|
||||
"rowid_filter_skipped": "cost_factor <= 0",
|
||||
"rows": 1,
|
||||
"cost": 200.0585794,
|
||||
"chosen": true
|
||||
|
|
|
@ -2820,3 +2820,41 @@ DROP TABLE t1,t2;
|
|||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# MDEV-30596: Assertion 'pushed_rowid_filter != __null ...' failed
|
||||
#
|
||||
create table t1 (a int);
|
||||
insert into t1 values (NULL),(1),(2);
|
||||
create table t2 (a int);
|
||||
insert into t2 select seq from seq_1_to_1000;
|
||||
create table t3 (
|
||||
a1 int,
|
||||
a2 int,
|
||||
b int,
|
||||
c int,
|
||||
filler1 char(200),
|
||||
filler2 char(200),
|
||||
key(a1,a2),
|
||||
key(b)
|
||||
) partition by hash(a1) partitions 2;
|
||||
insert into t3 select seq/100, seq/100, seq, seq, seq, seq from seq_1_to_10000;
|
||||
analyze table t3 persistent for all;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t3 analyze status Engine-independent statistics collected
|
||||
test.t3 analyze status OK
|
||||
set @tmp_os= @@optimizer_switch;
|
||||
set optimizer_switch='materialization=off';
|
||||
# Must not show "Using rowid filter":
|
||||
explain
|
||||
select *
|
||||
from t1
|
||||
where
|
||||
t1.a not in (select straight_join t3.a1
|
||||
from t2, t3
|
||||
where t3.b < 3000 and t3.a2=t2.a);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 1000 Using where
|
||||
2 DEPENDENT SUBQUERY t3 ref_or_null a1,b a1 10 func,test.t2.a 198 Using where; Full scan on NULL key
|
||||
set optimizer_switch=@tmp_os;
|
||||
drop table t1,t2,t3;
|
||||
|
|
|
@ -3019,7 +3019,44 @@ INSERT INTO t2 VALUES (1),(2);
|
|||
UPDATE t1 SET a = 7 WHERE a = ( SELECT b FROM t2 ) ORDER BY a LIMIT 6;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.1 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30596: Assertion 'pushed_rowid_filter != __null ...' failed
|
||||
--echo #
|
||||
--source include/have_sequence.inc
|
||||
create table t1 (a int);
|
||||
insert into t1 values (NULL),(1),(2);
|
||||
create table t2 (a int);
|
||||
insert into t2 select seq from seq_1_to_1000;
|
||||
|
||||
create table t3 (
|
||||
a1 int,
|
||||
a2 int,
|
||||
b int,
|
||||
c int,
|
||||
filler1 char(200),
|
||||
filler2 char(200),
|
||||
key(a1,a2),
|
||||
key(b)
|
||||
) partition by hash(a1) partitions 2;
|
||||
insert into t3 select seq/100, seq/100, seq, seq, seq, seq from seq_1_to_10000;
|
||||
analyze table t3 persistent for all;
|
||||
|
||||
set @tmp_os= @@optimizer_switch;
|
||||
set optimizer_switch='materialization=off';
|
||||
|
||||
--echo # Must not show "Using rowid filter":
|
||||
explain
|
||||
select *
|
||||
from t1
|
||||
where
|
||||
t1.a not in (select straight_join t3.a1
|
||||
from t2, t3
|
||||
where t3.b < 3000 and t3.a2=t2.a);
|
||||
set optimizer_switch=@tmp_os;
|
||||
|
||||
drop table t1,t2,t3;
|
||||
|
||||
|
|
|
@ -5562,11 +5562,15 @@ EXPLAIN EXTENDED UPDATE t3 SET c3 = ( SELECT COUNT(d1.c1) FROM ( SELECT a11.c1 F
|
|||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 0 100.00
|
||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t3` set `test`.`t3`.`c3` = (/* select#2 */ select count(NULL) from `test`.`t1` `a11` straight_join `test`.`t2` `a21` join `test`.`t1` `a12` where 0)
|
||||
PREPARE stmt FROM "EXPLAIN EXTENDED UPDATE t3 SET c3 = ( SELECT COUNT(d1.c1) FROM ( SELECT a11.c1 FROM t1 AS a11 STRAIGHT_JOIN t2 AS a21 ON a21.c2 = a11.c1 JOIN t1 AS a12 ON a12.c1 = a11.c1 ) d1 )";
|
||||
EXECUTE stmt;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 0 100.00
|
||||
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ update `test`.`t3` set `test`.`t3`.`c3` = (/* select#2 */ select count(NULL) from `test`.`t1` `a11` straight_join `test`.`t2` `a21` join `test`.`t1` `a12` where 0)
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1, t2, t3;
|
||||
#
|
||||
|
|
|
@ -337,8 +337,8 @@ FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
|||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
|
||||
o_totalprice between 200000 and 230000;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE lineitem range PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_shipdate 4 NULL 98 Using index condition
|
||||
1 SIMPLE orders eq_ref|filter PRIMARY,i_o_totalprice PRIMARY|i_o_totalprice 4|9 dbt3_s001.lineitem.l_orderkey 1 (5%) Using where; Using rowid filter
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 69 Using index condition
|
||||
1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (2%) Using where; Using rowid filter
|
||||
set statement optimizer_switch='rowid_filter=on' for EXPLAIN FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
|
||||
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
||||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
|
||||
|
@ -348,40 +348,40 @@ EXPLAIN
|
|||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "lineitem",
|
||||
"table_name": "orders",
|
||||
"access_type": "range",
|
||||
"possible_keys": ["PRIMARY", "i_o_totalprice"],
|
||||
"key": "i_o_totalprice",
|
||||
"key_length": "9",
|
||||
"used_key_parts": ["o_totalprice"],
|
||||
"rows": 69,
|
||||
"filtered": 100,
|
||||
"index_condition": "orders.o_totalprice between 200000 and 230000"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "lineitem",
|
||||
"access_type": "ref",
|
||||
"possible_keys": [
|
||||
"PRIMARY",
|
||||
"i_l_shipdate",
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "i_l_shipdate",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_shipDATE"],
|
||||
"rows": 98,
|
||||
"filtered": 100,
|
||||
"index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-01-31'"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "orders",
|
||||
"access_type": "eq_ref",
|
||||
"possible_keys": ["PRIMARY", "i_o_totalprice"],
|
||||
"key": "PRIMARY",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["o_orderkey"],
|
||||
"ref": ["dbt3_s001.lineitem.l_orderkey"],
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
"rowid_filter": {
|
||||
"range": {
|
||||
"key": "i_o_totalprice",
|
||||
"used_key_parts": ["o_totalprice"]
|
||||
"key": "i_l_shipdate",
|
||||
"used_key_parts": ["l_shipDATE"]
|
||||
},
|
||||
"rows": 69,
|
||||
"selectivity_pct": 4.6
|
||||
"rows": 98,
|
||||
"selectivity_pct": 1.631973356
|
||||
},
|
||||
"rows": 1,
|
||||
"filtered": 4.599999905,
|
||||
"attached_condition": "orders.o_totalprice between 200000 and 230000"
|
||||
"rows": 4,
|
||||
"filtered": 1.631973386,
|
||||
"attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-01-31'"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -390,8 +390,8 @@ FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
|||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
|
||||
o_totalprice between 200000 and 230000;
|
||||
id select_type table type possible_keys key key_len ref rows r_rows filtered r_filtered Extra
|
||||
1 SIMPLE lineitem range PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_shipdate 4 NULL 98 98.00 100.00 100.00 Using index condition
|
||||
1 SIMPLE orders eq_ref|filter PRIMARY,i_o_totalprice PRIMARY|i_o_totalprice 4|9 dbt3_s001.lineitem.l_orderkey 1 (5%) 0.11 (10%) 4.60 100.00 Using where; Using rowid filter
|
||||
1 SIMPLE orders range PRIMARY,i_o_totalprice i_o_totalprice 9 NULL 69 71.00 100.00 100.00 Using index condition
|
||||
1 SIMPLE lineitem ref|filter PRIMARY,i_l_shipdate,i_l_orderkey,i_l_orderkey_quantity i_l_orderkey|i_l_shipdate 4|4 dbt3_s001.orders.o_orderkey 4 (2%) 0.15 (2%) 1.63 100.00 Using where; Using rowid filter
|
||||
set statement optimizer_switch='rowid_filter=on' for ANALYZE FORMAT=JSON SELECT o_orderkey, l_linenumber, l_shipdate, o_totalprice
|
||||
FROM orders JOIN lineitem ON o_orderkey=l_orderkey
|
||||
WHERE l_shipdate BETWEEN '1997-01-01' AND '1997-01-31' AND
|
||||
|
@ -403,55 +403,55 @@ ANALYZE
|
|||
"r_loops": 1,
|
||||
"r_total_time_ms": "REPLACED",
|
||||
"table": {
|
||||
"table_name": "lineitem",
|
||||
"table_name": "orders",
|
||||
"access_type": "range",
|
||||
"possible_keys": ["PRIMARY", "i_o_totalprice"],
|
||||
"key": "i_o_totalprice",
|
||||
"key_length": "9",
|
||||
"used_key_parts": ["o_totalprice"],
|
||||
"r_loops": 1,
|
||||
"rows": 69,
|
||||
"r_rows": 71,
|
||||
"r_table_time_ms": "REPLACED",
|
||||
"r_other_time_ms": "REPLACED",
|
||||
"filtered": 100,
|
||||
"r_filtered": 100,
|
||||
"index_condition": "orders.o_totalprice between 200000 and 230000"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "lineitem",
|
||||
"access_type": "ref",
|
||||
"possible_keys": [
|
||||
"PRIMARY",
|
||||
"i_l_shipdate",
|
||||
"i_l_orderkey",
|
||||
"i_l_orderkey_quantity"
|
||||
],
|
||||
"key": "i_l_shipdate",
|
||||
"key": "i_l_orderkey",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["l_shipDATE"],
|
||||
"r_loops": 1,
|
||||
"rows": 98,
|
||||
"r_rows": 98,
|
||||
"r_table_time_ms": "REPLACED",
|
||||
"r_other_time_ms": "REPLACED",
|
||||
"filtered": 100,
|
||||
"r_filtered": 100,
|
||||
"index_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-01-31'"
|
||||
},
|
||||
"table": {
|
||||
"table_name": "orders",
|
||||
"access_type": "eq_ref",
|
||||
"possible_keys": ["PRIMARY", "i_o_totalprice"],
|
||||
"key": "PRIMARY",
|
||||
"key_length": "4",
|
||||
"used_key_parts": ["o_orderkey"],
|
||||
"ref": ["dbt3_s001.lineitem.l_orderkey"],
|
||||
"used_key_parts": ["l_orderkey"],
|
||||
"ref": ["dbt3_s001.orders.o_orderkey"],
|
||||
"rowid_filter": {
|
||||
"range": {
|
||||
"key": "i_o_totalprice",
|
||||
"used_key_parts": ["o_totalprice"]
|
||||
"key": "i_l_shipdate",
|
||||
"used_key_parts": ["l_shipDATE"]
|
||||
},
|
||||
"rows": 69,
|
||||
"selectivity_pct": 4.6,
|
||||
"r_rows": 71,
|
||||
"r_lookups": 96,
|
||||
"r_selectivity_pct": 10.41666667,
|
||||
"rows": 98,
|
||||
"selectivity_pct": 1.631973356,
|
||||
"r_rows": 98,
|
||||
"r_lookups": 476,
|
||||
"r_selectivity_pct": 2.31092437,
|
||||
"r_buffer_size": "REPLACED",
|
||||
"r_filling_time_ms": "REPLACED"
|
||||
},
|
||||
"r_loops": 98,
|
||||
"rows": 1,
|
||||
"r_rows": 0.112244898,
|
||||
"r_loops": 71,
|
||||
"rows": 4,
|
||||
"r_rows": 0.154929577,
|
||||
"r_table_time_ms": "REPLACED",
|
||||
"r_other_time_ms": "REPLACED",
|
||||
"filtered": 4.599999905,
|
||||
"filtered": 1.631973386,
|
||||
"r_filtered": 100,
|
||||
"attached_condition": "orders.o_totalprice between 200000 and 230000"
|
||||
"attached_condition": "lineitem.l_shipDATE between '1997-01-01' and '1997-01-31'"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3744,7 +3744,7 @@ EXPLAIN SELECT * FROM t1
|
|||
WHERE ID_better=1 AND ID1_with_null IS NULL AND
|
||||
(ID2_with_null=1 OR ID2_with_null=2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using rowid filter
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY ts(ts));
|
||||
INSERT INTO t1 VALUES (30,"2006-01-03 23:00:00"), (31,"2006-01-03 23:00:00");
|
||||
|
|
|
@ -3755,7 +3755,7 @@ EXPLAIN SELECT * FROM t1
|
|||
WHERE ID_better=1 AND ID1_with_null IS NULL AND
|
||||
(ID2_with_null=1 OR ID2_with_null=2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using rowid filter
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY ts(ts));
|
||||
INSERT INTO t1 VALUES (30,"2006-01-03 23:00:00"), (31,"2006-01-03 23:00:00");
|
||||
|
|
|
@ -3744,7 +3744,7 @@ EXPLAIN SELECT * FROM t1
|
|||
WHERE ID_better=1 AND ID1_with_null IS NULL AND
|
||||
(ID2_with_null=1 OR ID2_with_null=2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref idx1,idx2 idx2 4 const 2 Using where
|
||||
1 SIMPLE t1 ref|filter idx1,idx2 idx1|idx2 5|4 const 2 (1%) Using index condition; Using where; Using rowid filter
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY ts(ts));
|
||||
INSERT INTO t1 VALUES (30,"2006-01-03 23:00:00"), (31,"2006-01-03 23:00:00");
|
||||
|
|
|
@ -1856,7 +1856,7 @@ WHERE A.a=t1.a AND t2.b < 20);
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 100 Using where
|
||||
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
|
||||
2 DEPENDENT SUBQUERY t2 ref a,b a 5 test.A.id 1 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
|
||||
EXPLAIN SELECT * FROM t1 A, t1 B WHERE A.a = B.a and A.id = 65;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE A const PRIMARY,a PRIMARY 4 const 1
|
||||
|
@ -1868,7 +1868,7 @@ WHERE A.a=t1.a AND t2.b < 20);
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 100 Using where
|
||||
2 DEPENDENT SUBQUERY A ref PRIMARY,a a 5 test.t1.a 1
|
||||
2 DEPENDENT SUBQUERY t2 ref a,b a 5 test.A.id 1 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ref|filter a,b a|b 5|5 test.A.id 1 (10%) Using where; Using rowid filter
|
||||
set optimizer_switch= @save_optimizer_switch;
|
||||
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
|
||||
drop table t1,t2;
|
||||
|
|
|
@ -18,8 +18,8 @@ disconnect c1;
|
|||
create procedure try_shutdown() shutdown;
|
||||
drop procedure try_shutdown;
|
||||
|
||||
--let $_server_id= `SELECT @@server_id`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.expect
|
||||
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
||||
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
|
||||
--send shutdown
|
||||
|
|
|
@ -118,27 +118,27 @@ ROW(1,2,3) > (SELECT 1,2,1)
|
|||
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
|
||||
ROW(1,2,3) = (SELECT 1,2,NULL)
|
||||
NULL
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b') AS m;
|
||||
m
|
||||
0
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW('1.5b',2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1.5b'
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 'b',2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b'
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,'2','a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,'c','a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DECIMAL value: 'c'
|
||||
|
@ -228,19 +228,26 @@ a
|
|||
2
|
||||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a < t1.a) order by 1 desc limit 1);
|
||||
a
|
||||
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
b m
|
||||
8 7.5000
|
||||
8 4.5000
|
||||
9 7.5000
|
||||
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
explain extended
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t4.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,<expr_cache><`test`.`t4`.`a`>((/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`)) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from `test`.`t4`
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,<expr_cache><`test`.`t4`.`a`>((/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`)) AS `m` from `test`.`t4`
|
||||
select * from t3 where exists (select * from t2 where t2.b=t3.a);
|
||||
a
|
||||
7
|
||||
|
@ -307,21 +314,34 @@ select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 w
|
|||
b ma
|
||||
7 12
|
||||
create table t5 (a int);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (5);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (2);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
explain extended
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
|
@ -330,7 +350,7 @@ NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
|||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select <expr_cache><`test`.`t2`.`a`>((/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
Note 1003 /* select#1 */ select <expr_cache><`test`.`t2`.`a`>((/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`)) AS `m`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
|
||||
|
@ -486,8 +506,11 @@ SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING t
|
|||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 1
|
||||
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
|
||||
|
@ -505,8 +528,11 @@ joce 40143 2002-10-22 joce
|
|||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 0
|
||||
drop table t1,t2;
|
||||
|
@ -879,6 +905,25 @@ NULL
|
|||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
update t1 set a=NULL where a=2.5;
|
||||
select 1.5 IN (SELECT * from t1);
|
||||
1.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 3.5 IN (SELECT * from t1);
|
||||
3.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 10.5 IN (SELECT * from t1);
|
||||
10.5 IN (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ALL (SELECT * from t1);
|
||||
1.5 > ALL (SELECT * from t1)
|
||||
0
|
||||
select 10.5 > ALL (SELECT * from t1);
|
||||
10.5 > ALL (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
select 10.5 > ANY (SELECT * from t1);
|
||||
10.5 > ANY (SELECT * from t1)
|
||||
1
|
||||
|
@ -889,6 +934,20 @@ Warnings:
|
|||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
select (select a+1) from t1;
|
||||
(select a+1)
|
||||
2.5
|
||||
|
@ -1530,8 +1589,8 @@ create table t3 (a int, b int);
|
|||
insert into t1 values (0,100),(1,2), (1,3), (2,2), (2,7), (2,-1), (3,10);
|
||||
insert into t2 values (0,0), (1,1), (2,1), (3,1), (4,1);
|
||||
insert into t3 values (3,3), (2,2), (1,1);
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) from t3;
|
||||
a (select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1)
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) as m from t3;
|
||||
a m
|
||||
3 1
|
||||
2 2
|
||||
1 2
|
||||
|
@ -1726,8 +1785,8 @@ CREATE TABLE `t3` (`taskgenid` mediumint(9) NOT NULL auto_increment,`dbid` int(1
|
|||
INSERT INTO `t3` (`taskgenid`, `dbid`, `taskid`, `mon`, `tues`,`wed`, `thur`, `fri`, `sat`, `sun`, `how_often`, `userid`, `active`) VALUES (1,-1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1);
|
||||
CREATE TABLE `t4` (`task_id` smallint(6) NOT NULL default '0',`description` varchar(200) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO `t4` (`task_id`, `description`) VALUES (1, 'Daily Check List'),(2, 'Weekly Status');
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') as m FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') as m from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name m
|
||||
-1 Valid 1
|
||||
-1 Valid 2 1
|
||||
-1 Should Not Return 0
|
||||
|
@ -3782,9 +3841,10 @@ SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
|||
2
|
||||
1
|
||||
1
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
SELECT
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
m
|
||||
2
|
||||
1
|
||||
1
|
||||
|
@ -3794,9 +3854,9 @@ COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b))
|
|||
1 1
|
||||
1 1
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
COUNT(DISTINCT t1.b) m
|
||||
2 2
|
||||
1 1
|
||||
1 1
|
||||
|
@ -3820,16 +3880,10 @@ SELECT (
|
|||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1) AS m
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
(
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
m
|
||||
2
|
||||
2
|
||||
2
|
||||
|
@ -6423,11 +6477,10 @@ CREATE TABLE t3 (a int, b int);
|
|||
INSERT INTO t3 VALUES (10,7), (0,7);
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
WHERE t.a != 0 AND t2.a != 0) AS m
|
||||
FROM (SELECT * FROM t3) AS t
|
||||
GROUP BY 2;
|
||||
SUM(DISTINCT b) (SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
SUM(DISTINCT b) m
|
||||
7 NULL
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1,t2 WHERE t.a != 0 or 1=2 LIMIT 1)
|
||||
|
@ -6560,66 +6613,93 @@ CREATE TABLE t3 (f3a int default 1, f3b int default 2);
|
|||
INSERT INTO t3 VALUES (1,1),(2,2);
|
||||
set @old_optimizer_switch = @@session.optimizer_switch;
|
||||
set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,subquery_cache=off,semijoin=off';
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
set @@session.optimizer_switch=@old_optimizer_switch;
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2 AS m;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
select (null, null) = (null, null);
|
||||
(null, null) = (null, null)
|
||||
|
@ -6665,8 +6745,10 @@ INSERT INTO t2 VALUES (1);
|
|||
CREATE TABLE t3 ( c INT );
|
||||
INSERT INTO t3 VALUES (4),(5);
|
||||
SET optimizer_switch='subquery_cache=off';
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||
SELECT
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) AS m
|
||||
FROM t1;
|
||||
m
|
||||
1
|
||||
NULL
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||
|
@ -6883,7 +6965,9 @@ CREATE TABLE t3 (c INT);
|
|||
INSERT INTO t3 VALUES (8),(3);
|
||||
set @@expensive_subquery_limit= 0;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6893,9 +6977,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
@ -6921,7 +7007,9 @@ Handler_read_rnd_deleted 0
|
|||
Handler_read_rnd_next 22
|
||||
set @@expensive_subquery_limit= default;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6931,9 +7019,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
|
|
@ -74,13 +74,13 @@ SELECT ROW(1,2,3) > (SELECT 1,2,1);
|
|||
#enable after fix MDEV-28585
|
||||
--disable_view_protocol
|
||||
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b');
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a');
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
|
||||
--enable_view_protocol
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a') AS m;
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b') AS m;
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b') AS m;
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a') AS m;
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a') AS m;
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a') AS m;
|
||||
|
||||
-- error ER_OPERAND_COLUMNS
|
||||
SELECT (SELECT * FROM (SELECT 'test' a,'test' b) a);
|
||||
|
@ -118,11 +118,15 @@ set optimizer_switch=@tmp_optimizer_switch;
|
|||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3) order by 1 desc limit 1);
|
||||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a > t1.a) order by 1 desc limit 1);
|
||||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a < t1.a) order by 1 desc limit 1);
|
||||
#enable afte fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
--enable_view_protocol
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
explain extended
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
select * from t3 where exists (select * from t2 where t2.b=t3.a);
|
||||
select * from t3 where not exists (select * from t2 where t2.b=t3.a);
|
||||
select * from t3 where a in (select b from t2);
|
||||
|
@ -155,16 +159,25 @@ delete from t2 where a=2 and b=10;
|
|||
select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 where t2.b=t4.b);
|
||||
create table t5 (a int);
|
||||
|
||||
#enable afte fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
insert into t5 values (5);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
insert into t5 values (2);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
--enable_view_protocol
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
explain extended
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
|
||||
-- error ER_SUBQUERY_NO_1_ROW
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
|
@ -269,19 +282,19 @@ SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING t
|
|||
SELECT * from t2 where topic = any (SELECT SUM(topic) FROM t1);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
|
||||
--enable_view_protocol
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) AS m
|
||||
FROM t2;
|
||||
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
|
||||
SELECT * from t2 where topic <> any (SELECT SUM(topic) FROM t2);
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
|
||||
--enable_view_protocol
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) AS m
|
||||
FROM t2;
|
||||
drop table t1,t2;
|
||||
|
||||
#forumconthardwarefr7
|
||||
|
@ -521,11 +534,20 @@ select 10.5 IN (SELECT * from t1);
|
|||
select 1.5 > ALL (SELECT * from t1);
|
||||
select 10.5 > ALL (SELECT * from t1);
|
||||
select 1.5 > ANY (SELECT * from t1);
|
||||
update t1 set a=NULL where a=2.5;
|
||||
select 1.5 IN (SELECT * from t1);
|
||||
select 3.5 IN (SELECT * from t1);
|
||||
select 10.5 IN (SELECT * from t1);
|
||||
select 1.5 > ALL (SELECT * from t1);
|
||||
select 10.5 > ALL (SELECT * from t1);
|
||||
select 1.5 > ANY (SELECT * from t1);
|
||||
select 10.5 > ANY (SELECT * from t1);
|
||||
--enable_view_protocol
|
||||
explain extended select (select a+1) from t1;
|
||||
explain extended select (select a+1) from t1;
|
||||
explain extended select (select a+1) from t1;
|
||||
select (select a+1) from t1;
|
||||
drop table t1;
|
||||
--enable_view_protocol
|
||||
|
||||
#
|
||||
# Null with keys
|
||||
|
@ -945,10 +967,7 @@ create table t3 (a int, b int);
|
|||
insert into t1 values (0,100),(1,2), (1,3), (2,2), (2,7), (2,-1), (3,10);
|
||||
insert into t2 values (0,0), (1,1), (2,1), (3,1), (4,1);
|
||||
insert into t3 values (3,3), (2,2), (1,1);
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) from t3;
|
||||
--enable_view_protocol
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) as m from t3;
|
||||
drop table t1,t2,t3;
|
||||
|
||||
#
|
||||
|
@ -1066,10 +1085,7 @@ CREATE TABLE `t3` (`taskgenid` mediumint(9) NOT NULL auto_increment,`dbid` int(1
|
|||
INSERT INTO `t3` (`taskgenid`, `dbid`, `taskid`, `mon`, `tues`,`wed`, `thur`, `fri`, `sat`, `sun`, `how_often`, `userid`, `active`) VALUES (1,-1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1);
|
||||
CREATE TABLE `t4` (`task_id` smallint(6) NOT NULL default '0',`description` varchar(200) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO `t4` (`task_id`, `description`) VALUES (1, 'Daily Check List'),(2, 'Weekly Status');
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
--enable_view_protocol
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') as m FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') as m from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
SELECT dbid, name FROM t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND ((date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')) AND t4.task_id = taskid;
|
||||
drop table t1,t2,t3,t4;
|
||||
|
||||
|
@ -2388,9 +2404,6 @@ SELECT a, MAX(b), MIN(b) FROM t1 GROUP BY a;
|
|||
SELECT * FROM t2;
|
||||
SELECT * FROM t3;
|
||||
|
||||
#enable after fix MDEV-28570
|
||||
--disable_view_protocol
|
||||
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
HAVING a IN (SELECT c FROM t2 WHERE MAX(b)>20);
|
||||
SELECT a FROM t1 GROUP BY a
|
||||
|
@ -2455,8 +2468,6 @@ SELECT t1.a, SUM(b) AS sum FROM t1 GROUP BY t1.a
|
|||
HAVING t1.a IN (SELECT t2.c FROM t2 GROUP BY t2.c
|
||||
HAVING t2.c+sum > 20);
|
||||
|
||||
--enable_view_protocol
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
|
||||
|
@ -2687,19 +2698,17 @@ DROP TABLE t1;
|
|||
# Bug#21540 Subqueries with no from and aggregate functions return
|
||||
# wrong results
|
||||
|
||||
#enable after fix MDEV-27871, MDEV-28573
|
||||
--disable_view_protocol
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t2 values (1);
|
||||
INSERT INTO t1 VALUES (1,1),(1,2),(2,3),(3,4);
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
SELECT
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
SELECT COUNT(DISTINCT t1.b), (SELECT COUNT(DISTINCT t1.b)) FROM t1 GROUP BY t1.a;
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
SELECT (
|
||||
SELECT (
|
||||
|
@ -2713,11 +2722,10 @@ SELECT (
|
|||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1) AS m
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
DROP TABLE t1,t2;
|
||||
--enable_view_protocol
|
||||
|
||||
#
|
||||
# Bug#21727 Correlated subquery that requires filesort:
|
||||
|
@ -2952,8 +2960,6 @@ DROP TABLE t1,t2;
|
|||
# Bug#27229 GROUP_CONCAT in subselect with COUNT() as an argument
|
||||
#
|
||||
|
||||
#enable after fix MDEV-28571
|
||||
--disable_view_protocol
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
CREATE TABLE t2 (m int, n int);
|
||||
INSERT INTO t1 VALUES (2,2), (2,2), (3,3), (3,3), (3,3), (4,4);
|
||||
|
@ -2968,7 +2974,6 @@ SELECT COUNT(*) c, a,
|
|||
FROM t1 GROUP BY a;
|
||||
|
||||
DROP table t1,t2;
|
||||
--enable_view_protocol
|
||||
|
||||
#
|
||||
# Bug#27321 Wrong subquery result in a grouping select
|
||||
|
@ -2999,14 +3004,11 @@ SELECT tt.a,
|
|||
FROM t1 WHERE t1.a=tt.a GROUP BY a LIMIT 1) as test
|
||||
FROM t1 as tt GROUP BY tt.a;
|
||||
|
||||
#enable after fix MDEV-28571
|
||||
--disable_view_protocol
|
||||
SELECT tt.a, MAX(
|
||||
(SELECT (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.d=MAX(t1.b + tt.a)
|
||||
LIMIT 1)
|
||||
FROM t1 WHERE t1.a=tt.a GROUP BY a LIMIT 1)) as test
|
||||
FROM t1 as tt GROUP BY tt.a;
|
||||
--enable_view_protocol
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -3161,8 +3163,6 @@ CREATE TABLE t2 (x INTEGER);
|
|||
INSERT INTO t1 VALUES (1,11), (2,22), (2,22);
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
|
||||
#enable after fix MDEV-28573
|
||||
--disable_view_protocol
|
||||
# wasn't failing, but should
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
SELECT a, COUNT(b), (SELECT COUNT(b) FROM t2) FROM t1 GROUP BY a;
|
||||
|
@ -3172,7 +3172,6 @@ SELECT a, COUNT(b), (SELECT COUNT(b) FROM t2) FROM t1 GROUP BY a;
|
|||
SELECT a, COUNT(b), (SELECT COUNT(b)+0 FROM t2) FROM t1 GROUP BY a;
|
||||
|
||||
SELECT (SELECT SUM(t1.a)/AVG(t2.x) FROM t2) FROM t1;
|
||||
--enable_view_protocol
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
@ -3187,8 +3186,6 @@ GROUP BY a1.a;
|
|||
DROP TABLE t1;
|
||||
|
||||
#test cases from 29297
|
||||
#enable after fix MDEV-28573
|
||||
--disable_view_protocol
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
|
@ -3198,7 +3195,6 @@ SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=0) FROM t1;
|
|||
SELECT (SELECT SUM(t1.a) FROM t2 WHERE a!=0) FROM t1;
|
||||
SELECT (SELECT SUM(t1.a) FROM t2 WHERE a=1) FROM t1;
|
||||
DROP TABLE t1,t2;
|
||||
--enable_view_protocol
|
||||
|
||||
#
|
||||
# Bug#31884 Assertion + crash in subquery in the SELECT clause.
|
||||
|
@ -5400,14 +5396,11 @@ INSERT INTO t2 VALUES (10,7,0), (0,7,0);
|
|||
CREATE TABLE t3 (a int, b int);
|
||||
INSERT INTO t3 VALUES (10,7), (0,7);
|
||||
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
WHERE t.a != 0 AND t2.a != 0) AS m
|
||||
FROM (SELECT * FROM t3) AS t
|
||||
GROUP BY 2;
|
||||
--enable_view_protocol
|
||||
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1,t2 WHERE t.a != 0 or 1=2 LIMIT 1)
|
||||
|
@ -5565,29 +5558,53 @@ INSERT INTO t3 VALUES (1,1),(2,2);
|
|||
set @old_optimizer_switch = @@session.optimizer_switch;
|
||||
set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,subquery_cache=off,semijoin=off';
|
||||
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
|
||||
set @@session.optimizer_switch=@old_optimizer_switch;
|
||||
|
||||
# check different IN with default switches
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
--enable_view_protocol
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2 AS m;
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
|
||||
# other row operation with NULL single row subquery also should work
|
||||
select (null, null) = (null, null);
|
||||
|
@ -5627,10 +5644,9 @@ INSERT INTO t3 VALUES (4),(5);
|
|||
|
||||
SET optimizer_switch='subquery_cache=off';
|
||||
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||
--enable_view_protocol
|
||||
SELECT
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) AS m
|
||||
FROM t1;
|
||||
|
||||
# This query just for example, it should return the same as above (1 and NULL)
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||
|
@ -5819,15 +5835,17 @@ INSERT INTO t3 VALUES (8),(3);
|
|||
|
||||
set @@expensive_subquery_limit= 0;
|
||||
|
||||
#enable after fix MDEV-27871
|
||||
--disable_view_protocol
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
|
||||
flush status;
|
||||
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
|
||||
show status like "subquery_cache%";
|
||||
|
@ -5836,17 +5854,20 @@ show status like '%Handler_read%';
|
|||
set @@expensive_subquery_limit= default;
|
||||
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
|
||||
flush status;
|
||||
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
|
||||
show status like "subquery_cache%";
|
||||
show status like '%Handler_read%';
|
||||
--enable_view_protocol
|
||||
|
||||
drop table t1, t2, t3;
|
||||
|
||||
|
@ -6100,22 +6121,16 @@ INSERT INTO t1 VALUES (1),(2);
|
|||
CREATE TABLE t2 (f2 int);
|
||||
|
||||
INSERT INTO t2 VALUES (3);
|
||||
#enable after fix MDEV-29224
|
||||
--disable_view_protocol
|
||||
SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
||||
|
||||
SELECT ( SELECT MAX(f1) FROM t2 ) FROM v1;
|
||||
--enable_view_protocol
|
||||
|
||||
INSERT INTO t2 VALUES (4);
|
||||
|
||||
#enable after fix MDEV-28573
|
||||
--disable_view_protocol
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
SELECT ( SELECT MAX(f1) FROM t2 ) FROM v1;
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
SELECT ( SELECT MAX(f1) FROM t2 ) FROM t1;
|
||||
--enable_view_protocol
|
||||
|
||||
drop view v1;
|
||||
drop table t1,t2;
|
||||
|
|
|
@ -20,8 +20,8 @@ WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
|
|||
ORDER BY count(*);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 index NULL a 5 NULL 2 Using index
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
3 DEPENDENT SUBQUERY t3 system NULL NULL NULL NULL 0 Const row not found
|
||||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
# should not crash the next statement
|
||||
SELECT 1 FROM t1
|
||||
WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
|
||||
|
|
|
@ -122,27 +122,27 @@ ROW(1,2,3) > (SELECT 1,2,1)
|
|||
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
|
||||
ROW(1,2,3) = (SELECT 1,2,NULL)
|
||||
NULL
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b') AS m;
|
||||
m
|
||||
0
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW('1.5b',2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1.5b'
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 'b',2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b'
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,'2','a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,'c','a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DECIMAL value: 'c'
|
||||
|
@ -232,19 +232,26 @@ a
|
|||
2
|
||||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a < t1.a) order by 1 desc limit 1);
|
||||
a
|
||||
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
b m
|
||||
8 7.5000
|
||||
8 4.5000
|
||||
9 7.5000
|
||||
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
explain extended
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t4.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,<expr_cache><`test`.`t4`.`a`>((/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`)) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from `test`.`t4`
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,<expr_cache><`test`.`t4`.`a`>((/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`)) AS `m` from `test`.`t4`
|
||||
select * from t3 where exists (select * from t2 where t2.b=t3.a);
|
||||
a
|
||||
7
|
||||
|
@ -311,21 +318,34 @@ select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 w
|
|||
b ma
|
||||
7 12
|
||||
create table t5 (a int);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (5);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (2);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
explain extended
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
|
@ -334,7 +354,7 @@ NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
|||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select <expr_cache><`test`.`t2`.`a`>((/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
Note 1003 /* select#1 */ select <expr_cache><`test`.`t2`.`a`>((/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`)) AS `m`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
|
||||
|
@ -490,8 +510,11 @@ SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING t
|
|||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 1
|
||||
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
|
||||
|
@ -509,8 +532,11 @@ joce 40143 2002-10-22 joce
|
|||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 0
|
||||
drop table t1,t2;
|
||||
|
@ -883,6 +909,25 @@ NULL
|
|||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
update t1 set a=NULL where a=2.5;
|
||||
select 1.5 IN (SELECT * from t1);
|
||||
1.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 3.5 IN (SELECT * from t1);
|
||||
3.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 10.5 IN (SELECT * from t1);
|
||||
10.5 IN (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ALL (SELECT * from t1);
|
||||
1.5 > ALL (SELECT * from t1)
|
||||
0
|
||||
select 10.5 > ALL (SELECT * from t1);
|
||||
10.5 > ALL (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
select 10.5 > ANY (SELECT * from t1);
|
||||
10.5 > ANY (SELECT * from t1)
|
||||
1
|
||||
|
@ -893,6 +938,20 @@ Warnings:
|
|||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
select (select a+1) from t1;
|
||||
(select a+1)
|
||||
2.5
|
||||
|
@ -1534,8 +1593,8 @@ create table t3 (a int, b int);
|
|||
insert into t1 values (0,100),(1,2), (1,3), (2,2), (2,7), (2,-1), (3,10);
|
||||
insert into t2 values (0,0), (1,1), (2,1), (3,1), (4,1);
|
||||
insert into t3 values (3,3), (2,2), (1,1);
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) from t3;
|
||||
a (select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1)
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) as m from t3;
|
||||
a m
|
||||
3 1
|
||||
2 2
|
||||
1 2
|
||||
|
@ -1730,8 +1789,8 @@ CREATE TABLE `t3` (`taskgenid` mediumint(9) NOT NULL auto_increment,`dbid` int(1
|
|||
INSERT INTO `t3` (`taskgenid`, `dbid`, `taskid`, `mon`, `tues`,`wed`, `thur`, `fri`, `sat`, `sun`, `how_often`, `userid`, `active`) VALUES (1,-1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1);
|
||||
CREATE TABLE `t4` (`task_id` smallint(6) NOT NULL default '0',`description` varchar(200) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO `t4` (`task_id`, `description`) VALUES (1, 'Daily Check List'),(2, 'Weekly Status');
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') as m FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') as m from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name m
|
||||
-1 Valid 1
|
||||
-1 Valid 2 1
|
||||
-1 Should Not Return 0
|
||||
|
@ -3785,9 +3844,10 @@ SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
|||
2
|
||||
1
|
||||
1
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
SELECT
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
m
|
||||
2
|
||||
1
|
||||
1
|
||||
|
@ -3797,9 +3857,9 @@ COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b))
|
|||
1 1
|
||||
1 1
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
COUNT(DISTINCT t1.b) m
|
||||
2 2
|
||||
1 1
|
||||
1 1
|
||||
|
@ -3823,16 +3883,10 @@ SELECT (
|
|||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1) AS m
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
(
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
m
|
||||
2
|
||||
2
|
||||
2
|
||||
|
@ -6423,11 +6477,10 @@ CREATE TABLE t3 (a int, b int);
|
|||
INSERT INTO t3 VALUES (10,7), (0,7);
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
WHERE t.a != 0 AND t2.a != 0) AS m
|
||||
FROM (SELECT * FROM t3) AS t
|
||||
GROUP BY 2;
|
||||
SUM(DISTINCT b) (SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
SUM(DISTINCT b) m
|
||||
7 NULL
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1,t2 WHERE t.a != 0 or 1=2 LIMIT 1)
|
||||
|
@ -6560,66 +6613,93 @@ CREATE TABLE t3 (f3a int default 1, f3b int default 2);
|
|||
INSERT INTO t3 VALUES (1,1),(2,2);
|
||||
set @old_optimizer_switch = @@session.optimizer_switch;
|
||||
set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,subquery_cache=off,semijoin=off';
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
set @@session.optimizer_switch=@old_optimizer_switch;
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2 AS m;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
select (null, null) = (null, null);
|
||||
(null, null) = (null, null)
|
||||
|
@ -6665,8 +6745,10 @@ INSERT INTO t2 VALUES (1);
|
|||
CREATE TABLE t3 ( c INT );
|
||||
INSERT INTO t3 VALUES (4),(5);
|
||||
SET optimizer_switch='subquery_cache=off';
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||
SELECT
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) AS m
|
||||
FROM t1;
|
||||
m
|
||||
1
|
||||
NULL
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||
|
@ -6883,7 +6965,9 @@ CREATE TABLE t3 (c INT);
|
|||
INSERT INTO t3 VALUES (8),(3);
|
||||
set @@expensive_subquery_limit= 0;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6893,9 +6977,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
@ -6921,7 +7007,9 @@ Handler_read_rnd_deleted 0
|
|||
Handler_read_rnd_next 22
|
||||
set @@expensive_subquery_limit= default;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6931,9 +7019,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
|
|
@ -125,27 +125,27 @@ ROW(1,2,3) > (SELECT 1,2,1)
|
|||
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
|
||||
ROW(1,2,3) = (SELECT 1,2,NULL)
|
||||
NULL
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b') AS m;
|
||||
m
|
||||
0
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW('1.5b',2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1.5b'
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 'b',2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b'
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,'2','a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,'c','a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DECIMAL value: 'c'
|
||||
|
@ -235,19 +235,26 @@ a
|
|||
2
|
||||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a < t1.a) order by 1 desc limit 1);
|
||||
a
|
||||
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
b m
|
||||
8 7.5000
|
||||
8 4.5000
|
||||
9 7.5000
|
||||
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
explain extended
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t4.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,<expr_cache><`test`.`t4`.`a`>((/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`)) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from `test`.`t4`
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,<expr_cache><`test`.`t4`.`a`>((/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`)) AS `m` from `test`.`t4`
|
||||
select * from t3 where exists (select * from t2 where t2.b=t3.a);
|
||||
a
|
||||
7
|
||||
|
@ -314,21 +321,34 @@ select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 w
|
|||
b ma
|
||||
7 12
|
||||
create table t5 (a int);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (5);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (2);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
explain extended
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
|
@ -337,7 +357,7 @@ NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
|||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select <expr_cache><`test`.`t2`.`a`>((/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
Note 1003 /* select#1 */ select <expr_cache><`test`.`t2`.`a`>((/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`)) AS `m`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
|
||||
|
@ -493,8 +513,11 @@ SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING t
|
|||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 1
|
||||
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
|
||||
|
@ -512,8 +535,11 @@ joce 40143 2002-10-22 joce
|
|||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 0
|
||||
drop table t1,t2;
|
||||
|
@ -886,6 +912,25 @@ NULL
|
|||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
update t1 set a=NULL where a=2.5;
|
||||
select 1.5 IN (SELECT * from t1);
|
||||
1.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 3.5 IN (SELECT * from t1);
|
||||
3.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 10.5 IN (SELECT * from t1);
|
||||
10.5 IN (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ALL (SELECT * from t1);
|
||||
1.5 > ALL (SELECT * from t1)
|
||||
0
|
||||
select 10.5 > ALL (SELECT * from t1);
|
||||
10.5 > ALL (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
select 10.5 > ANY (SELECT * from t1);
|
||||
10.5 > ANY (SELECT * from t1)
|
||||
1
|
||||
|
@ -896,6 +941,20 @@ Warnings:
|
|||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
select (select a+1) from t1;
|
||||
(select a+1)
|
||||
2.5
|
||||
|
@ -1537,8 +1596,8 @@ create table t3 (a int, b int);
|
|||
insert into t1 values (0,100),(1,2), (1,3), (2,2), (2,7), (2,-1), (3,10);
|
||||
insert into t2 values (0,0), (1,1), (2,1), (3,1), (4,1);
|
||||
insert into t3 values (3,3), (2,2), (1,1);
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) from t3;
|
||||
a (select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1)
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) as m from t3;
|
||||
a m
|
||||
3 1
|
||||
2 2
|
||||
1 2
|
||||
|
@ -1733,8 +1792,8 @@ CREATE TABLE `t3` (`taskgenid` mediumint(9) NOT NULL auto_increment,`dbid` int(1
|
|||
INSERT INTO `t3` (`taskgenid`, `dbid`, `taskid`, `mon`, `tues`,`wed`, `thur`, `fri`, `sat`, `sun`, `how_often`, `userid`, `active`) VALUES (1,-1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1);
|
||||
CREATE TABLE `t4` (`task_id` smallint(6) NOT NULL default '0',`description` varchar(200) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO `t4` (`task_id`, `description`) VALUES (1, 'Daily Check List'),(2, 'Weekly Status');
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') as m FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') as m from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name m
|
||||
-1 Valid 1
|
||||
-1 Valid 2 1
|
||||
-1 Should Not Return 0
|
||||
|
@ -3785,9 +3844,10 @@ SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
|||
2
|
||||
1
|
||||
1
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
SELECT
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
m
|
||||
2
|
||||
1
|
||||
1
|
||||
|
@ -3797,9 +3857,9 @@ COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b))
|
|||
1 1
|
||||
1 1
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
COUNT(DISTINCT t1.b) m
|
||||
2 2
|
||||
1 1
|
||||
1 1
|
||||
|
@ -3823,16 +3883,10 @@ SELECT (
|
|||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1) AS m
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
(
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
m
|
||||
2
|
||||
2
|
||||
2
|
||||
|
@ -6418,11 +6472,10 @@ CREATE TABLE t3 (a int, b int);
|
|||
INSERT INTO t3 VALUES (10,7), (0,7);
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
WHERE t.a != 0 AND t2.a != 0) AS m
|
||||
FROM (SELECT * FROM t3) AS t
|
||||
GROUP BY 2;
|
||||
SUM(DISTINCT b) (SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
SUM(DISTINCT b) m
|
||||
7 NULL
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1,t2 WHERE t.a != 0 or 1=2 LIMIT 1)
|
||||
|
@ -6555,66 +6608,93 @@ CREATE TABLE t3 (f3a int default 1, f3b int default 2);
|
|||
INSERT INTO t3 VALUES (1,1),(2,2);
|
||||
set @old_optimizer_switch = @@session.optimizer_switch;
|
||||
set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,subquery_cache=off,semijoin=off';
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
set @@session.optimizer_switch=@old_optimizer_switch;
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2 AS m;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
select (null, null) = (null, null);
|
||||
(null, null) = (null, null)
|
||||
|
@ -6660,8 +6740,10 @@ INSERT INTO t2 VALUES (1);
|
|||
CREATE TABLE t3 ( c INT );
|
||||
INSERT INTO t3 VALUES (4),(5);
|
||||
SET optimizer_switch='subquery_cache=off';
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||
SELECT
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) AS m
|
||||
FROM t1;
|
||||
m
|
||||
1
|
||||
NULL
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||
|
@ -6877,7 +6959,9 @@ CREATE TABLE t3 (c INT);
|
|||
INSERT INTO t3 VALUES (8),(3);
|
||||
set @@expensive_subquery_limit= 0;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6887,9 +6971,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
@ -6915,7 +7001,9 @@ Handler_read_rnd_deleted 0
|
|||
Handler_read_rnd_next 22
|
||||
set @@expensive_subquery_limit= default;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6925,9 +7013,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
|
|
@ -121,27 +121,27 @@ ROW(1,2,3) > (SELECT 1,2,1)
|
|||
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
|
||||
ROW(1,2,3) = (SELECT 1,2,NULL)
|
||||
NULL
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b') AS m;
|
||||
m
|
||||
0
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW('1.5b',2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1.5b'
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 'b',2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b'
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,'2','a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,'c','a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DECIMAL value: 'c'
|
||||
|
@ -231,19 +231,26 @@ a
|
|||
2
|
||||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a < t1.a) order by 1 desc limit 1);
|
||||
a
|
||||
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
b m
|
||||
8 7.5000
|
||||
8 4.5000
|
||||
9 7.5000
|
||||
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
explain extended
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t4.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,(/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from `test`.`t4`
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,(/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`) AS `m` from `test`.`t4`
|
||||
select * from t3 where exists (select * from t2 where t2.b=t3.a);
|
||||
a
|
||||
7
|
||||
|
@ -310,21 +317,34 @@ select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 w
|
|||
b ma
|
||||
7 12
|
||||
create table t5 (a int);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (5);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (2);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
explain extended
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
|
@ -333,7 +353,7 @@ NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
|||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select (/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
Note 1003 /* select#1 */ select (/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`) AS `m`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
|
||||
|
@ -489,8 +509,11 @@ SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING t
|
|||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 1
|
||||
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
|
||||
|
@ -508,8 +531,11 @@ joce 40143 2002-10-22 joce
|
|||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 0
|
||||
drop table t1,t2;
|
||||
|
@ -882,6 +908,25 @@ NULL
|
|||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
update t1 set a=NULL where a=2.5;
|
||||
select 1.5 IN (SELECT * from t1);
|
||||
1.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 3.5 IN (SELECT * from t1);
|
||||
3.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 10.5 IN (SELECT * from t1);
|
||||
10.5 IN (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ALL (SELECT * from t1);
|
||||
1.5 > ALL (SELECT * from t1)
|
||||
0
|
||||
select 10.5 > ALL (SELECT * from t1);
|
||||
10.5 > ALL (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
select 10.5 > ANY (SELECT * from t1);
|
||||
10.5 > ANY (SELECT * from t1)
|
||||
1
|
||||
|
@ -892,6 +937,20 @@ Warnings:
|
|||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
select (select a+1) from t1;
|
||||
(select a+1)
|
||||
2.5
|
||||
|
@ -1533,8 +1592,8 @@ create table t3 (a int, b int);
|
|||
insert into t1 values (0,100),(1,2), (1,3), (2,2), (2,7), (2,-1), (3,10);
|
||||
insert into t2 values (0,0), (1,1), (2,1), (3,1), (4,1);
|
||||
insert into t3 values (3,3), (2,2), (1,1);
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) from t3;
|
||||
a (select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1)
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) as m from t3;
|
||||
a m
|
||||
3 1
|
||||
2 2
|
||||
1 2
|
||||
|
@ -1729,8 +1788,8 @@ CREATE TABLE `t3` (`taskgenid` mediumint(9) NOT NULL auto_increment,`dbid` int(1
|
|||
INSERT INTO `t3` (`taskgenid`, `dbid`, `taskid`, `mon`, `tues`,`wed`, `thur`, `fri`, `sat`, `sun`, `how_often`, `userid`, `active`) VALUES (1,-1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1);
|
||||
CREATE TABLE `t4` (`task_id` smallint(6) NOT NULL default '0',`description` varchar(200) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO `t4` (`task_id`, `description`) VALUES (1, 'Daily Check List'),(2, 'Weekly Status');
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') as m FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') as m from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name m
|
||||
-1 Valid 1
|
||||
-1 Valid 2 1
|
||||
-1 Should Not Return 0
|
||||
|
@ -3781,9 +3840,10 @@ SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
|||
2
|
||||
1
|
||||
1
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
SELECT
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
m
|
||||
2
|
||||
1
|
||||
1
|
||||
|
@ -3793,9 +3853,9 @@ COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b))
|
|||
1 1
|
||||
1 1
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
COUNT(DISTINCT t1.b) m
|
||||
2 2
|
||||
1 1
|
||||
1 1
|
||||
|
@ -3819,16 +3879,10 @@ SELECT (
|
|||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1) AS m
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
(
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
m
|
||||
2
|
||||
2
|
||||
2
|
||||
|
@ -6414,11 +6468,10 @@ CREATE TABLE t3 (a int, b int);
|
|||
INSERT INTO t3 VALUES (10,7), (0,7);
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
WHERE t.a != 0 AND t2.a != 0) AS m
|
||||
FROM (SELECT * FROM t3) AS t
|
||||
GROUP BY 2;
|
||||
SUM(DISTINCT b) (SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
SUM(DISTINCT b) m
|
||||
7 NULL
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1,t2 WHERE t.a != 0 or 1=2 LIMIT 1)
|
||||
|
@ -6551,66 +6604,93 @@ CREATE TABLE t3 (f3a int default 1, f3b int default 2);
|
|||
INSERT INTO t3 VALUES (1,1),(2,2);
|
||||
set @old_optimizer_switch = @@session.optimizer_switch;
|
||||
set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,subquery_cache=off,semijoin=off';
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
set @@session.optimizer_switch=@old_optimizer_switch;
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2 AS m;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
select (null, null) = (null, null);
|
||||
(null, null) = (null, null)
|
||||
|
@ -6656,8 +6736,10 @@ INSERT INTO t2 VALUES (1);
|
|||
CREATE TABLE t3 ( c INT );
|
||||
INSERT INTO t3 VALUES (4),(5);
|
||||
SET optimizer_switch='subquery_cache=off';
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||
SELECT
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) AS m
|
||||
FROM t1;
|
||||
m
|
||||
1
|
||||
NULL
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||
|
@ -6874,7 +6956,9 @@ CREATE TABLE t3 (c INT);
|
|||
INSERT INTO t3 VALUES (8),(3);
|
||||
set @@expensive_subquery_limit= 0;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6884,9 +6968,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
@ -6912,7 +6998,9 @@ Handler_read_rnd_deleted 0
|
|||
Handler_read_rnd_next 22
|
||||
set @@expensive_subquery_limit= default;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6922,9 +7010,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
|
|
@ -124,27 +124,27 @@ ROW(1,2,3) > (SELECT 1,2,1)
|
|||
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
|
||||
ROW(1,2,3) = (SELECT 1,2,NULL)
|
||||
NULL
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b') AS m;
|
||||
m
|
||||
0
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW('1.5b',2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1.5b'
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 'b',2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b'
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,'2','a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,'c','a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DECIMAL value: 'c'
|
||||
|
@ -234,19 +234,26 @@ a
|
|||
2
|
||||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a < t1.a) order by 1 desc limit 1);
|
||||
a
|
||||
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
b m
|
||||
8 7.5000
|
||||
8 4.5000
|
||||
9 7.5000
|
||||
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
explain extended
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t4.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,(/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from `test`.`t4`
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,(/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`) AS `m` from `test`.`t4`
|
||||
select * from t3 where exists (select * from t2 where t2.b=t3.a);
|
||||
a
|
||||
7
|
||||
|
@ -313,21 +320,34 @@ select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 w
|
|||
b ma
|
||||
7 12
|
||||
create table t5 (a int);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (5);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (2);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
explain extended
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
|
@ -336,7 +356,7 @@ NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
|||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select (/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
Note 1003 /* select#1 */ select (/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`) AS `m`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
|
||||
|
@ -492,8 +512,11 @@ SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING t
|
|||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 1
|
||||
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
|
||||
|
@ -511,8 +534,11 @@ joce 40143 2002-10-22 joce
|
|||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 0
|
||||
drop table t1,t2;
|
||||
|
@ -885,6 +911,25 @@ NULL
|
|||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
update t1 set a=NULL where a=2.5;
|
||||
select 1.5 IN (SELECT * from t1);
|
||||
1.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 3.5 IN (SELECT * from t1);
|
||||
3.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 10.5 IN (SELECT * from t1);
|
||||
10.5 IN (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ALL (SELECT * from t1);
|
||||
1.5 > ALL (SELECT * from t1)
|
||||
0
|
||||
select 10.5 > ALL (SELECT * from t1);
|
||||
10.5 > ALL (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
select 10.5 > ANY (SELECT * from t1);
|
||||
10.5 > ANY (SELECT * from t1)
|
||||
1
|
||||
|
@ -895,6 +940,20 @@ Warnings:
|
|||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
select (select a+1) from t1;
|
||||
(select a+1)
|
||||
2.5
|
||||
|
@ -1536,8 +1595,8 @@ create table t3 (a int, b int);
|
|||
insert into t1 values (0,100),(1,2), (1,3), (2,2), (2,7), (2,-1), (3,10);
|
||||
insert into t2 values (0,0), (1,1), (2,1), (3,1), (4,1);
|
||||
insert into t3 values (3,3), (2,2), (1,1);
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) from t3;
|
||||
a (select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1)
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) as m from t3;
|
||||
a m
|
||||
3 1
|
||||
2 2
|
||||
1 2
|
||||
|
@ -1732,8 +1791,8 @@ CREATE TABLE `t3` (`taskgenid` mediumint(9) NOT NULL auto_increment,`dbid` int(1
|
|||
INSERT INTO `t3` (`taskgenid`, `dbid`, `taskid`, `mon`, `tues`,`wed`, `thur`, `fri`, `sat`, `sun`, `how_often`, `userid`, `active`) VALUES (1,-1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1);
|
||||
CREATE TABLE `t4` (`task_id` smallint(6) NOT NULL default '0',`description` varchar(200) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO `t4` (`task_id`, `description`) VALUES (1, 'Daily Check List'),(2, 'Weekly Status');
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') as m FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') as m from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name m
|
||||
-1 Valid 1
|
||||
-1 Valid 2 1
|
||||
-1 Should Not Return 0
|
||||
|
@ -3788,9 +3847,10 @@ SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
|||
2
|
||||
1
|
||||
1
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
SELECT
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
m
|
||||
2
|
||||
1
|
||||
1
|
||||
|
@ -3800,9 +3860,9 @@ COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b))
|
|||
1 1
|
||||
1 1
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
COUNT(DISTINCT t1.b) m
|
||||
2 2
|
||||
1 1
|
||||
1 1
|
||||
|
@ -3826,16 +3886,10 @@ SELECT (
|
|||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1) AS m
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
(
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
m
|
||||
2
|
||||
2
|
||||
2
|
||||
|
@ -6429,11 +6483,10 @@ CREATE TABLE t3 (a int, b int);
|
|||
INSERT INTO t3 VALUES (10,7), (0,7);
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
WHERE t.a != 0 AND t2.a != 0) AS m
|
||||
FROM (SELECT * FROM t3) AS t
|
||||
GROUP BY 2;
|
||||
SUM(DISTINCT b) (SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
SUM(DISTINCT b) m
|
||||
7 NULL
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1,t2 WHERE t.a != 0 or 1=2 LIMIT 1)
|
||||
|
@ -6566,66 +6619,93 @@ CREATE TABLE t3 (f3a int default 1, f3b int default 2);
|
|||
INSERT INTO t3 VALUES (1,1),(2,2);
|
||||
set @old_optimizer_switch = @@session.optimizer_switch;
|
||||
set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,subquery_cache=off,semijoin=off';
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
set @@session.optimizer_switch=@old_optimizer_switch;
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2 AS m;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
select (null, null) = (null, null);
|
||||
(null, null) = (null, null)
|
||||
|
@ -6671,8 +6751,10 @@ INSERT INTO t2 VALUES (1);
|
|||
CREATE TABLE t3 ( c INT );
|
||||
INSERT INTO t3 VALUES (4),(5);
|
||||
SET optimizer_switch='subquery_cache=off';
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||
SELECT
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) AS m
|
||||
FROM t1;
|
||||
m
|
||||
1
|
||||
NULL
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||
|
@ -6889,7 +6971,9 @@ CREATE TABLE t3 (c INT);
|
|||
INSERT INTO t3 VALUES (8),(3);
|
||||
set @@expensive_subquery_limit= 0;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6899,9 +6983,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
@ -6927,7 +7013,9 @@ Handler_read_rnd_deleted 0
|
|||
Handler_read_rnd_next 58
|
||||
set @@expensive_subquery_limit= default;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6937,9 +7025,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
|
|
@ -121,27 +121,27 @@ ROW(1,2,3) > (SELECT 1,2,1)
|
|||
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
|
||||
ROW(1,2,3) = (SELECT 1,2,NULL)
|
||||
NULL
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b') AS m;
|
||||
m
|
||||
0
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b');
|
||||
(SELECT 1.5,2,'a') = ROW('1.5b',2,'b')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW('1.5b',2,'b') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: '1.5b'
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
|
||||
(SELECT 'b',2,'a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'b'
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a');
|
||||
(SELECT 1.5,2,'a') = ROW(1.5,'2','a')
|
||||
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'2','a') AS m;
|
||||
m
|
||||
1
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
|
||||
(SELECT 1.5,'c','a') = ROW(1.5,2,'a')
|
||||
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a') AS m;
|
||||
m
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DECIMAL value: 'c'
|
||||
|
@ -231,19 +231,26 @@ a
|
|||
2
|
||||
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a < t1.a) order by 1 desc limit 1);
|
||||
a
|
||||
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
b m
|
||||
8 7.5000
|
||||
8 4.5000
|
||||
9 7.5000
|
||||
explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
|
||||
explain extended
|
||||
select
|
||||
b,
|
||||
(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) as m
|
||||
from t4;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t4.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,<expr_cache><`test`.`t4`.`a`>((/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`)) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from `test`.`t4`
|
||||
Note 1003 /* select#1 */ select `test`.`t4`.`b` AS `b`,<expr_cache><`test`.`t4`.`a`>((/* select#2 */ select avg(`test`.`t2`.`a` + (/* select#3 */ select min(`test`.`t3`.`a`) from `test`.`t3` where `test`.`t3`.`a` >= `test`.`t4`.`a`)) from `test`.`t2`)) AS `m` from `test`.`t4`
|
||||
select * from t3 where exists (select * from t2 where t2.b=t3.a);
|
||||
a
|
||||
7
|
||||
|
@ -310,21 +317,34 @@ select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 w
|
|||
b ma
|
||||
7 12
|
||||
create table t5 (a int);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (5);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
insert into t5 values (2);
|
||||
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
m a
|
||||
NULL 1
|
||||
2 2
|
||||
explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
|
||||
explain extended
|
||||
select
|
||||
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) as m,
|
||||
a
|
||||
from t2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
|
@ -333,7 +353,7 @@ NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
|||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 /* select#1 */ select <expr_cache><`test`.`t2`.`a`>((/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
Note 1003 /* select#1 */ select <expr_cache><`test`.`t2`.`a`>((/* select#2 */ select 2 from dual where 2 = `test`.`t2`.`a` union /* select#3 */ select `test`.`t5`.`a` from `test`.`t5` where `test`.`t5`.`a` = `test`.`t2`.`a`)) AS `m`,`test`.`t2`.`a` AS `a` from `test`.`t2`
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
|
||||
|
@ -489,8 +509,11 @@ SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING t
|
|||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 1
|
||||
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
|
||||
|
@ -508,8 +531,11 @@ joce 40143 2002-10-22 joce
|
|||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
|
||||
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000)
|
||||
SELECT
|
||||
*,
|
||||
topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) AS m
|
||||
FROM t2;
|
||||
mot topic date pseudo m
|
||||
joce 40143 2002-10-22 joce 1
|
||||
joce 43506 2002-10-22 joce 0
|
||||
drop table t1,t2;
|
||||
|
@ -882,6 +908,25 @@ NULL
|
|||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
update t1 set a=NULL where a=2.5;
|
||||
select 1.5 IN (SELECT * from t1);
|
||||
1.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 3.5 IN (SELECT * from t1);
|
||||
3.5 IN (SELECT * from t1)
|
||||
1
|
||||
select 10.5 IN (SELECT * from t1);
|
||||
10.5 IN (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ALL (SELECT * from t1);
|
||||
1.5 > ALL (SELECT * from t1)
|
||||
0
|
||||
select 10.5 > ALL (SELECT * from t1);
|
||||
10.5 > ALL (SELECT * from t1)
|
||||
NULL
|
||||
select 1.5 > ANY (SELECT * from t1);
|
||||
1.5 > ANY (SELECT * from t1)
|
||||
NULL
|
||||
select 10.5 > ANY (SELECT * from t1);
|
||||
10.5 > ANY (SELECT * from t1)
|
||||
1
|
||||
|
@ -892,6 +937,20 @@ Warnings:
|
|||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
explain extended select (select a+1) from t1;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1249 Select 2 was reduced during optimization
|
||||
Note 1003 select `test`.`t1`.`a` + 1 AS `(select a+1)` from `test`.`t1`
|
||||
select (select a+1) from t1;
|
||||
(select a+1)
|
||||
2.5
|
||||
|
@ -1533,8 +1592,8 @@ create table t3 (a int, b int);
|
|||
insert into t1 values (0,100),(1,2), (1,3), (2,2), (2,7), (2,-1), (3,10);
|
||||
insert into t2 values (0,0), (1,1), (2,1), (3,1), (4,1);
|
||||
insert into t3 values (3,3), (2,2), (1,1);
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) from t3;
|
||||
a (select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1)
|
||||
select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) as m from t3;
|
||||
a m
|
||||
3 1
|
||||
2 2
|
||||
1 2
|
||||
|
@ -1729,8 +1788,8 @@ CREATE TABLE `t3` (`taskgenid` mediumint(9) NOT NULL auto_increment,`dbid` int(1
|
|||
INSERT INTO `t3` (`taskgenid`, `dbid`, `taskid`, `mon`, `tues`,`wed`, `thur`, `fri`, `sat`, `sun`, `how_often`, `userid`, `active`) VALUES (1,-1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1);
|
||||
CREATE TABLE `t4` (`task_id` smallint(6) NOT NULL default '0',`description` varchar(200) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO `t4` (`task_id`, `description`) VALUES (1, 'Daily Check List'),(2, 'Weekly Status');
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')
|
||||
select dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') as m FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') as m from t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
|
||||
dbid name m
|
||||
-1 Valid 1
|
||||
-1 Valid 2 1
|
||||
-1 Should Not Return 0
|
||||
|
@ -3781,9 +3840,10 @@ SELECT (SELECT COUNT(DISTINCT t1.b) from t2) FROM t1 GROUP BY t1.a;
|
|||
2
|
||||
1
|
||||
1
|
||||
SELECT (SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
SELECT
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
(SELECT COUNT(DISTINCT t1.b) from t2 union select 1 from t2 where 12 < 3)
|
||||
m
|
||||
2
|
||||
1
|
||||
1
|
||||
|
@ -3793,9 +3853,9 @@ COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b))
|
|||
1 1
|
||||
1 1
|
||||
SELECT COUNT(DISTINCT t1.b),
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
(SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3) AS m
|
||||
FROM t1 GROUP BY t1.a;
|
||||
COUNT(DISTINCT t1.b) (SELECT COUNT(DISTINCT t1.b) union select 1 from DUAL where 12 < 3)
|
||||
COUNT(DISTINCT t1.b) m
|
||||
2 2
|
||||
1 1
|
||||
1 1
|
||||
|
@ -3819,16 +3879,10 @@ SELECT (
|
|||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1) AS m
|
||||
FROM t1 t2
|
||||
GROUP BY t2.a;
|
||||
(
|
||||
SELECT (
|
||||
SELECT (
|
||||
SELECT COUNT(DISTINCT t1.b)
|
||||
)
|
||||
)
|
||||
FROM t1 GROUP BY t1.a LIMIT 1)
|
||||
m
|
||||
2
|
||||
2
|
||||
2
|
||||
|
@ -6414,11 +6468,10 @@ CREATE TABLE t3 (a int, b int);
|
|||
INSERT INTO t3 VALUES (10,7), (0,7);
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
WHERE t.a != 0 AND t2.a != 0) AS m
|
||||
FROM (SELECT * FROM t3) AS t
|
||||
GROUP BY 2;
|
||||
SUM(DISTINCT b) (SELECT t2.a FROM t1 JOIN t2 ON t2.c != 0
|
||||
WHERE t.a != 0 AND t2.a != 0)
|
||||
SUM(DISTINCT b) m
|
||||
7 NULL
|
||||
SELECT SUM(DISTINCT b),
|
||||
(SELECT t2.a FROM t1,t2 WHERE t.a != 0 or 1=2 LIMIT 1)
|
||||
|
@ -6551,66 +6604,93 @@ CREATE TABLE t3 (f3a int default 1, f3b int default 2);
|
|||
INSERT INTO t3 VALUES (1,1),(2,2);
|
||||
set @old_optimizer_switch = @@session.optimizer_switch;
|
||||
set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,subquery_cache=off,semijoin=off';
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
set @@session.optimizer_switch=@old_optimizer_switch;
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) FROM t2;
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) NOT IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) NOT IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
SELECT (SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2;
|
||||
SELECT
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1) FROM t2 AS m;
|
||||
(SELECT f3a FROM t3 where f3a > 3) IN (SELECT f1a FROM t1)
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) FROM t2;
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a,f3a FROM t3 where f3a > 3) IN (SELECT f1a,f1a FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) FROM t2;
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m
|
||||
FROM t2;
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
SELECT (SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1);
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1)
|
||||
SELECT
|
||||
(SELECT f3a, f3b FROM t3 where f3a > 3) IN (SELECT f1a, f1b FROM t1) AS m;
|
||||
m
|
||||
NULL
|
||||
select (null, null) = (null, null);
|
||||
(null, null) = (null, null)
|
||||
|
@ -6656,8 +6736,10 @@ INSERT INTO t2 VALUES (1);
|
|||
CREATE TABLE t3 ( c INT );
|
||||
INSERT INTO t3 VALUES (4),(5);
|
||||
SET optimizer_switch='subquery_cache=off';
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||
SELECT
|
||||
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) AS m
|
||||
FROM t1;
|
||||
m
|
||||
1
|
||||
NULL
|
||||
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||
|
@ -6874,7 +6956,9 @@ CREATE TABLE t3 (c INT);
|
|||
INSERT INTO t3 VALUES (8),(3);
|
||||
set @@expensive_subquery_limit= 0;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6884,9 +6968,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
@ -6912,7 +6998,9 @@ Handler_read_rnd_deleted 0
|
|||
Handler_read_rnd_next 22
|
||||
set @@expensive_subquery_limit= default;
|
||||
EXPLAIN
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY alias1 ALL NULL NULL NULL NULL 2
|
||||
|
@ -6922,9 +7010,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||
3 SUBQUERY t3 ALL NULL NULL NULL NULL 2
|
||||
flush status;
|
||||
SELECT (SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
SELECT
|
||||
(SELECT MIN(b) FROM t1, t2
|
||||
WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3))) AS m
|
||||
FROM t2 alias1, t1 alias2, t1 alias3;
|
||||
(SELECT MIN(b) FROM t1, t2 WHERE b = a AND (b = alias1.b OR EXISTS (SELECT * FROM t3)))
|
||||
m
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
|
|
|
@ -166,14 +166,14 @@ show create table servers;
|
|||
Table Create Table
|
||||
servers CREATE TABLE `servers` (
|
||||
`Server_name` char(64) NOT NULL DEFAULT '',
|
||||
`Host` char(64) NOT NULL DEFAULT '',
|
||||
`Host` varchar(2048) NOT NULL DEFAULT '',
|
||||
`Db` char(64) NOT NULL DEFAULT '',
|
||||
`Username` char(80) NOT NULL DEFAULT '',
|
||||
`Password` char(64) NOT NULL DEFAULT '',
|
||||
`Port` int(4) NOT NULL DEFAULT 0,
|
||||
`Socket` char(64) NOT NULL DEFAULT '',
|
||||
`Wrapper` char(64) NOT NULL DEFAULT '',
|
||||
`Owner` char(64) NOT NULL DEFAULT '',
|
||||
`Owner` varchar(512) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Server_name`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='MySQL Foreign Servers table'
|
||||
show create table proc;
|
||||
|
|
|
@ -146,14 +146,14 @@ show create table servers;
|
|||
Table Create Table
|
||||
servers CREATE TABLE `servers` (
|
||||
`Server_name` char(64) NOT NULL DEFAULT '',
|
||||
`Host` char(64) NOT NULL DEFAULT '',
|
||||
`Host` varchar(2048) NOT NULL DEFAULT '',
|
||||
`Db` char(64) NOT NULL DEFAULT '',
|
||||
`Username` char(80) NOT NULL DEFAULT '',
|
||||
`Password` char(64) NOT NULL DEFAULT '',
|
||||
`Port` int(4) NOT NULL DEFAULT 0,
|
||||
`Socket` char(64) NOT NULL DEFAULT '',
|
||||
`Wrapper` char(64) NOT NULL DEFAULT '',
|
||||
`Owner` char(64) NOT NULL DEFAULT '',
|
||||
`Owner` varchar(512) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Server_name`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='MySQL Foreign Servers table'
|
||||
show create table proc;
|
||||
|
|
297
mysql-test/main/system_mysql_db_fix50568.result
Normal file
297
mysql-test/main/system_mysql_db_fix50568.result
Normal file
|
@ -0,0 +1,297 @@
|
|||
use test;
|
||||
CREATE TABLE IF NOT EXISTS db ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary 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, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db,User), KEY User (User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Database privileges';
|
||||
Warnings:
|
||||
Warning 1280 Name 'Host' ignored for PRIMARY key.
|
||||
CREATE TABLE IF NOT EXISTS host ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary 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, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Host privileges; Merged with database privileges';
|
||||
Warnings:
|
||||
Warning 1280 Name 'Host' ignored for PRIMARY key.
|
||||
CREATE TABLE IF NOT EXISTS user ( Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary 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, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tablespace_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL, ssl_cipher BLOB NOT NULL, x509_issuer BLOB NOT NULL, x509_subject BLOB NOT NULL, max_questions int(11) unsigned DEFAULT 0 NOT NULL, max_updates int(11) unsigned DEFAULT 0 NOT NULL, max_connections int(11) unsigned DEFAULT 0 NOT NULL, max_user_connections int(11) DEFAULT 0 NOT NULL, plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL, authentication_string TEXT NOT NULL, PRIMARY KEY Host (Host,User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Users and global privileges';
|
||||
Warnings:
|
||||
Warning 1280 Name 'Host' ignored for PRIMARY key.
|
||||
CREATE TABLE IF NOT EXISTS func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
|
||||
CREATE TABLE IF NOT EXISTS plugin ( name varchar(64) DEFAULT '' NOT NULL, dl varchar(128) DEFAULT '' NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci comment='MySQL plugins';
|
||||
CREATE TABLE IF NOT EXISTS servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
|
||||
CREATE TABLE IF NOT EXISTS tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
|
||||
CREATE TABLE IF NOT EXISTS columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
|
||||
CREATE TABLE IF NOT EXISTS help_topic ( help_topic_id int unsigned not null, name char(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url text not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
|
||||
CREATE TABLE IF NOT EXISTS help_category ( help_category_id smallint unsigned not null, name char(64) not null, parent_category_id smallint unsigned null, url text not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help categories';
|
||||
CREATE TABLE IF NOT EXISTS help_relation ( help_topic_id int unsigned not null references help_topic, help_keyword_id int unsigned not null references help_keyword, primary key (help_keyword_id, help_topic_id) ) engine=MyISAM CHARACTER SET utf8 comment='keyword-topic relation';
|
||||
CREATE TABLE IF NOT EXISTS help_keyword ( help_keyword_id int unsigned not null, name char(64) not null, primary key (help_keyword_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help keywords';
|
||||
CREATE TABLE IF NOT EXISTS time_zone_name ( Name char(64) NOT NULL, Time_zone_id int unsigned NOT NULL, PRIMARY KEY Name (Name) ) engine=MyISAM CHARACTER SET utf8 comment='Time zone names';
|
||||
Warnings:
|
||||
Warning 1280 Name 'Name' ignored for PRIMARY key.
|
||||
CREATE TABLE IF NOT EXISTS time_zone ( Time_zone_id int unsigned NOT NULL auto_increment, Use_leap_seconds enum('Y','N') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY TzId (Time_zone_id) ) engine=MyISAM CHARACTER SET utf8 comment='Time zones';
|
||||
Warnings:
|
||||
Warning 1280 Name 'TzId' ignored for PRIMARY key.
|
||||
CREATE TABLE IF NOT EXISTS time_zone_transition ( Time_zone_id int unsigned NOT NULL, Transition_time bigint signed NOT NULL, Transition_type_id int unsigned NOT NULL, PRIMARY KEY TzIdTranTime (Time_zone_id, Transition_time) ) engine=MyISAM CHARACTER SET utf8 comment='Time zone transitions';
|
||||
Warnings:
|
||||
Warning 1280 Name 'TzIdTranTime' ignored for PRIMARY key.
|
||||
CREATE TABLE IF NOT EXISTS time_zone_transition_type ( Time_zone_id int unsigned NOT NULL, Transition_type_id int unsigned NOT NULL, Offset int signed DEFAULT 0 NOT NULL, Is_DST tinyint unsigned DEFAULT 0 NOT NULL, Abbreviation char(8) DEFAULT '' NOT NULL, PRIMARY KEY TzIdTrTId (Time_zone_id, Transition_type_id) ) engine=MyISAM CHARACTER SET utf8 comment='Time zone transition types';
|
||||
Warnings:
|
||||
Warning 1280 Name 'TzIdTrTId' ignored for PRIMARY key.
|
||||
CREATE TABLE IF NOT EXISTS time_zone_leap_second ( Transition_time bigint signed NOT NULL, Correction int signed NOT NULL, PRIMARY KEY TranTime (Transition_time) ) engine=MyISAM CHARACTER SET utf8 comment='Leap seconds information for time zones';
|
||||
Warnings:
|
||||
Warning 1280 Name 'TranTime' ignored for PRIMARY key.
|
||||
CREATE TABLE IF NOT EXISTS proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum( 'CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob DEFAULT '' NOT NULL, body longblob NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp, modified timestamp, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'IGNORE_BAD_TABLE_OPTIONS', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment text collate utf8_bin NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db,name,type)) engine=MyISAM character set utf8 comment='Stored Procedures';
|
||||
CREATE TABLE IF NOT EXISTS procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) COLLATE utf8_general_ci DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
|
||||
CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', name char(64) CHARACTER SET utf8 NOT NULL default '', body longblob NOT NULL, definer char(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL, modified TIMESTAMP NOT NULL, last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db, name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events';
|
||||
CREATE TABLE IF NOT EXISTS ndb_binlog_index (Position BIGINT UNSIGNED NOT NULL, File VARCHAR(255) NOT NULL, epoch BIGINT UNSIGNED NOT NULL, inserts BIGINT UNSIGNED NOT NULL, updates BIGINT UNSIGNED NOT NULL, deletes BIGINT UNSIGNED NOT NULL, schemaops BIGINT UNSIGNED NOT NULL, PRIMARY KEY(epoch)) ENGINE=MYISAM;
|
||||
CREATE TABLE IF NOT EXISTS proxies_priv (Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Proxied_host char(60) binary DEFAULT '' NOT NULL, Proxied_user char(16) binary DEFAULT '' NOT NULL, With_grant BOOL DEFAULT 0 NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY Host (Host,User,Proxied_host,Proxied_user), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User proxy privileges';
|
||||
Warnings:
|
||||
Warning 1280 Name 'Host' ignored for PRIMARY key.
|
||||
show tables;
|
||||
Tables_in_db
|
||||
column_stats
|
||||
columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
global_priv
|
||||
gtid_slave_pos
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
help_topic
|
||||
host
|
||||
index_stats
|
||||
innodb_index_stats
|
||||
innodb_table_stats
|
||||
ndb_binlog_index
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
proxies_priv
|
||||
roles_mapping
|
||||
servers
|
||||
slow_log
|
||||
table_stats
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
time_zone_name
|
||||
time_zone_transition
|
||||
time_zone_transition_type
|
||||
transaction_registry
|
||||
user
|
||||
show create table db;
|
||||
Table Create Table
|
||||
db CREATE TABLE `db` (
|
||||
`Host` char(60) NOT NULL DEFAULT '',
|
||||
`Db` char(64) NOT NULL DEFAULT '',
|
||||
`User` char(80) NOT NULL DEFAULT '',
|
||||
`Select_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Insert_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Update_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Delete_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Create_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Drop_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Grant_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`References_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Index_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Alter_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Execute_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Event_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
`Delete_history_priv` enum('N','Y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'N',
|
||||
PRIMARY KEY (`Host`,`Db`,`User`),
|
||||
KEY `User` (`User`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Database privileges'
|
||||
show create table user;
|
||||
View Create View character_set_client collation_connection
|
||||
user CREATE ALGORITHM=UNDEFINED DEFINER=`mariadb.sys`@`localhost` SQL SECURITY DEFINER VIEW `user` AS select `global_priv`.`Host` AS `Host`,`global_priv`.`User` AS `User`,if(json_value(`global_priv`.`Priv`,'$.plugin') in ('mysql_native_password','mysql_old_password'),ifnull(json_value(`global_priv`.`Priv`,'$.authentication_string'),''),'') AS `Password`,if(json_value(`global_priv`.`Priv`,'$.access') & 1,'Y','N') AS `Select_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 2,'Y','N') AS `Insert_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 4,'Y','N') AS `Update_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 8,'Y','N') AS `Delete_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 16,'Y','N') AS `Create_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 32,'Y','N') AS `Drop_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 64,'Y','N') AS `Reload_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 128,'Y','N') AS `Shutdown_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 256,'Y','N') AS `Process_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 512,'Y','N') AS `File_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 1024,'Y','N') AS `Grant_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 2048,'Y','N') AS `References_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 4096,'Y','N') AS `Index_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 8192,'Y','N') AS `Alter_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 16384,'Y','N') AS `Show_db_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 32768,'Y','N') AS `Super_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 65536,'Y','N') AS `Create_tmp_table_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 131072,'Y','N') AS `Lock_tables_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 262144,'Y','N') AS `Execute_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 524288,'Y','N') AS `Repl_slave_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 1048576,'Y','N') AS `Repl_client_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 2097152,'Y','N') AS `Create_view_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 4194304,'Y','N') AS `Show_view_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 8388608,'Y','N') AS `Create_routine_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 16777216,'Y','N') AS `Alter_routine_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 33554432,'Y','N') AS `Create_user_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 67108864,'Y','N') AS `Event_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 134217728,'Y','N') AS `Trigger_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 268435456,'Y','N') AS `Create_tablespace_priv`,if(json_value(`global_priv`.`Priv`,'$.access') & 536870912,'Y','N') AS `Delete_history_priv`,elt(ifnull(json_value(`global_priv`.`Priv`,'$.ssl_type'),0) + 1,'','ANY','X509','SPECIFIED') AS `ssl_type`,ifnull(json_value(`global_priv`.`Priv`,'$.ssl_cipher'),'') AS `ssl_cipher`,ifnull(json_value(`global_priv`.`Priv`,'$.x509_issuer'),'') AS `x509_issuer`,ifnull(json_value(`global_priv`.`Priv`,'$.x509_subject'),'') AS `x509_subject`,cast(ifnull(json_value(`global_priv`.`Priv`,'$.max_questions'),0) as unsigned) AS `max_questions`,cast(ifnull(json_value(`global_priv`.`Priv`,'$.max_updates'),0) as unsigned) AS `max_updates`,cast(ifnull(json_value(`global_priv`.`Priv`,'$.max_connections'),0) as unsigned) AS `max_connections`,cast(ifnull(json_value(`global_priv`.`Priv`,'$.max_user_connections'),0) as signed) AS `max_user_connections`,ifnull(json_value(`global_priv`.`Priv`,'$.plugin'),'') AS `plugin`,ifnull(json_value(`global_priv`.`Priv`,'$.authentication_string'),'') AS `authentication_string`,if(ifnull(json_value(`global_priv`.`Priv`,'$.password_last_changed'),1) = 0,'Y','N') AS `password_expired`,elt(ifnull(json_value(`global_priv`.`Priv`,'$.is_role'),0) + 1,'N','Y') AS `is_role`,ifnull(json_value(`global_priv`.`Priv`,'$.default_role'),'') AS `default_role`,cast(ifnull(json_value(`global_priv`.`Priv`,'$.max_statement_time'),0.0) as decimal(12,6)) AS `max_statement_time` from `global_priv` latin1 latin1_swedish_ci
|
||||
show create table func;
|
||||
Table Create Table
|
||||
func CREATE TABLE `func` (
|
||||
`name` char(64) NOT NULL DEFAULT '',
|
||||
`ret` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`dl` char(128) NOT NULL DEFAULT '',
|
||||
`type` enum('function','aggregate') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
||||
PRIMARY KEY (`name`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='User defined functions'
|
||||
show create table global_priv;
|
||||
Table Create Table
|
||||
global_priv CREATE TABLE `global_priv` (
|
||||
`Host` char(60) NOT NULL DEFAULT '',
|
||||
`User` char(80) NOT NULL DEFAULT '',
|
||||
`Priv` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '{}' CHECK (json_valid(`Priv`)),
|
||||
PRIMARY KEY (`Host`,`User`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Users and global privileges'
|
||||
show create table tables_priv;
|
||||
Table Create Table
|
||||
tables_priv CREATE TABLE `tables_priv` (
|
||||
`Host` char(60) NOT NULL DEFAULT '',
|
||||
`Db` char(64) NOT NULL DEFAULT '',
|
||||
`User` char(80) NOT NULL DEFAULT '',
|
||||
`Table_name` char(64) NOT NULL DEFAULT '',
|
||||
`Grantor` char(141) NOT NULL DEFAULT '',
|
||||
`Timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger','Delete versioning rows') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
|
||||
`Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`),
|
||||
KEY `Grantor` (`Grantor`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Table privileges'
|
||||
show create table columns_priv;
|
||||
Table Create Table
|
||||
columns_priv CREATE TABLE `columns_priv` (
|
||||
`Host` char(60) NOT NULL DEFAULT '',
|
||||
`Db` char(64) NOT NULL DEFAULT '',
|
||||
`User` char(80) NOT NULL DEFAULT '',
|
||||
`Table_name` char(64) NOT NULL DEFAULT '',
|
||||
`Column_name` char(64) NOT NULL DEFAULT '',
|
||||
`Timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`,`Column_name`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Column privileges'
|
||||
show create table procs_priv;
|
||||
Table Create Table
|
||||
procs_priv CREATE TABLE `procs_priv` (
|
||||
`Host` char(60) NOT NULL DEFAULT '',
|
||||
`Db` char(64) NOT NULL DEFAULT '',
|
||||
`User` char(80) NOT NULL DEFAULT '',
|
||||
`Routine_name` char(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
|
||||
`Routine_type` enum('FUNCTION','PROCEDURE','PACKAGE','PACKAGE BODY') NOT NULL,
|
||||
`Grantor` char(141) NOT NULL DEFAULT '',
|
||||
`Proc_priv` set('Execute','Alter Routine','Grant') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
|
||||
`Timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
PRIMARY KEY (`Host`,`Db`,`User`,`Routine_name`,`Routine_type`),
|
||||
KEY `Grantor` (`Grantor`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Procedure privileges'
|
||||
show create table servers;
|
||||
Table Create Table
|
||||
servers CREATE TABLE `servers` (
|
||||
`Server_name` char(64) NOT NULL DEFAULT '',
|
||||
`Host` varchar(2048) NOT NULL DEFAULT '',
|
||||
`Db` char(64) NOT NULL DEFAULT '',
|
||||
`Username` char(80) NOT NULL DEFAULT '',
|
||||
`Password` char(64) NOT NULL DEFAULT '',
|
||||
`Port` int(4) NOT NULL DEFAULT 0,
|
||||
`Socket` char(64) NOT NULL DEFAULT '',
|
||||
`Wrapper` char(64) NOT NULL DEFAULT '',
|
||||
`Owner` varchar(512) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`Server_name`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='MySQL Foreign Servers table'
|
||||
show create table proc;
|
||||
Table Create Table
|
||||
proc CREATE TABLE `proc` (
|
||||
`db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`name` char(64) NOT NULL DEFAULT '',
|
||||
`type` enum('FUNCTION','PROCEDURE','PACKAGE','PACKAGE BODY') NOT NULL,
|
||||
`specific_name` char(64) NOT NULL DEFAULT '',
|
||||
`language` enum('SQL') NOT NULL DEFAULT 'SQL',
|
||||
`sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL DEFAULT 'CONTAINS_SQL',
|
||||
`is_deterministic` enum('YES','NO') NOT NULL DEFAULT 'NO',
|
||||
`security_type` enum('INVOKER','DEFINER') NOT NULL DEFAULT 'DEFINER',
|
||||
`param_list` blob NOT NULL,
|
||||
`returns` longblob NOT NULL,
|
||||
`body` longblob NOT NULL,
|
||||
`definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') NOT NULL DEFAULT '',
|
||||
`comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
|
||||
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`body_utf8` longblob DEFAULT NULL,
|
||||
`aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
|
||||
PRIMARY KEY (`db`,`name`,`type`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Stored Procedures'
|
||||
show create table event;
|
||||
Table Create Table
|
||||
event CREATE TABLE `event` (
|
||||
`db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`name` char(64) NOT NULL DEFAULT '',
|
||||
`body` longblob NOT NULL,
|
||||
`definer` char(141) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`execute_at` datetime DEFAULT NULL,
|
||||
`interval_value` int(11) DEFAULT NULL,
|
||||
`interval_field` enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') DEFAULT NULL,
|
||||
`created` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
`modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`last_executed` datetime DEFAULT NULL,
|
||||
`starts` datetime DEFAULT NULL,
|
||||
`ends` datetime DEFAULT NULL,
|
||||
`status` enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL DEFAULT 'ENABLED',
|
||||
`on_completion` enum('DROP','PRESERVE') NOT NULL DEFAULT 'DROP',
|
||||
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') NOT NULL DEFAULT '',
|
||||
`comment` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
|
||||
`originator` int(10) unsigned NOT NULL,
|
||||
`time_zone` char(64) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'SYSTEM',
|
||||
`character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
|
||||
`body_utf8` longblob DEFAULT NULL,
|
||||
PRIMARY KEY (`db`,`name`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
|
||||
show create table general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` bigint(21) unsigned NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
`command_type` varchar(64) NOT NULL,
|
||||
`argument` mediumtext NOT NULL
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='General log'
|
||||
show create table slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
`rows_sent` int(11) NOT NULL,
|
||||
`rows_examined` int(11) NOT NULL,
|
||||
`db` varchar(512) NOT NULL,
|
||||
`last_insert_id` int(11) NOT NULL,
|
||||
`insert_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
`sql_text` mediumtext NOT NULL,
|
||||
`thread_id` bigint(21) unsigned NOT NULL,
|
||||
`rows_affected` int(11) NOT NULL
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='Slow log'
|
||||
show create table table_stats;
|
||||
Table Create Table
|
||||
table_stats CREATE TABLE `table_stats` (
|
||||
`db_name` varchar(64) NOT NULL,
|
||||
`table_name` varchar(64) NOT NULL,
|
||||
`cardinality` bigint(21) unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`db_name`,`table_name`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=0 COMMENT='Statistics on Tables'
|
||||
show create table column_stats;
|
||||
Table Create Table
|
||||
column_stats CREATE TABLE `column_stats` (
|
||||
`db_name` varchar(64) NOT NULL,
|
||||
`table_name` varchar(64) NOT NULL,
|
||||
`column_name` varchar(64) NOT NULL,
|
||||
`min_value` varbinary(255) DEFAULT NULL,
|
||||
`max_value` varbinary(255) DEFAULT NULL,
|
||||
`nulls_ratio` decimal(12,4) DEFAULT NULL,
|
||||
`avg_length` decimal(12,4) DEFAULT NULL,
|
||||
`avg_frequency` decimal(12,4) DEFAULT NULL,
|
||||
`hist_size` tinyint(3) unsigned DEFAULT NULL,
|
||||
`hist_type` enum('SINGLE_PREC_HB','DOUBLE_PREC_HB') DEFAULT NULL,
|
||||
`histogram` varbinary(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`db_name`,`table_name`,`column_name`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=0 COMMENT='Statistics on Columns'
|
||||
show create table index_stats;
|
||||
Table Create Table
|
||||
index_stats CREATE TABLE `index_stats` (
|
||||
`db_name` varchar(64) NOT NULL,
|
||||
`table_name` varchar(64) NOT NULL,
|
||||
`index_name` varchar(64) NOT NULL,
|
||||
`prefix_arity` int(11) unsigned NOT NULL,
|
||||
`avg_frequency` decimal(12,4) DEFAULT NULL,
|
||||
PRIMARY KEY (`db_name`,`table_name`,`index_name`,`prefix_arity`)
|
||||
) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin PAGE_CHECKSUM=1 TRANSACTIONAL=0 COMMENT='Statistics on Indexes'
|
||||
DROP VIEW user;
|
||||
DROP TABLE db, host, func, plugin, tables_priv, columns_priv, procs_priv, servers, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, event, proxies_priv, general_log, slow_log, innodb_index_stats, innodb_table_stats, transaction_registry, table_stats, column_stats, index_stats, roles_mapping, gtid_slave_pos, global_priv, ndb_binlog_index;
|
||||
show tables;
|
||||
Tables_in_test
|
99
mysql-test/main/system_mysql_db_fix50568.test
Normal file
99
mysql-test/main/system_mysql_db_fix50568.test
Normal file
|
@ -0,0 +1,99 @@
|
|||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
# Don't run this test if $MYSQL_FIX_PRIVILEGE_TABLES isn't set
|
||||
# to the location of mysql_fix_privilege_tables.sql
|
||||
if (!$MYSQL_FIX_PRIVILEGE_TABLES)
|
||||
{
|
||||
skip Test needs MYSQL_FIX_PRIVILEGE_TABLES;
|
||||
}
|
||||
|
||||
#
|
||||
# This is the test for mysql_fix_privilege_tables
|
||||
# It checks that a system tables from mysql 5.5.68
|
||||
# can be upgraded to current system table format
|
||||
#
|
||||
# Note: If this test fails, don't be confused about the errors reported
|
||||
# by mysql-test-run This shows warnings generated by
|
||||
# mysql_fix_system_tables which should be ignored.
|
||||
# Instead, concentrate on the errors in r/system_mysql_db.reject
|
||||
|
||||
use test;
|
||||
|
||||
# create system tables as in mysql-5.5.68
|
||||
CREATE TABLE IF NOT EXISTS db ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary 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, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db,User), KEY User (User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Database privileges';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS host ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary 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, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Host privileges; Merged with database privileges';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS user ( Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary 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, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Reload_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Shutdown_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Process_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_db_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Super_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_slave_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Repl_client_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_user_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Event_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Trigger_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tablespace_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci DEFAULT '' NOT NULL, ssl_cipher BLOB NOT NULL, x509_issuer BLOB NOT NULL, x509_subject BLOB NOT NULL, max_questions int(11) unsigned DEFAULT 0 NOT NULL, max_updates int(11) unsigned DEFAULT 0 NOT NULL, max_connections int(11) unsigned DEFAULT 0 NOT NULL, max_user_connections int(11) DEFAULT 0 NOT NULL, plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL, authentication_string TEXT NOT NULL, PRIMARY KEY Host (Host,User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Users and global privileges';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS plugin ( name varchar(64) DEFAULT '' NOT NULL, dl varchar(128) DEFAULT '' NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci comment='MySQL plugins';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view','Trigger') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS help_topic ( help_topic_id int unsigned not null, name char(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url text not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS help_category ( help_category_id smallint unsigned not null, name char(64) not null, parent_category_id smallint unsigned null, url text not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help categories';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS help_relation ( help_topic_id int unsigned not null references help_topic, help_keyword_id int unsigned not null references help_keyword, primary key (help_keyword_id, help_topic_id) ) engine=MyISAM CHARACTER SET utf8 comment='keyword-topic relation';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS help_keyword ( help_keyword_id int unsigned not null, name char(64) not null, primary key (help_keyword_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help keywords';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS time_zone_name ( Name char(64) NOT NULL, Time_zone_id int unsigned NOT NULL, PRIMARY KEY Name (Name) ) engine=MyISAM CHARACTER SET utf8 comment='Time zone names';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS time_zone ( Time_zone_id int unsigned NOT NULL auto_increment, Use_leap_seconds enum('Y','N') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY TzId (Time_zone_id) ) engine=MyISAM CHARACTER SET utf8 comment='Time zones';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS time_zone_transition ( Time_zone_id int unsigned NOT NULL, Transition_time bigint signed NOT NULL, Transition_type_id int unsigned NOT NULL, PRIMARY KEY TzIdTranTime (Time_zone_id, Transition_time) ) engine=MyISAM CHARACTER SET utf8 comment='Time zone transitions';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS time_zone_transition_type ( Time_zone_id int unsigned NOT NULL, Transition_type_id int unsigned NOT NULL, Offset int signed DEFAULT 0 NOT NULL, Is_DST tinyint unsigned DEFAULT 0 NOT NULL, Abbreviation char(8) DEFAULT '' NOT NULL, PRIMARY KEY TzIdTrTId (Time_zone_id, Transition_type_id) ) engine=MyISAM CHARACTER SET utf8 comment='Time zone transition types';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS time_zone_leap_second ( Transition_time bigint signed NOT NULL, Correction int signed NOT NULL, PRIMARY KEY TranTime (Transition_time) ) engine=MyISAM CHARACTER SET utf8 comment='Leap seconds information for time zones';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum( 'CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob DEFAULT '' NOT NULL, body longblob NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp, modified timestamp, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'IGNORE_BAD_TABLE_OPTIONS', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment text collate utf8_bin NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db,name,type)) engine=MyISAM character set utf8 comment='Stored Procedures';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) COLLATE utf8_general_ci DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', name char(64) CHARACTER SET utf8 NOT NULL default '', body longblob NOT NULL, definer char(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL, modified TIMESTAMP NOT NULL, last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db, name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events';
|
||||
|
||||
|
||||
CREATE TABLE IF NOT EXISTS ndb_binlog_index (Position BIGINT UNSIGNED NOT NULL, File VARCHAR(255) NOT NULL, epoch BIGINT UNSIGNED NOT NULL, inserts BIGINT UNSIGNED NOT NULL, updates BIGINT UNSIGNED NOT NULL, deletes BIGINT UNSIGNED NOT NULL, schemaops BIGINT UNSIGNED NOT NULL, PRIMARY KEY(epoch)) ENGINE=MYISAM;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS proxies_priv (Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Proxied_host char(60) binary DEFAULT '' NOT NULL, Proxied_user char(16) binary DEFAULT '' NOT NULL, With_grant BOOL DEFAULT 0 NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY Host (Host,User,Proxied_host,Proxied_user), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User proxy privileges';
|
||||
|
||||
|
||||
-- disable_result_log
|
||||
# Run the mysql_fix_privilege_tables.sql using "mysql --force"
|
||||
--exec $MYSQL --force test < $MYSQL_FIX_PRIVILEGE_TABLES
|
||||
-- enable_result_log
|
||||
|
||||
# Dump the tables that should be compared
|
||||
-- source include/system_db_struct.inc
|
||||
|
||||
# Drop all tables created by this test
|
||||
DROP VIEW user;
|
||||
DROP TABLE db, host, func, plugin, tables_priv, columns_priv, procs_priv, servers, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, event, proxies_priv, general_log, slow_log, innodb_index_stats, innodb_table_stats, transaction_registry, table_stats, column_stats, index_stats, roles_mapping, gtid_slave_pos, global_priv, ndb_binlog_index;
|
||||
|
||||
# check that we dropped all system tables
|
||||
show tables;
|
||||
|
||||
# End of 4.1 tests
|
|
@ -3131,5 +3131,124 @@ INSERT INTO t1 (VALUES (IGNORE) UNION VALUES (IGNORE));
|
|||
ERROR HY000: 'ignore' is not allowed in this context
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-28603: VIEW with table value constructor used as single-value
|
||||
# subquery contains subquery as its first element
|
||||
#
|
||||
create table t1 (a int);
|
||||
insert into t1 values (3), (7), (1);
|
||||
create table t2 (b int);
|
||||
insert into t2 values (1), (2);
|
||||
create view v as select (values ((select * from t1 where a > 5))) as m from t2;
|
||||
select (values ((select * from t1 where a > 5))) as m from t2;
|
||||
m
|
||||
7
|
||||
7
|
||||
select * from v;
|
||||
m
|
||||
7
|
||||
7
|
||||
with cte as ( select (values ((select * from t1 where a > 5))) as m from t2 ) select * from cte;
|
||||
m
|
||||
7
|
||||
7
|
||||
explain select (values ((select * from t1 where a > 5))) as m from t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
4 SUBQUERY <derived2> ALL NULL NULL NULL NULL 2
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
3 SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
explain select * from v;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
5 SUBQUERY <derived3> ALL NULL NULL NULL NULL 2
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
4 SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
explain with cte as ( select (values ((select * from t1 where a > 5))) as m from t2 ) select * from cte;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
5 SUBQUERY <derived3> ALL NULL NULL NULL NULL 2
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
4 SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
prepare stmt from "select (values ((select * from t1 where a > 5))) as m from t2";
|
||||
execute stmt;
|
||||
m
|
||||
7
|
||||
7
|
||||
execute stmt;
|
||||
m
|
||||
7
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from "select * from v";
|
||||
execute stmt;
|
||||
m
|
||||
7
|
||||
7
|
||||
execute stmt;
|
||||
m
|
||||
7
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from "with cte as ( select (values ((select * from t1 where a > 5))) as m from t2 ) select * from cte";
|
||||
execute stmt;
|
||||
m
|
||||
7
|
||||
7
|
||||
execute stmt;
|
||||
m
|
||||
7
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
show create view v;
|
||||
View Create View character_set_client collation_connection
|
||||
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select (values ((select `t1`.`a` from `t1` where `t1`.`a` > 5))) AS `m` from `t2` latin1 latin1_swedish_ci
|
||||
drop view v;
|
||||
prepare stmt from "create view v as select (values ((select * from t1 where a > 5))) as m from t2";
|
||||
execute stmt;
|
||||
show create view v;
|
||||
View Create View character_set_client collation_connection
|
||||
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select (values ((select `t1`.`a` from `t1` where `t1`.`a` > 5))) AS `m` from `t2` latin1 latin1_swedish_ci
|
||||
select * from v;
|
||||
m
|
||||
7
|
||||
7
|
||||
drop view v;
|
||||
execute stmt;
|
||||
show create view v;
|
||||
View Create View character_set_client collation_connection
|
||||
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select (values ((select `t1`.`a` from `t1` where `t1`.`a` > 5))) AS `m` from `t2` latin1 latin1_swedish_ci
|
||||
select * from v;
|
||||
m
|
||||
7
|
||||
7
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from "show create view v";
|
||||
execute stmt;
|
||||
View Create View character_set_client collation_connection
|
||||
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select (values ((select `t1`.`a` from `t1` where `t1`.`a` > 5))) AS `m` from `t2` latin1 latin1_swedish_ci
|
||||
execute stmt;
|
||||
View Create View character_set_client collation_connection
|
||||
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select (values ((select `t1`.`a` from `t1` where `t1`.`a` > 5))) AS `m` from `t2` latin1 latin1_swedish_ci
|
||||
deallocate prepare stmt;
|
||||
drop view v;
|
||||
create view v as select (values ((select * from t1 where a > 5
|
||||
union
|
||||
select * from t1 where a > 7))) as m from t2;
|
||||
select (values ((select * from t1 where a > 5
|
||||
union
|
||||
select * from t1 where a > 7))) as m from t2;
|
||||
m
|
||||
7
|
||||
7
|
||||
select * from v;
|
||||
m
|
||||
7
|
||||
7
|
||||
show create view v;
|
||||
View Create View character_set_client collation_connection
|
||||
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select (values ((select `t1`.`a` from `t1` where `t1`.`a` > 5 union select `t1`.`a` from `t1` where `t1`.`a` > 7))) AS `m` from `t2` latin1 latin1_swedish_ci
|
||||
drop view v;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
|
|
@ -1736,6 +1736,80 @@ INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT));
|
|||
INSERT INTO t1 (VALUES (IGNORE) UNION VALUES (IGNORE));
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-28603: VIEW with table value constructor used as single-value
|
||||
--echo # subquery contains subquery as its first element
|
||||
--echo #
|
||||
|
||||
create table t1 (a int);
|
||||
insert into t1 values (3), (7), (1);
|
||||
create table t2 (b int);
|
||||
insert into t2 values (1), (2);
|
||||
|
||||
let $q=
|
||||
select (values ((select * from t1 where a > 5))) as m from t2;
|
||||
|
||||
eval create view v as $q;
|
||||
|
||||
eval $q;
|
||||
eval select * from v;
|
||||
eval with cte as ( $q ) select * from cte;
|
||||
|
||||
eval explain $q;
|
||||
eval explain select * from v;
|
||||
eval explain with cte as ( $q ) select * from cte;
|
||||
|
||||
eval prepare stmt from "$q";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
eval prepare stmt from "select * from v";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
eval prepare stmt from "with cte as ( $q ) select * from cte";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
show create view v;
|
||||
|
||||
drop view v;
|
||||
|
||||
eval prepare stmt from "create view v as $q";
|
||||
execute stmt;
|
||||
show create view v;
|
||||
select * from v;
|
||||
drop view v;
|
||||
execute stmt;
|
||||
show create view v;
|
||||
select * from v;
|
||||
deallocate prepare stmt;
|
||||
|
||||
prepare stmt from "show create view v";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
drop view v;
|
||||
|
||||
let $q=
|
||||
select (values ((select * from t1 where a > 5
|
||||
union
|
||||
select * from t1 where a > 7))) as m from t2;
|
||||
|
||||
eval create view v as $q;
|
||||
|
||||
eval $q;
|
||||
eval select * from v;
|
||||
|
||||
show create view v;
|
||||
|
||||
drop view v;
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
|
@ -2420,5 +2420,31 @@ SET @@global.mysql56_temporal_format=default;
|
|||
DROP PROCEDURE p1;
|
||||
SET timestamp=DEFAULT;
|
||||
#
|
||||
# MDEV-26765 UNIX_TIMESTAMP(CURRENT_TIME()) return null ?!?
|
||||
#
|
||||
SET @@time_zone='+00:00';
|
||||
SET timestamp=1234567;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
CURRENT_TIMESTAMP
|
||||
1970-01-15 06:56:07
|
||||
SELECT UNIX_TIMESTAMP(CURRENT_TIME());
|
||||
UNIX_TIMESTAMP(CURRENT_TIME())
|
||||
1234567
|
||||
SELECT UNIX_TIMESTAMP(TIME'06:56:07');
|
||||
UNIX_TIMESTAMP(TIME'06:56:07')
|
||||
1234567
|
||||
SELECT UNIX_TIMESTAMP(TIME'10:20:30');
|
||||
UNIX_TIMESTAMP(TIME'10:20:30')
|
||||
1246830
|
||||
CREATE OR REPLACE TABLE t1 (a TIME);
|
||||
INSERT INTO t1 VALUES (TIME'06:56:07'),('10:20:30');
|
||||
SELECT UNIX_TIMESTAMP(a) FROM t1 ORDER BY a;
|
||||
UNIX_TIMESTAMP(a)
|
||||
1234567
|
||||
1246830
|
||||
DROP TABLE t1;
|
||||
SET @@time_zone=DEFAULT;
|
||||
SET TIMESTAMP=DEFAULT;
|
||||
#
|
||||
# End of 10.4 tests
|
||||
#
|
||||
|
|
|
@ -1566,6 +1566,25 @@ SET @@global.mysql56_temporal_format=default;
|
|||
DROP PROCEDURE p1;
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-26765 UNIX_TIMESTAMP(CURRENT_TIME()) return null ?!?
|
||||
--echo #
|
||||
|
||||
SET @@time_zone='+00:00';
|
||||
SET timestamp=1234567;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
SELECT UNIX_TIMESTAMP(CURRENT_TIME());
|
||||
SELECT UNIX_TIMESTAMP(TIME'06:56:07');
|
||||
SELECT UNIX_TIMESTAMP(TIME'10:20:30');
|
||||
CREATE OR REPLACE TABLE t1 (a TIME);
|
||||
INSERT INTO t1 VALUES (TIME'06:56:07'),('10:20:30');
|
||||
SELECT UNIX_TIMESTAMP(a) FROM t1 ORDER BY a;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET @@time_zone=DEFAULT;
|
||||
SET TIMESTAMP=DEFAULT;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,3 +1,7 @@
|
|||
#
|
||||
# MDEV-30698 Cover missing test cases for mariadb-binlog options
|
||||
# --raw [and] --flashback
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
FLUSH LOGS;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
|
|
@ -702,6 +702,10 @@ include/assert.inc [Table t1 should have 0 rows.]
|
|||
# 6- Rows must be present upon restoring from flashback
|
||||
include/assert.inc [Table t1 should have six rows.]
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-30698 Cover missing test cases for mariadb-binlog options
|
||||
# --raw [and] --flashback
|
||||
#
|
||||
SET binlog_format=statement;
|
||||
Warnings:
|
||||
Warning 1105 MariaDB Galera and flashback do not support binlog format: STATEMENT
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
# respective log file specified by --result-file, and shown on-disk. This test
|
||||
# ensures that the log files on disk, created by mariadb-binlog, have the most
|
||||
# up-to-date events from the master.
|
||||
# Option --raw works only with --read-from-remote-server, otherwise returns error.
|
||||
#
|
||||
# Methodology:
|
||||
# On the master, rotate to a newly active binlog file and write an event to
|
||||
|
@ -20,6 +21,14 @@
|
|||
--source include/linux.inc
|
||||
--source include/have_log_bin.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30698 Cover missing test cases for mariadb-binlog options
|
||||
--echo # --raw [and] --flashback
|
||||
--echo #
|
||||
# Test --raw format without -R (--read-from-remote-server)
|
||||
--error 1 # Error 1 operation not permitted
|
||||
--exec $MYSQL_BINLOG --raw --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --stop-never --result-file=$MYSQLTEST_VARDIR/tmp/ master-bin.000001
|
||||
|
||||
# Create newly active log
|
||||
CREATE TABLE t1 (a int);
|
||||
FLUSH LOGS;
|
||||
|
|
|
@ -364,6 +364,14 @@ FLUSH LOGS;
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-30698 Cover missing test cases for mariadb-binlog options
|
||||
--echo # --raw [and] --flashback
|
||||
--echo #
|
||||
|
||||
--error 1 # --raw mode and --flashback mode are not allowed
|
||||
--exec $MYSQL_BINLOG -vv -B --raw --read-from-remote-server --user=root --host=127.0.0.1 --port=$MASTER_MYPORT master-bin.000003> $MYSQLTEST_VARDIR/tmp/mysqlbinlog_row_flashback_8.sql
|
||||
|
||||
## Clear
|
||||
SET binlog_format=statement;
|
||||
--error ER_FLASHBACK_NOT_SUPPORTED
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
--let $binlog_limit= 5,1
|
||||
--source suite/rpl/include/rpl_binlog_errors.inc
|
||||
--source suite/rpl/t/rpl_binlog_errors.test
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_cant_read_event_incident.inc
|
||||
--source suite/rpl/t/rpl_cant_read_event_incident.test
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_checksum.inc
|
||||
--source suite/rpl/t/rpl_checksum.test
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_checksum_cache.inc
|
||||
--source suite/rpl/t/rpl_checksum_cache.test
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_corruption.inc
|
||||
--source suite/rpl/t/rpl_corruption.test
|
||||
|
|
|
@ -558,3 +558,27 @@ a
|
|||
connection server_1;
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
#
|
||||
# Start of 10.2 tests
|
||||
#
|
||||
#
|
||||
# MDEV-10134 Add full support for DEFAULT
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(100) DEFAULT BINLOG_GTID_POS("master-bin.000001", 600));
|
||||
ERROR HY000: Function or expression 'binlog_gtid_pos()' cannot be used in the DEFAULT clause of `a`
|
||||
#
|
||||
# End of 10.2 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.3 tests
|
||||
#
|
||||
#
|
||||
# MDEV-13967 Parameter data type control for Item_long_func
|
||||
#
|
||||
SELECT MASTER_GTID_WAIT(ROW(1,1),'str');
|
||||
ERROR HY000: Illegal parameter data type row for operation 'master_gtid_wait'
|
||||
SELECT MASTER_GTID_WAIT('str',ROW(1,1));
|
||||
ERROR HY000: Illegal parameter data type row for operation 'master_gtid_wait'
|
||||
#
|
||||
# End of 10.3 tests
|
||||
#
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_gtid_basic.inc
|
||||
--source suite/rpl/t/rpl_gtid_basic.test
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_incident.inc
|
||||
--source suite/rpl/t/rpl_incident.test
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_init_slave_errors.inc
|
||||
--source suite/rpl/t/rpl_init_slave_errors.test
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_loaddata_local.inc
|
||||
--source suite/rpl/t/rpl_loaddata_local.test
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
--source suite/rpl/include/rpl_loadfile.inc
|
||||
--source suite/rpl/t/rpl_loadfile.test
|
||||
|
||||
--let $datadir= `SELECT @@datadir`
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
--source suite/rpl/include/rpl_packet.inc
|
||||
--source suite/rpl/t/rpl_packet.test
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue