Skip to content

Commit 1ec9180

Browse files
author
Alexander Barkov
committed
MDEV-10317 EXCTACT(MINUTE_MICROSECOND) truncates data
1 parent 3ccf821 commit 1ec9180

File tree

4 files changed

+472
-20
lines changed

4 files changed

+472
-20
lines changed

mysql-test/r/func_time.result

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2806,3 +2806,332 @@ Warning 1292 Truncated incorrect time value: '-1441:00:00'
28062806
#
28072807
# End of 10.0 tests
28082808
#
2809+
#
2810+
# Start of 10.1 tests
2811+
#
2812+
#
2813+
# MDEV-10317 EXCTACT(MINUTE_MICROSECOND) truncates data
2814+
#
2815+
CREATE TABLE t1 (a DATETIME(6));
2816+
INSERT INTO t1 VALUES ('1999-12-31 23:59:59.999999');
2817+
SELECT
2818+
a,
2819+
EXTRACT(YEAR FROM a),
2820+
EXTRACT(YEAR_MONTH FROM a),
2821+
EXTRACT(QUARTER FROM a),
2822+
EXTRACT(MONTH FROM a),
2823+
EXTRACT(WEEK FROM a),
2824+
EXTRACT(DAY FROM a),
2825+
EXTRACT(DAY_HOUR FROM a),
2826+
EXTRACT(DAY_MINUTE FROM a),
2827+
EXTRACT(DAY_SECOND FROM a),
2828+
EXTRACT(HOUR FROM a),
2829+
EXTRACT(HOUR_MINUTE FROM a),
2830+
EXTRACT(HOUR_SECOND FROM a),
2831+
EXTRACT(MINUTE FROM a),
2832+
EXTRACT(MINUTE_SECOND FROM a),
2833+
EXTRACT(SECOND FROM a),
2834+
EXTRACT(MICROSECOND FROM a),
2835+
EXTRACT(DAY_MICROSECOND FROM a),
2836+
EXTRACT(HOUR_MICROSECOND FROM a),
2837+
EXTRACT(MINUTE_MICROSECOND FROM a),
2838+
EXTRACT(SECOND_MICROSECOND FROM a)
2839+
FROM t1;
2840+
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
2841+
def test t1 t1 a a 12 26 26 Y 128 6 63
2842+
def EXTRACT(YEAR FROM a) 3 4 4 Y 32896 0 63
2843+
def EXTRACT(YEAR_MONTH FROM a) 3 6 6 Y 32896 0 63
2844+
def EXTRACT(QUARTER FROM a) 3 2 1 Y 32896 0 63
2845+
def EXTRACT(MONTH FROM a) 3 2 2 Y 32896 0 63
2846+
def EXTRACT(WEEK FROM a) 3 2 2 Y 32896 0 63
2847+
def EXTRACT(DAY FROM a) 3 2 2 Y 32896 0 63
2848+
def EXTRACT(DAY_HOUR FROM a) 3 5 4 Y 32896 0 63
2849+
def EXTRACT(DAY_MINUTE FROM a) 3 7 6 Y 32896 0 63
2850+
def EXTRACT(DAY_SECOND FROM a) 3 9 8 Y 32896 0 63
2851+
def EXTRACT(HOUR FROM a) 3 3 2 Y 32896 0 63
2852+
def EXTRACT(HOUR_MINUTE FROM a) 3 5 4 Y 32896 0 63
2853+
def EXTRACT(HOUR_SECOND FROM a) 3 7 6 Y 32896 0 63
2854+
def EXTRACT(MINUTE FROM a) 3 3 2 Y 32896 0 63
2855+
def EXTRACT(MINUTE_SECOND FROM a) 3 5 4 Y 32896 0 63
2856+
def EXTRACT(SECOND FROM a) 3 3 2 Y 32896 0 63
2857+
def EXTRACT(MICROSECOND FROM a) 3 7 6 Y 32896 0 63
2858+
def EXTRACT(DAY_MICROSECOND FROM a) 8 15 14 Y 32896 0 63
2859+
def EXTRACT(HOUR_MICROSECOND FROM a) 8 13 12 Y 32896 0 63
2860+
def EXTRACT(MINUTE_MICROSECOND FROM a) 8 11 10 Y 32896 0 63
2861+
def EXTRACT(SECOND_MICROSECOND FROM a) 3 9 8 Y 32896 0 63
2862+
a 1999-12-31 23:59:59.999999
2863+
EXTRACT(YEAR FROM a) 1999
2864+
EXTRACT(YEAR_MONTH FROM a) 199912
2865+
EXTRACT(QUARTER FROM a) 4
2866+
EXTRACT(MONTH FROM a) 12
2867+
EXTRACT(WEEK FROM a) 52
2868+
EXTRACT(DAY FROM a) 31
2869+
EXTRACT(DAY_HOUR FROM a) 3123
2870+
EXTRACT(DAY_MINUTE FROM a) 312359
2871+
EXTRACT(DAY_SECOND FROM a) 31235959
2872+
EXTRACT(HOUR FROM a) 23
2873+
EXTRACT(HOUR_MINUTE FROM a) 2359
2874+
EXTRACT(HOUR_SECOND FROM a) 235959
2875+
EXTRACT(MINUTE FROM a) 59
2876+
EXTRACT(MINUTE_SECOND FROM a) 5959
2877+
EXTRACT(SECOND FROM a) 59
2878+
EXTRACT(MICROSECOND FROM a) 999999
2879+
EXTRACT(DAY_MICROSECOND FROM a) 31235959999999
2880+
EXTRACT(HOUR_MICROSECOND FROM a) 235959999999
2881+
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
2882+
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
2883+
CREATE TABLE t2 AS SELECT
2884+
a,
2885+
EXTRACT(YEAR FROM a),
2886+
EXTRACT(YEAR_MONTH FROM a),
2887+
EXTRACT(QUARTER FROM a),
2888+
EXTRACT(MONTH FROM a),
2889+
EXTRACT(WEEK FROM a),
2890+
EXTRACT(DAY FROM a),
2891+
EXTRACT(DAY_HOUR FROM a),
2892+
EXTRACT(DAY_MINUTE FROM a),
2893+
EXTRACT(DAY_SECOND FROM a),
2894+
EXTRACT(HOUR FROM a),
2895+
EXTRACT(HOUR_MINUTE FROM a),
2896+
EXTRACT(HOUR_SECOND FROM a),
2897+
EXTRACT(MINUTE FROM a),
2898+
EXTRACT(MINUTE_SECOND FROM a),
2899+
EXTRACT(SECOND FROM a),
2900+
EXTRACT(MICROSECOND FROM a),
2901+
EXTRACT(DAY_MICROSECOND FROM a),
2902+
EXTRACT(HOUR_MICROSECOND FROM a),
2903+
EXTRACT(MINUTE_MICROSECOND FROM a),
2904+
EXTRACT(SECOND_MICROSECOND FROM a)
2905+
FROM t1;
2906+
SELECT * FROM t2;
2907+
a 1999-12-31 23:59:59.999999
2908+
EXTRACT(YEAR FROM a) 1999
2909+
EXTRACT(YEAR_MONTH FROM a) 199912
2910+
EXTRACT(QUARTER FROM a) 4
2911+
EXTRACT(MONTH FROM a) 12
2912+
EXTRACT(WEEK FROM a) 52
2913+
EXTRACT(DAY FROM a) 31
2914+
EXTRACT(DAY_HOUR FROM a) 3123
2915+
EXTRACT(DAY_MINUTE FROM a) 312359
2916+
EXTRACT(DAY_SECOND FROM a) 31235959
2917+
EXTRACT(HOUR FROM a) 23
2918+
EXTRACT(HOUR_MINUTE FROM a) 2359
2919+
EXTRACT(HOUR_SECOND FROM a) 235959
2920+
EXTRACT(MINUTE FROM a) 59
2921+
EXTRACT(MINUTE_SECOND FROM a) 5959
2922+
EXTRACT(SECOND FROM a) 59
2923+
EXTRACT(MICROSECOND FROM a) 999999
2924+
EXTRACT(DAY_MICROSECOND FROM a) 31235959999999
2925+
EXTRACT(HOUR_MICROSECOND FROM a) 235959999999
2926+
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
2927+
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
2928+
SHOW CREATE TABLE t2;
2929+
Table Create Table
2930+
t2 CREATE TABLE `t2` (
2931+
`a` datetime(6) DEFAULT NULL,
2932+
`EXTRACT(YEAR FROM a)` int(4) DEFAULT NULL,
2933+
`EXTRACT(YEAR_MONTH FROM a)` int(6) DEFAULT NULL,
2934+
`EXTRACT(QUARTER FROM a)` int(2) DEFAULT NULL,
2935+
`EXTRACT(MONTH FROM a)` int(2) DEFAULT NULL,
2936+
`EXTRACT(WEEK FROM a)` int(2) DEFAULT NULL,
2937+
`EXTRACT(DAY FROM a)` int(2) DEFAULT NULL,
2938+
`EXTRACT(DAY_HOUR FROM a)` int(5) DEFAULT NULL,
2939+
`EXTRACT(DAY_MINUTE FROM a)` int(7) DEFAULT NULL,
2940+
`EXTRACT(DAY_SECOND FROM a)` int(9) DEFAULT NULL,
2941+
`EXTRACT(HOUR FROM a)` int(3) DEFAULT NULL,
2942+
`EXTRACT(HOUR_MINUTE FROM a)` int(5) DEFAULT NULL,
2943+
`EXTRACT(HOUR_SECOND FROM a)` int(7) DEFAULT NULL,
2944+
`EXTRACT(MINUTE FROM a)` int(3) DEFAULT NULL,
2945+
`EXTRACT(MINUTE_SECOND FROM a)` int(5) DEFAULT NULL,
2946+
`EXTRACT(SECOND FROM a)` int(3) DEFAULT NULL,
2947+
`EXTRACT(MICROSECOND FROM a)` int(7) DEFAULT NULL,
2948+
`EXTRACT(DAY_MICROSECOND FROM a)` bigint(15) DEFAULT NULL,
2949+
`EXTRACT(HOUR_MICROSECOND FROM a)` bigint(13) DEFAULT NULL,
2950+
`EXTRACT(MINUTE_MICROSECOND FROM a)` bigint(11) DEFAULT NULL,
2951+
`EXTRACT(SECOND_MICROSECOND FROM a)` int(9) DEFAULT NULL
2952+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
2953+
DROP TABLE t1,t2;
2954+
CREATE TABLE t1 (a TIME(6));
2955+
INSERT INTO t1 VALUES ('-838:59:59.999999'),('838:59:59.999999');
2956+
SELECT
2957+
a,
2958+
EXTRACT(YEAR FROM a),
2959+
EXTRACT(YEAR_MONTH FROM a),
2960+
EXTRACT(QUARTER FROM a),
2961+
EXTRACT(MONTH FROM a),
2962+
EXTRACT(WEEK FROM a),
2963+
EXTRACT(DAY FROM a),
2964+
EXTRACT(DAY_HOUR FROM a),
2965+
EXTRACT(DAY_MINUTE FROM a),
2966+
EXTRACT(DAY_SECOND FROM a),
2967+
EXTRACT(HOUR FROM a),
2968+
EXTRACT(HOUR_MINUTE FROM a),
2969+
EXTRACT(HOUR_SECOND FROM a),
2970+
EXTRACT(MINUTE FROM a),
2971+
EXTRACT(MINUTE_SECOND FROM a),
2972+
EXTRACT(SECOND FROM a),
2973+
EXTRACT(MICROSECOND FROM a),
2974+
EXTRACT(DAY_MICROSECOND FROM a),
2975+
EXTRACT(HOUR_MICROSECOND FROM a),
2976+
EXTRACT(MINUTE_MICROSECOND FROM a),
2977+
EXTRACT(SECOND_MICROSECOND FROM a)
2978+
FROM t1;
2979+
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
2980+
def test t1 t1 a a 11 17 17 Y 128 6 63
2981+
def EXTRACT(YEAR FROM a) 3 4 1 Y 32896 0 63
2982+
def EXTRACT(YEAR_MONTH FROM a) 3 6 1 Y 32896 0 63
2983+
def EXTRACT(QUARTER FROM a) 3 2 1 Y 32896 0 63
2984+
def EXTRACT(MONTH FROM a) 3 2 1 Y 32896 0 63
2985+
def EXTRACT(WEEK FROM a) 3 2 9 Y 32896 0 63
2986+
def EXTRACT(DAY FROM a) 3 2 2 Y 32896 0 63
2987+
def EXTRACT(DAY_HOUR FROM a) 3 5 5 Y 32896 0 63
2988+
def EXTRACT(DAY_MINUTE FROM a) 3 7 7 Y 32896 0 63
2989+
def EXTRACT(DAY_SECOND FROM a) 3 9 9 Y 32896 0 63
2990+
def EXTRACT(HOUR FROM a) 3 3 3 Y 32896 0 63
2991+
def EXTRACT(HOUR_MINUTE FROM a) 3 5 5 Y 32896 0 63
2992+
def EXTRACT(HOUR_SECOND FROM a) 3 7 7 Y 32896 0 63
2993+
def EXTRACT(MINUTE FROM a) 3 3 3 Y 32896 0 63
2994+
def EXTRACT(MINUTE_SECOND FROM a) 3 5 5 Y 32896 0 63
2995+
def EXTRACT(SECOND FROM a) 3 3 3 Y 32896 0 63
2996+
def EXTRACT(MICROSECOND FROM a) 3 7 7 Y 32896 0 63
2997+
def EXTRACT(DAY_MICROSECOND FROM a) 8 15 15 Y 32896 0 63
2998+
def EXTRACT(HOUR_MICROSECOND FROM a) 8 13 13 Y 32896 0 63
2999+
def EXTRACT(MINUTE_MICROSECOND FROM a) 8 11 11 Y 32896 0 63
3000+
def EXTRACT(SECOND_MICROSECOND FROM a) 3 9 9 Y 32896 0 63
3001+
a -838:59:59.999999
3002+
EXTRACT(YEAR FROM a) 0
3003+
EXTRACT(YEAR_MONTH FROM a) 0
3004+
EXTRACT(QUARTER FROM a) 0
3005+
EXTRACT(MONTH FROM a) 0
3006+
EXTRACT(WEEK FROM a) 613566757
3007+
EXTRACT(DAY FROM a) 34
3008+
EXTRACT(DAY_HOUR FROM a) -3422
3009+
EXTRACT(DAY_MINUTE FROM a) -342259
3010+
EXTRACT(DAY_SECOND FROM a) -34225959
3011+
EXTRACT(HOUR FROM a) -22
3012+
EXTRACT(HOUR_MINUTE FROM a) -2259
3013+
EXTRACT(HOUR_SECOND FROM a) -225959
3014+
EXTRACT(MINUTE FROM a) -59
3015+
EXTRACT(MINUTE_SECOND FROM a) -5959
3016+
EXTRACT(SECOND FROM a) -59
3017+
EXTRACT(MICROSECOND FROM a) -999999
3018+
EXTRACT(DAY_MICROSECOND FROM a) -34225959999999
3019+
EXTRACT(HOUR_MICROSECOND FROM a) -225959999999
3020+
EXTRACT(MINUTE_MICROSECOND FROM a) -5959999999
3021+
EXTRACT(SECOND_MICROSECOND FROM a) -59999999
3022+
a 838:59:59.999999
3023+
EXTRACT(YEAR FROM a) 0
3024+
EXTRACT(YEAR_MONTH FROM a) 0
3025+
EXTRACT(QUARTER FROM a) 0
3026+
EXTRACT(MONTH FROM a) 0
3027+
EXTRACT(WEEK FROM a) 613566757
3028+
EXTRACT(DAY FROM a) 34
3029+
EXTRACT(DAY_HOUR FROM a) 3422
3030+
EXTRACT(DAY_MINUTE FROM a) 342259
3031+
EXTRACT(DAY_SECOND FROM a) 34225959
3032+
EXTRACT(HOUR FROM a) 22
3033+
EXTRACT(HOUR_MINUTE FROM a) 2259
3034+
EXTRACT(HOUR_SECOND FROM a) 225959
3035+
EXTRACT(MINUTE FROM a) 59
3036+
EXTRACT(MINUTE_SECOND FROM a) 5959
3037+
EXTRACT(SECOND FROM a) 59
3038+
EXTRACT(MICROSECOND FROM a) 999999
3039+
EXTRACT(DAY_MICROSECOND FROM a) 34225959999999
3040+
EXTRACT(HOUR_MICROSECOND FROM a) 225959999999
3041+
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
3042+
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
3043+
CREATE TABLE t2 AS SELECT
3044+
a,
3045+
EXTRACT(YEAR FROM a),
3046+
EXTRACT(YEAR_MONTH FROM a),
3047+
EXTRACT(QUARTER FROM a),
3048+
EXTRACT(MONTH FROM a),
3049+
EXTRACT(WEEK FROM a),
3050+
EXTRACT(DAY FROM a),
3051+
EXTRACT(DAY_HOUR FROM a),
3052+
EXTRACT(DAY_MINUTE FROM a),
3053+
EXTRACT(DAY_SECOND FROM a),
3054+
EXTRACT(HOUR FROM a),
3055+
EXTRACT(HOUR_MINUTE FROM a),
3056+
EXTRACT(HOUR_SECOND FROM a),
3057+
EXTRACT(MINUTE FROM a),
3058+
EXTRACT(MINUTE_SECOND FROM a),
3059+
EXTRACT(SECOND FROM a),
3060+
EXTRACT(MICROSECOND FROM a),
3061+
EXTRACT(DAY_MICROSECOND FROM a),
3062+
EXTRACT(HOUR_MICROSECOND FROM a),
3063+
EXTRACT(MINUTE_MICROSECOND FROM a),
3064+
EXTRACT(SECOND_MICROSECOND FROM a)
3065+
FROM t1;
3066+
SELECT * FROM t2;
3067+
a -838:59:59.999999
3068+
EXTRACT(YEAR FROM a) 0
3069+
EXTRACT(YEAR_MONTH FROM a) 0
3070+
EXTRACT(QUARTER FROM a) 0
3071+
EXTRACT(MONTH FROM a) 0
3072+
EXTRACT(WEEK FROM a) 613566757
3073+
EXTRACT(DAY FROM a) 34
3074+
EXTRACT(DAY_HOUR FROM a) -3422
3075+
EXTRACT(DAY_MINUTE FROM a) -342259
3076+
EXTRACT(DAY_SECOND FROM a) -34225959
3077+
EXTRACT(HOUR FROM a) -22
3078+
EXTRACT(HOUR_MINUTE FROM a) -2259
3079+
EXTRACT(HOUR_SECOND FROM a) -225959
3080+
EXTRACT(MINUTE FROM a) -59
3081+
EXTRACT(MINUTE_SECOND FROM a) -5959
3082+
EXTRACT(SECOND FROM a) -59
3083+
EXTRACT(MICROSECOND FROM a) -999999
3084+
EXTRACT(DAY_MICROSECOND FROM a) -34225959999999
3085+
EXTRACT(HOUR_MICROSECOND FROM a) -225959999999
3086+
EXTRACT(MINUTE_MICROSECOND FROM a) -5959999999
3087+
EXTRACT(SECOND_MICROSECOND FROM a) -59999999
3088+
a 838:59:59.999999
3089+
EXTRACT(YEAR FROM a) 0
3090+
EXTRACT(YEAR_MONTH FROM a) 0
3091+
EXTRACT(QUARTER FROM a) 0
3092+
EXTRACT(MONTH FROM a) 0
3093+
EXTRACT(WEEK FROM a) 613566757
3094+
EXTRACT(DAY FROM a) 34
3095+
EXTRACT(DAY_HOUR FROM a) 3422
3096+
EXTRACT(DAY_MINUTE FROM a) 342259
3097+
EXTRACT(DAY_SECOND FROM a) 34225959
3098+
EXTRACT(HOUR FROM a) 22
3099+
EXTRACT(HOUR_MINUTE FROM a) 2259
3100+
EXTRACT(HOUR_SECOND FROM a) 225959
3101+
EXTRACT(MINUTE FROM a) 59
3102+
EXTRACT(MINUTE_SECOND FROM a) 5959
3103+
EXTRACT(SECOND FROM a) 59
3104+
EXTRACT(MICROSECOND FROM a) 999999
3105+
EXTRACT(DAY_MICROSECOND FROM a) 34225959999999
3106+
EXTRACT(HOUR_MICROSECOND FROM a) 225959999999
3107+
EXTRACT(MINUTE_MICROSECOND FROM a) 5959999999
3108+
EXTRACT(SECOND_MICROSECOND FROM a) 59999999
3109+
SHOW CREATE TABLE t2;
3110+
Table Create Table
3111+
t2 CREATE TABLE `t2` (
3112+
`a` time(6) DEFAULT NULL,
3113+
`EXTRACT(YEAR FROM a)` int(4) DEFAULT NULL,
3114+
`EXTRACT(YEAR_MONTH FROM a)` int(6) DEFAULT NULL,
3115+
`EXTRACT(QUARTER FROM a)` int(2) DEFAULT NULL,
3116+
`EXTRACT(MONTH FROM a)` int(2) DEFAULT NULL,
3117+
`EXTRACT(WEEK FROM a)` int(2) DEFAULT NULL,
3118+
`EXTRACT(DAY FROM a)` int(2) DEFAULT NULL,
3119+
`EXTRACT(DAY_HOUR FROM a)` int(5) DEFAULT NULL,
3120+
`EXTRACT(DAY_MINUTE FROM a)` int(7) DEFAULT NULL,
3121+
`EXTRACT(DAY_SECOND FROM a)` int(9) DEFAULT NULL,
3122+
`EXTRACT(HOUR FROM a)` int(3) DEFAULT NULL,
3123+
`EXTRACT(HOUR_MINUTE FROM a)` int(5) DEFAULT NULL,
3124+
`EXTRACT(HOUR_SECOND FROM a)` int(7) DEFAULT NULL,
3125+
`EXTRACT(MINUTE FROM a)` int(3) DEFAULT NULL,
3126+
`EXTRACT(MINUTE_SECOND FROM a)` int(5) DEFAULT NULL,
3127+
`EXTRACT(SECOND FROM a)` int(3) DEFAULT NULL,
3128+
`EXTRACT(MICROSECOND FROM a)` int(7) DEFAULT NULL,
3129+
`EXTRACT(DAY_MICROSECOND FROM a)` bigint(15) DEFAULT NULL,
3130+
`EXTRACT(HOUR_MICROSECOND FROM a)` bigint(13) DEFAULT NULL,
3131+
`EXTRACT(MINUTE_MICROSECOND FROM a)` bigint(11) DEFAULT NULL,
3132+
`EXTRACT(SECOND_MICROSECOND FROM a)` int(9) DEFAULT NULL
3133+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
3134+
DROP TABLE t1,t2;
3135+
#
3136+
# End of 10.1 tests
3137+
#

0 commit comments

Comments
 (0)