|
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(TimeInterval i1, TimeInterval i2) |
| 572 | +intervalsame(TimeInterval i1, TimeInterval i2) |
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(TimeInterval i1, TimeInterval i2) |
| 587 | +{ |
| 588 | + AbsoluteTime t10, 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(TimeInterval i1, TimeInterval i2) |
| 620 | +{ |
| 621 | + AbsoluteTime t10, 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(TimeInterval i1, TimeInterval i2) |
| 653 | +{ |
| 654 | + AbsoluteTime t10, 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(TimeInterval i1, TimeInterval i2) |
| 686 | +{ |
| 687 | + AbsoluteTime t10, 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(TimeInterval i1, TimeInterval i2) |
| 719 | +{ |
| 720 | + AbsoluteTime t10, 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(TimeInterval i1, TimeInterval i2) |
| 752 | +{ |
| 753 | + AbsoluteTime t10, 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
|
|
0 commit comments