Note: There are a few cases of duplicates in user autocompletion which are being worked on.

[Oracle] whine.pl sets run_next incorrectly due to CURRENT_DATE

RESOLVED FIXED in Bugzilla 4.2

Status

()

Bugzilla
Database
--
minor
RESOLVED FIXED
7 years ago
5 years ago

People

(Reporter: David Taylor, Assigned: David Taylor)

Tracking

Bugzilla 4.2
Bug Flags:
approval +
approval4.2 +

Details

Attachments

(2 attachments, 2 obsolete attachments)

(Assignee)

Description

7 years ago
User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
Build Identifier: Bugzilla 3.6.0

whine.pl assumes that CURRENT_DATE returns, well, the current date.  Oracle's DATE datatype is actually a date+time.

As a result when whine.pl runs at 2010-04-15 08:04:30 and performs the calculation (pseudo-SQL) 'CURRENT_DATE + 11 hours', rather than getting the answer 2010-04-15 11:00:00, it instead obtains 2010-04-15 19:04:30.

As a result whines run at completely the wrong time.  The simple fix is to use TRUNC(CURRENT_DATE) to ensure the datetime is truncated to simply the date.

Reproducible: Always

Steps to Reproduce:
1. Install bugzilla using an Oracle DB
2. At 10 am, configure a whine to run at 13:00
3. Run whine.pl
Actual Results:  
run_next will be set to 10am + 13 hours = 23:00

Expected Results:  
run_next should be set to 13:00
(Assignee)

Comment 1

7 years ago
Created attachment 439207 [details] [diff] [review]
wrap CURRENT_DATE in TRUNC()

Comment 2

7 years ago
Comment on attachment 439207 [details] [diff] [review]
wrap CURRENT_DATE in TRUNC()

TRUNC doesn't exist on MySQL. It must be an Oracle thing only, if required.
Attachment #439207 - Flags: review-

Updated

7 years ago
Severity: normal → minor
Version: unspecified → 3.6
(Assignee)

Comment 3

7 years ago
Created attachment 440196 [details] [diff] [review]
wrap CURRENT_DATE in TRUNC() for Oracle only

Oops.  It seems Bugzilla/DB/Oracle.pm is already translating CURRENT_DATE() into CURRENT_DATE.  The attached patch will now translate them both into TRUNC(CURRENT_DATE).
Attachment #439207 - Attachment is obsolete: true

Comment 4

7 years ago
Hey David. Thanks for the patch! If you'd like to get it reviewed, see our development process here for details on how:

  http://wiki.mozilla.org/Bugzilla:Developers

Updated

6 years ago
Attachment #440196 - Flags: review?(mkanat)

Updated

6 years ago
Summary: [Oracle] [patch] whine.pl sets run_next incorrectly due to CURRENT_DATE difference, add TRUNC() → [Oracle] whine.pl sets run_next incorrectly due to CURRENT_DATE

Comment 5

6 years ago
Comment on attachment 440196 [details] [diff] [review]
wrap CURRENT_DATE in TRUNC() for Oracle only

This code has been removed, see bug 675603.
Attachment #440196 - Flags: review?(mkanat) → review-

Updated

6 years ago
Status: UNCONFIRMED → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → WONTFIX
(Assignee)

Comment 6

6 years ago
As noted in bug 675603 comment 11, CURRENT_DATE is still used in whine.pl.

The fix for that bug has had no effect on whine.pl and this bug remains.
Status: RESOLVED → UNCONFIRMED
Resolution: WONTFIX → ---

Updated

6 years ago
Keywords: qawanted

Updated

5 years ago
Status: UNCONFIRMED → NEW
Ever confirmed: true
Keywords: qawanted
Target Milestone: --- → Bugzilla 4.2

Comment 7

5 years ago
Created attachment 655383 [details] [diff] [review]
patch for 4.4, v1

Tested with current 4.3.2+ code.
Attachment #440196 - Attachment is obsolete: true
Attachment #655383 - Flags: review?(dkl)

Comment 8

5 years ago
Created attachment 655384 [details] [diff] [review]
patch for 4.4, v1.1

Oops, there was an incorrect indentation in my previous patch. Actually, I'm going to r+ this patch myself, because it's mostly a port of David's patch to 4.4.
Attachment #655383 - Attachment is obsolete: true
Attachment #655383 - Flags: review?(dkl)
Attachment #655384 - Flags: review+

Updated

5 years ago
Assignee: database → davidt
Status: NEW → ASSIGNED

Comment 9

5 years ago
Comment on attachment 440196 [details] [diff] [review]
wrap CURRENT_DATE in TRUNC() for Oracle only

>-    $part =~ s/\bCURRENT_DATE\b\(\)/CURRENT_DATE/io;
>+    $part =~ s/\bCURRENT_DATE(?:\(\)|\b)/TRUNC(CURRENT_DATE)/io;

Ok, this change is fine. I'm going to write \bCURRENT_DATE\b(?:\(\))? though, which seems cleaner to me. r=LpSolit for 4.2.3.
Attachment #440196 - Attachment is obsolete: false
Attachment #440196 - Flags: review- → review+

Updated

5 years ago
Flags: approval4.2+
Flags: approval+

Comment 10

5 years ago
Thanks for your patch, David! :)

Committing to: bzr+ssh://lpsolit%40gmail.com@bzr.mozilla.org/bugzilla/trunk/
modified Bugzilla/DB/Oracle.pm
Committed revision 8357.

Committing to: bzr+ssh://lpsolit%40gmail.com@bzr.mozilla.org/bugzilla/4.2/
modified Bugzilla/DB/Oracle.pm
Committed revision 8122.
Status: ASSIGNED → RESOLVED
Last Resolved: 6 years ago5 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.