Closed Bug 302643 Opened 19 years ago Closed 19 years ago

[PostgreSQL] 'collectstats.pl --regenerate' fails with a TO_CHAR error

Categories

(Bugzilla :: Database, defect)

2.20
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 301141

People

(Reporter: emmanuel, Assigned: mkanat)

References

Details

Attachments

(1 file, 1 obsolete file)

Using the head of the 2.20 branch, I can't run 'collectstats --regenerate' when
using PostgreSQL as a database. The command fails with:

[manu@lora bugzilla-2.20]$ ./collectstats.pl --regenerate
DBD::Pg::st execute failed: ERREUR:  La fonction to_char("unknown", "unknown")
n'est pas unique
ASTUCE : n'a pas pu choisir un meilleur candidat dans les fonctions. Vous devez
ajouter une conversion explicite de type.
 [for Statement "SELECT TO_CHAR(creation_ts, 'J')::int AS start,
TO_CHAR(current_date, 'J')::int AS end, TO_CHAR('1970-01-01', 'J')::int FROM
bugs  WHERE TO_CHAR(creation_ts, 'J')::int != 'NULL' ORDER BY start LIMIT 1"] at
Bugzilla/DB.pm line 81
        Bugzilla::DB::SendSQL('SELECT TO_CHAR(creation_ts, \'J\')::int AS start,
TO_CHAR(cur...') called at ./collectstats.pl line 285
        main::regenerate_stats('./data/mining', '-All-') called at
./collectstats.pl line 77

(Apologies for the french)

I can reproduce this on tip as well.
Assignee: database → mkanat
Severity: major → normal
Summary: 'collectstats.pl --regenerate' fails when using PostgreSQL → [PostgreSQL] 'collectstats.pl --regenerate' fails with a TO_CHAR error
Target Milestone: --- → Bugzilla 2.20
I've looked into this a bit, and the code in collectstats.pl for --regenerate is
quite complex.

I think that this won't work for the initial release of 2.20.
Keywords: relnote
Attached patch fixes bug of collectstats --regenerate (obsolete) β€” β€” Splinter Review
Comment on attachment 191342 [details] [diff] [review]
fixes bug of collectstats --regenerate

Yeah, unfortunately we need a solution that will work on all databases.

Also, in the future, make sure to attach patches as a "diff -u"
Attachment #191342 - Flags: review-
Sorry, I didn't write a comment for patch.

A cause of this error message is because it is not recognized character string
in TO_CHAR as 'TIMESTAMP WITHOUT TIME ZONE'. Then I add 'cast to timestamp
without time zone'.
Thank you for your quick reply.

(In reply to comment #3)
> (From update of attachment 191342 [details] [diff] [review] [edit])
> Yeah, unfortunately we need a solution that will work on all databases.

Yes, I understand it. This patch has two following change points.

o cast to 'TIMESTAMP WITHOUT TIME ZONE' using CAST() in TO_CHARS.
  The CAST() syntax is specified in SQL99. and usable mysql and postgresql.

o I unquote 'quoted NULL'.

> Also, in the future, make sure to attach patches as a "diff -u"

ok, may i resend patch?
(In reply to comment #5)
>
> ok, may i resend patch?

Please do.
OK, I attached a patch as a "diff -u".
Attachment #191342 - Attachment is obsolete: true
Comment on attachment 201002 [details] [diff] [review]
fixes bug of collectstats --regenerate(resent)

You also need to ask for review
Attachment #201002 - Flags: review?(mkanat)
Blocks: meta-pg
Comment on attachment 201002 [details] [diff] [review]
fixes bug of collectstats --regenerate(resent)

No, definitely not. MySQL doesn't support CAST that way.
Attachment #201002 - Flags: review?(mkanat) → review-
Another problem in collectstats.pl is that FROM_DATE is MySQL specific:

[Sat Nov  5 10:38:40 2005] collectstats.pl: DBD::Pg::st execute failed: ERREUR:  la fonction from_days(integer) n'existe pas
[Sat Nov  5 10:38:40 2005] collectstats.pl: ASTUCE : Aucune fonction ne correspond au nom donnΓ© et aux types d'arguments. Vous devez ajouter des conversions explicites de type.explicit type casts.
[Sat Nov  5 10:38:40 2005] collectstats.pl:  [for Statement "SELECT bug_id FROM bugs  WHERE bugs.creation_ts < from_days(2453277) AND bugs.creation_ts >= from_days(2453276)  ORDER BY bug_id"] at Bugzilla/DB.pm line 84
[Sat Nov  5 10:38:40 2005] collectstats.pl:     Bugzilla::DB::SendSQL('SELECT bug_id FROM bugs  WHEREbugs.creation_ts < from_days(2...') called at ./collectstats.pl line 318
[Sat Nov  5 10:38:40 2005] collectstats.pl:     main::regenerate_stats('./data/mining', '-All-') called at ./collectstats.pl line 77


The initial bug reported by manu is fixed by using my new param $cast defined in bug 301141, so that we now write:
$dbh->sql_to_days("'1970-01-01'", '::date')
We actually have a fix for this bug in this dup.

*** This bug has been marked as a duplicate of 301141 ***
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → DUPLICATE
Target Milestone: Bugzilla 2.20 → ---
Relnoted for 2.20.1 in bug 320319.
Keywords: relnote
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: