@@ -4458,6 +4458,26 @@ timestamp_part(PG_FUNCTION_ARGS)
4458
4458
result = date2isoyear (tm -> tm_year , tm -> tm_mon , tm -> tm_mday );
4459
4459
break ;
4460
4460
4461
+ case DTK_DOW :
4462
+ case DTK_ISODOW :
4463
+ if (timestamp2tm (timestamp , NULL , tm , & fsec , NULL , NULL ) != 0 )
4464
+ ereport (ERROR ,
4465
+ (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4466
+ errmsg ("timestamp out of range" )));
4467
+ result = j2day (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday ));
4468
+ if (val == DTK_ISODOW && result == 0 )
4469
+ result = 7 ;
4470
+ break ;
4471
+
4472
+ case DTK_DOY :
4473
+ if (timestamp2tm (timestamp , NULL , tm , & fsec , NULL , NULL ) != 0 )
4474
+ ereport (ERROR ,
4475
+ (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4476
+ errmsg ("timestamp out of range" )));
4477
+ result = (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday )
4478
+ - date2j (tm -> tm_year , 1 , 1 ) + 1 );
4479
+ break ;
4480
+
4461
4481
case DTK_TZ :
4462
4482
case DTK_TZ_MINUTE :
4463
4483
case DTK_TZ_HOUR :
@@ -4481,26 +4501,6 @@ timestamp_part(PG_FUNCTION_ARGS)
4481
4501
#endif
4482
4502
break ;
4483
4503
4484
- case DTK_DOW :
4485
- case DTK_ISODOW :
4486
- if (timestamp2tm (timestamp , NULL , tm , & fsec , NULL , NULL ) != 0 )
4487
- ereport (ERROR ,
4488
- (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4489
- errmsg ("timestamp out of range" )));
4490
- result = j2day (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday ));
4491
- if (val == DTK_ISODOW && result == 0 )
4492
- result = 7 ;
4493
- break ;
4494
-
4495
- case DTK_DOY :
4496
- if (timestamp2tm (timestamp , NULL , tm , & fsec , NULL , NULL ) != 0 )
4497
- ereport (ERROR ,
4498
- (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4499
- errmsg ("timestamp out of range" )));
4500
- result = (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday )
4501
- - date2j (tm -> tm_year , 1 , 1 ) + 1 );
4502
- break ;
4503
-
4504
4504
default :
4505
4505
ereport (ERROR ,
4506
4506
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
@@ -4672,6 +4672,26 @@ timestamptz_part(PG_FUNCTION_ARGS)
4672
4672
result = date2isoyear (tm -> tm_year , tm -> tm_mon , tm -> tm_mday );
4673
4673
break ;
4674
4674
4675
+ case DTK_DOW :
4676
+ case DTK_ISODOW :
4677
+ if (timestamp2tm (timestamp , & tz , tm , & fsec , NULL , NULL ) != 0 )
4678
+ ereport (ERROR ,
4679
+ (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4680
+ errmsg ("timestamp out of range" )));
4681
+ result = j2day (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday ));
4682
+ if (val == DTK_ISODOW && result == 0 )
4683
+ result = 7 ;
4684
+ break ;
4685
+
4686
+ case DTK_DOY :
4687
+ if (timestamp2tm (timestamp , & tz , tm , & fsec , NULL , NULL ) != 0 )
4688
+ ereport (ERROR ,
4689
+ (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4690
+ errmsg ("timestamp out of range" )));
4691
+ result = (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday )
4692
+ - date2j (tm -> tm_year , 1 , 1 ) + 1 );
4693
+ break ;
4694
+
4675
4695
default :
4676
4696
ereport (ERROR ,
4677
4697
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
@@ -4693,26 +4713,6 @@ timestamptz_part(PG_FUNCTION_ARGS)
4693
4713
#endif
4694
4714
break ;
4695
4715
4696
- case DTK_DOW :
4697
- case DTK_ISODOW :
4698
- if (timestamp2tm (timestamp , & tz , tm , & fsec , NULL , NULL ) != 0 )
4699
- ereport (ERROR ,
4700
- (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4701
- errmsg ("timestamp out of range" )));
4702
- result = j2day (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday ));
4703
- if (val == DTK_ISODOW && result == 0 )
4704
- result = 7 ;
4705
- break ;
4706
-
4707
- case DTK_DOY :
4708
- if (timestamp2tm (timestamp , & tz , tm , & fsec , NULL , NULL ) != 0 )
4709
- ereport (ERROR ,
4710
- (errcode (ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ),
4711
- errmsg ("timestamp out of range" )));
4712
- result = (date2j (tm -> tm_year , tm -> tm_mon , tm -> tm_mday )
4713
- - date2j (tm -> tm_year , 1 , 1 ) + 1 );
4714
- break ;
4715
-
4716
4716
default :
4717
4717
ereport (ERROR ,
4718
4718
(errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
0 commit comments