|  |  | @ -1,3 +1,7 @@ | 
			
		
	
		
			
				
					|  |  |  | # | 
			
		
	
		
			
				
					|  |  |  | # MDEV-14012 - sql_mode=Oracle: substr(): treat position 0 as position 1 | 
			
		
	
		
			
				
					|  |  |  | # MDEV-10574 - sql_mode=Oracle: return null instead of empty string | 
			
		
	
		
			
				
					|  |  |  | # | 
			
		
	
		
			
				
					|  |  |  | SET sql_mode=ORACLE; | 
			
		
	
		
			
				
					|  |  |  | SELECT SUBSTR('abc',2,1),SUBSTR('abc',1,1), SUBSTR('abc',0,1) FROM dual; | 
			
		
	
		
			
				
					|  |  |  | SUBSTR('abc',2,1)	SUBSTR('abc',1,1)	SUBSTR('abc',0,1) | 
			
		
	
	
		
			
				
					|  |  | @ -22,19 +26,52 @@ SUBSTR('abc',2,null)	SUBSTR('abc',1,null)	SUBSTR('abc',0,null) | 
			
		
	
		
			
				
					|  |  |  | NULL	NULL	NULL | 
			
		
	
		
			
				
					|  |  |  | SELECT SUBSTR('abc',2,0),SUBSTR('abc',1,0), SUBSTR('abc',0,0) FROM dual; | 
			
		
	
		
			
				
					|  |  |  | SUBSTR('abc',2,0)	SUBSTR('abc',1,0)	SUBSTR('abc',0,0) | 
			
		
	
		
			
				
					|  |  |  | 		 | 
			
		
	
		
			
				
					|  |  |  | create table t1 (c1 varchar(10),start integer, length integer); | 
			
		
	
		
			
				
					|  |  |  | NULL	NULL	NULL | 
			
		
	
		
			
				
					|  |  |  | SELECT SUBSTR('abc',2,-1),SUBSTR('abc',1,-1), SUBSTR('abc',0,-1) FROM dual; | 
			
		
	
		
			
				
					|  |  |  | SUBSTR('abc',2,-1)	SUBSTR('abc',1,-1)	SUBSTR('abc',0,-1) | 
			
		
	
		
			
				
					|  |  |  | NULL	NULL	NULL | 
			
		
	
		
			
				
					|  |  |  | SELECT SUBSTR(SPACE(0),1) FROM DUAL; | 
			
		
	
		
			
				
					|  |  |  | SUBSTR(SPACE(0),1) | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | CREATE TABLE t1 (c1 VARCHAR(10),start INTEGER, length INTEGER); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES ('abc', 1, 1); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES ('abc', 0, 1); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES (null, 1, 1); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES (null, 0, 1); | 
			
		
	
		
			
				
					|  |  |  | select substr(c1,start,length) from t1; | 
			
		
	
		
			
				
					|  |  |  | substr(c1,start,length) | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES ('abc', 1, 0); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES ('abc', 0, 0); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES (null, 1, 0); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES (null, 0, 0); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES ('abc', 1, -1); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES ('abc', 0, -1); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES (null, 1, -1); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES (null, 0, -1); | 
			
		
	
		
			
				
					|  |  |  | INSERT INTO t1 VALUES (SPACE(0), 0, 1); | 
			
		
	
		
			
				
					|  |  |  | SELECT SUBSTR(c1,start,length) FROM t1; | 
			
		
	
		
			
				
					|  |  |  | SUBSTR(c1,start,length) | 
			
		
	
		
			
				
					|  |  |  | a | 
			
		
	
		
			
				
					|  |  |  | a | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | drop table t1; | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | NULL | 
			
		
	
		
			
				
					|  |  |  | DROP TABLE t1; | 
			
		
	
		
			
				
					|  |  |  | CREATE TABLE t1 (c1 VARCHAR(10) NOT NULL); | 
			
		
	
		
			
				
					|  |  |  | CREATE TABLE t2 AS SELECT SUBSTR(C1,1,1) AS C1 from t1; | 
			
		
	
		
			
				
					|  |  |  | SHOW CREATE TABLE t2; | 
			
		
	
		
			
				
					|  |  |  | Table	Create Table | 
			
		
	
		
			
				
					|  |  |  | t2	CREATE TABLE "t2" ( | 
			
		
	
		
			
				
					|  |  |  |   "C1" varchar(1) DEFAULT NULL | 
			
		
	
		
			
				
					|  |  |  | ) | 
			
		
	
		
			
				
					|  |  |  | DROP TABLE t2; | 
			
		
	
		
			
				
					|  |  |  | DROP TABLE t1; | 
			
		
	
		
			
				
					|  |  |  | EXPLAIN EXTENDED SELECT SUBSTR('abc',2,1) ; | 
			
		
	
		
			
				
					|  |  |  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra | 
			
		
	
		
			
				
					|  |  |  | 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	No tables used | 
			
		
	
	
		
			
				
					|  |  | 
 |