|
9 | 9 | *
|
10 | 10 | *
|
11 | 11 | * IDENTIFICATION
|
12 |
| - * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.18 1997/09/08 21:48:21 momjian Exp $ |
| 12 | + * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.19 1997/09/20 16:17:45 thomas Exp $ |
13 | 13 | *
|
14 | 14 | * NOTES
|
15 | 15 | * This code is actually (almost) unused.
|
@@ -565,16 +565,217 @@ reltimege(RelativeTime t1, RelativeTime t2)
|
565 | 565 |
|
566 | 566 |
|
567 | 567 | /*
|
568 |
| - *intervaleq- returns 1, iff interval i1 is equal to interval i2 |
| 568 | + *intervalsame- returns 1, iff interval i1 is same as interval i2 |
| 569 | + *Check begin and end time. |
569 | 570 | */
|
570 | 571 | bool
|
571 |
| -intervaleq(TimeIntervali1,TimeIntervali2) |
| 572 | +intervalsame(TimeIntervali1,TimeIntervali2) |
572 | 573 | {
|
573 | 574 | if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL)
|
574 |
| -return (0);/* invalid interval */ |
| 575 | +return (FALSE);/* invalid interval */ |
575 | 576 | return (abstimeeq(i1->data[0],i2->data[0])&&
|
576 | 577 | abstimeeq(i1->data[1],i2->data[1]));
|
577 |
| -} |
| 578 | +}/* intervalsame() */ |
| 579 | + |
| 580 | + |
| 581 | +/* |
| 582 | + *intervaleq- returns 1, iff interval i1 is equal to interval i2 |
| 583 | + *Check length of intervals. |
| 584 | + */ |
| 585 | +bool |
| 586 | +intervaleq(TimeIntervali1,TimeIntervali2) |
| 587 | +{ |
| 588 | +AbsoluteTimet10,t11,t20,t21; |
| 589 | + |
| 590 | +if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL) |
| 591 | +return (FALSE);/* invalid interval */ |
| 592 | + |
| 593 | +t10=i1->data[0]; |
| 594 | +t11=i1->data[1]; |
| 595 | +t20=i2->data[0]; |
| 596 | +t21=i2->data[1]; |
| 597 | + |
| 598 | +if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME) |
| 599 | +|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME)) |
| 600 | +return (FALSE); |
| 601 | + |
| 602 | +if (t10==CURRENT_ABSTIME) |
| 603 | +t10=GetCurrentTransactionStartTime(); |
| 604 | +if (t11==CURRENT_ABSTIME) |
| 605 | +t11=GetCurrentTransactionStartTime(); |
| 606 | +if (t20==CURRENT_ABSTIME) |
| 607 | +t20=GetCurrentTransactionStartTime(); |
| 608 | +if (t21==CURRENT_ABSTIME) |
| 609 | +t21=GetCurrentTransactionStartTime(); |
| 610 | + |
| 611 | +return ((t11-t10)== (t21-t20)); |
| 612 | +}/* intervaleq() */ |
| 613 | + |
| 614 | +/* |
| 615 | + *intervalne- returns 1, iff interval i1 is not equal to interval i2 |
| 616 | + *Check length of intervals. |
| 617 | + */ |
| 618 | +bool |
| 619 | +intervalne(TimeIntervali1,TimeIntervali2) |
| 620 | +{ |
| 621 | +AbsoluteTimet10,t11,t20,t21; |
| 622 | + |
| 623 | +if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL) |
| 624 | +return (FALSE);/* invalid interval */ |
| 625 | + |
| 626 | +t10=i1->data[0]; |
| 627 | +t11=i1->data[1]; |
| 628 | +t20=i2->data[0]; |
| 629 | +t21=i2->data[1]; |
| 630 | + |
| 631 | +if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME) |
| 632 | +|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME)) |
| 633 | +return (FALSE); |
| 634 | + |
| 635 | +if (t10==CURRENT_ABSTIME) |
| 636 | +t10=GetCurrentTransactionStartTime(); |
| 637 | +if (t11==CURRENT_ABSTIME) |
| 638 | +t11=GetCurrentTransactionStartTime(); |
| 639 | +if (t20==CURRENT_ABSTIME) |
| 640 | +t20=GetCurrentTransactionStartTime(); |
| 641 | +if (t21==CURRENT_ABSTIME) |
| 642 | +t21=GetCurrentTransactionStartTime(); |
| 643 | + |
| 644 | +return ((t11-t10)!= (t21-t20)); |
| 645 | +}/* intervalne() */ |
| 646 | + |
| 647 | +/* |
| 648 | + *intervallt- returns TRUE, iff interval i1 is less than interval i2 |
| 649 | + *Check length of intervals. |
| 650 | + */ |
| 651 | +bool |
| 652 | +intervallt(TimeIntervali1,TimeIntervali2) |
| 653 | +{ |
| 654 | +AbsoluteTimet10,t11,t20,t21; |
| 655 | + |
| 656 | +if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL) |
| 657 | +return (FALSE);/* invalid interval */ |
| 658 | + |
| 659 | +t10=i1->data[0]; |
| 660 | +t11=i1->data[1]; |
| 661 | +t20=i2->data[0]; |
| 662 | +t21=i2->data[1]; |
| 663 | + |
| 664 | +if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME) |
| 665 | +|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME)) |
| 666 | +return (FALSE); |
| 667 | + |
| 668 | +if (t10==CURRENT_ABSTIME) |
| 669 | +t10=GetCurrentTransactionStartTime(); |
| 670 | +if (t11==CURRENT_ABSTIME) |
| 671 | +t11=GetCurrentTransactionStartTime(); |
| 672 | +if (t20==CURRENT_ABSTIME) |
| 673 | +t20=GetCurrentTransactionStartTime(); |
| 674 | +if (t21==CURRENT_ABSTIME) |
| 675 | +t21=GetCurrentTransactionStartTime(); |
| 676 | + |
| 677 | +return ((t11-t10)< (t21-t20)); |
| 678 | +}/* intervallt() */ |
| 679 | + |
| 680 | +/* |
| 681 | + *intervalle- returns TRUE, iff interval i1 is less than or equal to interval i2 |
| 682 | + *Check length of intervals. |
| 683 | + */ |
| 684 | +bool |
| 685 | +intervalle(TimeIntervali1,TimeIntervali2) |
| 686 | +{ |
| 687 | +AbsoluteTimet10,t11,t20,t21; |
| 688 | + |
| 689 | +if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL) |
| 690 | +return (FALSE);/* invalid interval */ |
| 691 | + |
| 692 | +t10=i1->data[0]; |
| 693 | +t11=i1->data[1]; |
| 694 | +t20=i2->data[0]; |
| 695 | +t21=i2->data[1]; |
| 696 | + |
| 697 | +if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME) |
| 698 | +|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME)) |
| 699 | +return (FALSE); |
| 700 | + |
| 701 | +if (t10==CURRENT_ABSTIME) |
| 702 | +t10=GetCurrentTransactionStartTime(); |
| 703 | +if (t11==CURRENT_ABSTIME) |
| 704 | +t11=GetCurrentTransactionStartTime(); |
| 705 | +if (t20==CURRENT_ABSTIME) |
| 706 | +t20=GetCurrentTransactionStartTime(); |
| 707 | +if (t21==CURRENT_ABSTIME) |
| 708 | +t21=GetCurrentTransactionStartTime(); |
| 709 | + |
| 710 | +return ((t11-t10) <= (t21-t20)); |
| 711 | +}/* intervalle() */ |
| 712 | + |
| 713 | +/* |
| 714 | + *intervalgt- returns TRUE, iff interval i1 is less than interval i2 |
| 715 | + *Check length of intervals. |
| 716 | + */ |
| 717 | +bool |
| 718 | +intervalgt(TimeIntervali1,TimeIntervali2) |
| 719 | +{ |
| 720 | +AbsoluteTimet10,t11,t20,t21; |
| 721 | + |
| 722 | +if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL) |
| 723 | +return (FALSE);/* invalid interval */ |
| 724 | + |
| 725 | +t10=i1->data[0]; |
| 726 | +t11=i1->data[1]; |
| 727 | +t20=i2->data[0]; |
| 728 | +t21=i2->data[1]; |
| 729 | + |
| 730 | +if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME) |
| 731 | +|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME)) |
| 732 | +return (FALSE); |
| 733 | + |
| 734 | +if (t10==CURRENT_ABSTIME) |
| 735 | +t10=GetCurrentTransactionStartTime(); |
| 736 | +if (t11==CURRENT_ABSTIME) |
| 737 | +t11=GetCurrentTransactionStartTime(); |
| 738 | +if (t20==CURRENT_ABSTIME) |
| 739 | +t20=GetCurrentTransactionStartTime(); |
| 740 | +if (t21==CURRENT_ABSTIME) |
| 741 | +t21=GetCurrentTransactionStartTime(); |
| 742 | + |
| 743 | +return ((t11-t10)> (t21-t20)); |
| 744 | +}/* intervalgt() */ |
| 745 | + |
| 746 | +/* |
| 747 | + *intervalge- returns TRUE, iff interval i1 is less than or equal to interval i2 |
| 748 | + *Check length of intervals. |
| 749 | + */ |
| 750 | +bool |
| 751 | +intervalge(TimeIntervali1,TimeIntervali2) |
| 752 | +{ |
| 753 | +AbsoluteTimet10,t11,t20,t21; |
| 754 | + |
| 755 | +if (i1->status==T_INTERVAL_INVAL||i2->status==T_INTERVAL_INVAL) |
| 756 | +return (FALSE);/* invalid interval */ |
| 757 | + |
| 758 | +t10=i1->data[0]; |
| 759 | +t11=i1->data[1]; |
| 760 | +t20=i2->data[0]; |
| 761 | +t21=i2->data[1]; |
| 762 | + |
| 763 | +if ((t10==INVALID_ABSTIME)|| (t20==INVALID_ABSTIME) |
| 764 | +|| (t20==INVALID_ABSTIME)|| (t21==INVALID_ABSTIME)) |
| 765 | +return (FALSE); |
| 766 | + |
| 767 | +if (t10==CURRENT_ABSTIME) |
| 768 | +t10=GetCurrentTransactionStartTime(); |
| 769 | +if (t11==CURRENT_ABSTIME) |
| 770 | +t11=GetCurrentTransactionStartTime(); |
| 771 | +if (t20==CURRENT_ABSTIME) |
| 772 | +t20=GetCurrentTransactionStartTime(); |
| 773 | +if (t21==CURRENT_ABSTIME) |
| 774 | +t21=GetCurrentTransactionStartTime(); |
| 775 | + |
| 776 | +return ((t11-t10) >= (t21-t20)); |
| 777 | +}/* intervalge() */ |
| 778 | + |
578 | 779 |
|
579 | 780 | /*
|
580 | 781 | *intervalleneq- returns 1, iff length of interval i is equal to
|
|