@@ -4106,6 +4106,26 @@ timestamp_part(PG_FUNCTION_ARGS)
4106
4106
result = date2isoyear (tm -> tm_year , tm -> tm_mon , tm -> tm_mday );
4107
4107
break ;
4108
4108
4109
+ case DTK_DOW :
4110
+ case DTK_ISODOW :
4111
+ if (timestamp2tm (timestamp , NULL , tm , & fsec , NULL , NULL ) != 0 )
4112
+ ereport (ERROR ,
4113
+ (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4114
+ errmsg ("timestamp out of range" )));
4115
+ result = j2day (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday ));
4116
+ if (val == DTK_ISODOW && result == 0 )
4117
+ result = 7 ;
4118
+ break ;
4119
+
4120
+ case DTK_DOY :
4121
+ if (timestamp2tm (timestamp , NULL , tm , & fsec , NULL , NULL ) != 0 )
4122
+ ereport (ERROR ,
4123
+ (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4124
+ errmsg ("timestamp out of range" )));
4125
+ result = (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday )
4126
+ - date2j (tm -> tm_year , 1 , 1 ) + 1 );
4127
+ break ;
4128
+
4109
4129
case DTK_TZ :
4110
4130
case DTK_TZ_MINUTE :
4111
4131
case DTK_TZ_HOUR :
@@ -4129,26 +4149,6 @@ timestamp_part(PG_FUNCTION_ARGS)
4129
4149
#endif
4130
4150
break ;
4131
4151
4132
- case DTK_DOW :
4133
- case DTK_ISODOW :
4134
- if (timestamp2tm (timestamp , NULL , tm , & fsec , NULL , NULL ) != 0 )
4135
- ereport (ERROR ,
4136
- (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4137
- errmsg ("timestamp out of range" )));
4138
- result = j2day (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday ));
4139
- if (val == DTK_ISODOW && result == 0 )
4140
- result = 7 ;
4141
- break ;
4142
-
4143
- case DTK_DOY :
4144
- if (timestamp2tm (timestamp , NULL , tm , & fsec , NULL , NULL ) != 0 )
4145
- ereport (ERROR ,
4146
- (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4147
- errmsg ("timestamp out of range" )));
4148
- result = (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday )
4149
- - date2j (tm -> tm_year , 1 , 1 ) + 1 );
4150
- break ;
4151
-
4152
4152
default :
4153
4153
ereport (ERROR ,
4154
4154
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
@@ -4320,6 +4320,26 @@ timestamptz_part(PG_FUNCTION_ARGS)
4320
4320
result = date2isoyear (tm -> tm_year , tm -> tm_mon , tm -> tm_mday );
4321
4321
break ;
4322
4322
4323
+ case DTK_DOW :
4324
+ case DTK_ISODOW :
4325
+ if (timestamp2tm (timestamp , & tz , tm , & fsec , NULL , NULL ) != 0 )
4326
+ ereport (ERROR ,
4327
+ (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4328
+ errmsg ("timestamp out of range" )));
4329
+ result = j2day (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday ));
4330
+ if (val == DTK_ISODOW && result == 0 )
4331
+ result = 7 ;
4332
+ break ;
4333
+
4334
+ case DTK_DOY :
4335
+ if (timestamp2tm (timestamp , & tz , tm , & fsec , NULL , NULL ) != 0 )
4336
+ ereport (ERROR ,
4337
+ (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4338
+ errmsg ("timestamp out of range" )));
4339
+ result = (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday )
4340
+ - date2j (tm -> tm_year , 1 , 1 ) + 1 );
4341
+ break ;
4342
+
4323
4343
default :
4324
4344
ereport (ERROR ,
4325
4345
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
@@ -4341,26 +4361,6 @@ timestamptz_part(PG_FUNCTION_ARGS)
4341
4361
#endif
4342
4362
break ;
4343
4363
4344
- case DTK_DOW :
4345
- case DTK_ISODOW :
4346
- if (timestamp2tm (timestamp , & tz , tm , & fsec , NULL , NULL ) != 0 )
4347
- ereport (ERROR ,
4348
- (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4349
- errmsg ("timestamp out of range" )));
4350
- result = j2day (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday ));
4351
- if (val == DTK_ISODOW && result == 0 )
4352
- result = 7 ;
4353
- break ;
4354
-
4355
- case DTK_DOY :
4356
- if (timestamp2tm (timestamp , & tz , tm , & fsec , NULL , NULL ) != 0 )
4357
- ereport (ERROR ,
4358
- (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4359
- errmsg ("timestamp out of range" )));
4360
- result = (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday )
4361
- - date2j (tm -> tm_year , 1 , 1 ) + 1 );
4362
- break ;
4363
-
4364
4364
default :
4365
4365
ereport (ERROR ,
4366
4366
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
0 commit comments