mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	according to the standard.
The idea is to use Field-classes to implement stored routines
variables. Also, we should provide facade to Item-hierarchy
by Item_field class (it is necessary, since SRVs take part
in expressions).
The patch fixes the following bugs:
  - BUG#8702: Stored Procedures: No Error/Warning shown for inappropriate data 
    type matching; 
 
  - BUG#8768: Functions: For any unsigned data type, -ve values can be passed 
    and returned; 
 
  - BUG#8769: Functions: For Int datatypes, out of range values can be passed 
    and returned; 
 
  - BUG#9078: STORED PROCDURE: Decimal digits are not displayed when we use 
    DECIMAL datatype; 
 
  - BUG#9572: Stored procedures: variable type declarations ignored; 
 
  - BUG#12903: upper function does not work inside a function; 
 
  - BUG#13705: parameters to stored procedures are not verified; 
 
  - BUG#13808: ENUM type stored procedure parameter accepts non-enumerated
    data; 
 
  - BUG#13909: Varchar Stored Procedure Parameter always BINARY string (ignores 
    CHARACTER SET); 
 
  - BUG#14161: Stored procedure cannot retrieve bigint unsigned;
  - BUG#14188: BINARY variables have no 0x00 padding;
  - BUG#15148: Stored procedure variables accept non-scalar values;
		
	
		
			
				
	
	
		
			108 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
DROP TABLE IF EXISTS t1, t2;
 | 
						|
CREATE TABLE t1 (id INTEGER);
 | 
						|
CREATE TABLE t2 (id INTEGER);
 | 
						|
INSERT INTO t1 (id) VALUES (1), (1), (1),(1);
 | 
						|
INSERT INTO t1 (id) SELECT id FROM t1;
 | 
						|
/* 8 */
 | 
						|
INSERT INTO t1 (id) SELECT id FROM t1;
 | 
						|
/* 12 */
 | 
						|
INSERT INTO t1 (id) SELECT id FROM t1;
 | 
						|
/* 16 */
 | 
						|
INSERT INTO t1 (id) SELECT id FROM t1;
 | 
						|
/* 20 */
 | 
						|
INSERT INTO t1 (id) SELECT id FROM t1;
 | 
						|
/* 24 */
 | 
						|
INSERT INTO t1 SELECT id+1 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+2 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+4 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+8 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+16 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+32 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+64 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+128 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+256 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+512 FROM t1;
 | 
						|
SELECT AVG(DISTINCT id) FROM t1 GROUP BY id % 13;
 | 
						|
AVG(DISTINCT id)
 | 
						|
513.5000
 | 
						|
508.0000
 | 
						|
509.0000
 | 
						|
510.0000
 | 
						|
511.0000
 | 
						|
512.0000
 | 
						|
513.0000
 | 
						|
514.0000
 | 
						|
515.0000
 | 
						|
516.0000
 | 
						|
517.0000
 | 
						|
511.5000
 | 
						|
512.5000
 | 
						|
SELECT SUM(DISTINCT id)/COUNT(DISTINCT id) FROM t1 GROUP BY id % 13;
 | 
						|
SUM(DISTINCT id)/COUNT(DISTINCT id)
 | 
						|
513.5000
 | 
						|
508.0000
 | 
						|
509.0000
 | 
						|
510.0000
 | 
						|
511.0000
 | 
						|
512.0000
 | 
						|
513.0000
 | 
						|
514.0000
 | 
						|
515.0000
 | 
						|
516.0000
 | 
						|
517.0000
 | 
						|
511.5000
 | 
						|
512.5000
 | 
						|
INSERT INTO t1 SELECT id+1024 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+2048 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+4096 FROM t1;
 | 
						|
INSERT INTO t1 SELECT id+8192 FROM t1;
 | 
						|
INSERT INTO t2 SELECT id FROM t1 ORDER BY id*rand();
 | 
						|
SELECT SUM(DISTINCT id) sm FROM t1;
 | 
						|
sm
 | 
						|
134225920
 | 
						|
SELECT SUM(DISTINCT id) sm FROM t2;
 | 
						|
sm
 | 
						|
134225920
 | 
						|
SELECT SUM(DISTINCT id) sm FROM t1 group by id % 13;
 | 
						|
sm
 | 
						|
10327590
 | 
						|
10328851
 | 
						|
10330112
 | 
						|
10331373
 | 
						|
10332634
 | 
						|
10317510
 | 
						|
10318770
 | 
						|
10320030
 | 
						|
10321290
 | 
						|
10322550
 | 
						|
10323810
 | 
						|
10325070
 | 
						|
10326330
 | 
						|
SET max_heap_table_size=16384;
 | 
						|
SHOW variables LIKE 'max_heap_table_size';
 | 
						|
Variable_name	Value
 | 
						|
max_heap_table_size	16384
 | 
						|
SELECT SUM(DISTINCT id) sm FROM t1;
 | 
						|
sm
 | 
						|
134225920
 | 
						|
SELECT SUM(DISTINCT id) sm FROM t2;
 | 
						|
sm
 | 
						|
134225920
 | 
						|
SELECT SUM(DISTINCT id) sm FROM t1 GROUP BY id % 13;
 | 
						|
sm
 | 
						|
10327590
 | 
						|
10328851
 | 
						|
10330112
 | 
						|
10331373
 | 
						|
10332634
 | 
						|
10317510
 | 
						|
10318770
 | 
						|
10320030
 | 
						|
10321290
 | 
						|
10322550
 | 
						|
10323810
 | 
						|
10325070
 | 
						|
10326330
 | 
						|
DROP TABLE t1;
 | 
						|
DROP TABLE t2;
 |