DROP DATABASE IF EXISTS func_bit;
CREATE DATABASE func_bit;
USE func_bit;
CREATE TABLE t1 (a DECIMAL(30,1) NOT NULL);
INSERT INTO t1 VALUES (99999999999999999999999999999.9);
INSERT INTO t1 VALUES (28446744073709551615);
INSERT INTO t1 VALUES (2.9);
INSERT INTO t1 VALUES (-2.9);
INSERT INTO t1 VALUES (-28446744073709551615);
INSERT INTO t1 VALUES (-99999999999999999999999999999.9);
SELECT a, a & a, a | a, a^0, a<<2, a>>2, bit_count(a) FROM t1;
a	a & a	a | a	a^0	a<<2	a>>2	bit_count(a)
99999999999999999999999999999.9	18446744073709551615	18446744073709551615	18446744073709551615	18446744073709551612	4611686018427387903	64
28446744073709551615.0	18446744073709551615	18446744073709551615	18446744073709551615	18446744073709551612	4611686018427387903	64
2.9	3	3	3	12	0	2
-2.9	18446744073709551613	18446744073709551613	18446744073709551613	18446744073709551604	4611686018427387903	63
-28446744073709551615.0	9223372036854775808	9223372036854775808	9223372036854775808	0	2305843009213693952	1
-99999999999999999999999999999.9	9223372036854775808	9223372036854775808	9223372036854775808	0	2305843009213693952	1
DROP TABLE t1;
CREATE TABLE t1 (a DECIMAL(20,0) NOT NULL);
INSERT INTO t1 VALUES (99999999999999999999);
INSERT INTO t1 VALUES (28446744073709551615);
INSERT INTO t1 VALUES (-28446744073709551615);
INSERT INTO t1 VALUES (-99999999999999999999);
SELECT a, a & a, a | a, a^0, a<<2, a<<0, a>>1, bit_count(a) FROM t1;
a	a & a	a | a	a^0	a<<2	a<<0	a>>1	bit_count(a)
99999999999999999999	18446744073709551615	18446744073709551615	18446744073709551615	18446744073709551612	18446744073709551615	9223372036854775807	64
28446744073709551615	18446744073709551615	18446744073709551615	18446744073709551615	18446744073709551612	18446744073709551615	9223372036854775807	64
-28446744073709551615	9223372036854775808	9223372036854775808	9223372036854775808	0	9223372036854775808	4611686018427387904	1
-99999999999999999999	9223372036854775808	9223372036854775808	9223372036854775808	0	9223372036854775808	4611686018427387904	1
DROP TABLE t1;
CREATE TABLE t1 (a DECIMAL(10,1) NOT NULL);
INSERT INTO t1 VALUES (999999999.9);
INSERT INTO t1 VALUES (3.5);
INSERT INTO t1 VALUES (3.4);
INSERT INTO t1 VALUES (2.9);
INSERT INTO t1 VALUES (-2.9);
INSERT INTO t1 VALUES (-3.4);
INSERT INTO t1 VALUES (-3.5);
INSERT INTO t1 VALUES (-999999999.9);
SELECT a, a & a, a | a, a^0, a<<2, a>>2, bit_count(a) FROM t1;
a	a & a	a | a	a^0	a<<2	a>>2	bit_count(a)
999999999.9	1000000000	1000000000	1000000000	4000000000	250000000	13
3.5	4	4	4	16	1	1
3.4	3	3	3	12	0	2
2.9	3	3	3	12	0	2
-2.9	18446744073709551613	18446744073709551613	18446744073709551613	18446744073709551604	4611686018427387903	63
-3.4	18446744073709551613	18446744073709551613	18446744073709551613	18446744073709551604	4611686018427387903	63
-3.5	18446744073709551612	18446744073709551612	18446744073709551612	18446744073709551600	4611686018427387903	62
-999999999.9	18446744072709551616	18446744072709551616	18446744072709551616	18446744069709551616	4611686018177387904	43
DROP TABLE t1;
CREATE TABLE t1 (a DECIMAL(10,0) NOT NULL);
INSERT INTO t1 VALUES (9999999999);
INSERT INTO t1 VALUES (3);
INSERT INTO t1 VALUES (-3);
INSERT INTO t1 VALUES (-9999999999);
SELECT a, a & a, a | a, a^0, a<<2, a<<0, a>>1, bit_count(a) FROM t1;
a	a & a	a | a	a^0	a<<2	a<<0	a>>1	bit_count(a)
9999999999	9999999999	9999999999	9999999999	39999999996	9999999999	4999999999	20
3	3	3	3	12	3	1	2
-3	18446744073709551613	18446744073709551613	18446744073709551613	18446744073709551604	18446744073709551613	9223372036854775806	63
-9999999999	18446744063709551617	18446744063709551617	18446744063709551617	18446744033709551620	18446744063709551617	9223372031854775808	45
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30) NOT NULL);
INSERT INTO t1 VALUES ('2.9');
INSERT INTO t1 VALUES ('18446744073709551610');
SELECT a, a & a, a | a, a^0, a<<1, a<<0, a>>1, bit_count(a) FROM t1;
a	a & a	a | a	a^0	a<<1	a<<0	a>>1	bit_count(a)
2.9	3	3	3	6	3	1	2
18446744073709551610	18446744073709551610	18446744073709551610	18446744073709551610	18446744073709551604	18446744073709551610	9223372036854775805	62
DROP TABLE t1;
CREATE TABLE t1 (a DOUBLE NOT NULL);
INSERT INTO t1 VALUES (2.9);
INSERT INTO t1 VALUES (10e30);
SELECT a, a & a, a | a, a^0, a<<2, a<<0, a>>1, bit_count(a) FROM t1;
a	a & a	a | a	a^0	a<<2	a<<0	a>>1	bit_count(a)
2.9	3	3	3	12	3	1	2
1e31	18446744073709551615	18446744073709551615	18446744073709551615	18446744073709551612	18446744073709551615	9223372036854775807	64
DROP TABLE t1;
CREATE TABLE t1 (a TIME(1) NOT NULL);
INSERT INTO t1 VALUES ('00:00:02.9');
INSERT INTO t1 VALUES ('800:00:02.9');
INSERT INTO t1 VALUES ('-800:00:02.9');
SELECT a, a & a, a | a, a^0, a<<1, a<<0, a>>1, bit_count(a) FROM t1;
a	a & a	a | a	a^0	a<<1	a<<0	a>>1	bit_count(a)
00:00:02.9	3	3	3	6	3	1	2
800:00:02.9	8000003	8000003	8000003	16000006	8000003	4000001	9
-800:00:02.9	18446744073701551613	18446744073701551613	18446744073701551613	18446744073693551610	18446744073701551613	9223372036850775806	56
DROP TABLE t1;
CREATE TABLE t1 (a DATETIME(1) NOT NULL);
INSERT INTO t1 VALUES ('2001-01-01 00:00:02.9');
INSERT INTO t1 VALUES ('2001-01-01 23:59:59.9');
INSERT INTO t1 VALUES ('9999-12-31 23:59:59.9');
SELECT a, a & a, a | a, a^0, a<<1, a<<0, a>>1, bit_count(a) FROM t1;
a	a & a	a | a	a^0	a<<1	a<<0	a>>1	bit_count(a)
2001-01-01 00:00:02.9	20010101000003	20010101000003	20010101000003	40020202000006	20010101000003	10005050500001	24
2001-01-01 23:59:59.9	20010101235960	20010101235960	20010101235960	40020202471920	20010101235960	10005050617980	25
9999-12-31 23:59:59.9	99991231235960	99991231235960	99991231235960	199982462471920	99991231235960	49995615617980	23
DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL);
INSERT INTO t1 VALUES (63),(64),(65);
SELECT a, 1<>a FROM t1;
a	1<>a
63	9223372036854775808	0
64	0	0
65	0	0
DROP TABLE t1;
#
# MCOL-4666 Empty set when using BIT OR and BIT AND functions in WHERE
#
CREATE TABLE t1 (a DECIMAL(18,2));
INSERT INTO t1 VALUES (3.4);
SELECT a, a|4, a&4 FROM t1;
a	a|4	a&4
3.40	7	0
SELECT * FROM t1 WHERE (a|4) <> a;
a
3.40
SELECT * FROM t1 WHERE (a&4) <> a;
a
3.40
DROP TABLE t1;
DROP DATABASE func_bit;
USE test;