Pythagora-io / gpt-pilot

The first real AI developer
Other
29.06k stars 2.91k forks source link

don't use MAX on an UUID field #993

Closed senko closed 4 weeks ago

senko commented 4 weeks ago

A long time ago, ProjectState.id was an integer, project listing used MAX(id) and all was good.

But since it was global instead of per-project, we didn't want to expose it externally as a sequence number / index of the current state. So, we switched the field to UUID and introduced another, step_index, which was an integer.

No-one bothered to tell poor ol' get_all_projects() about it, but SQLite happily obliged, calculating maximum value of an unorderable random field (Like the White Queen, SQLite can execute six impossible queries before breakfast).

So it was that a brave adventurer ventured forth to the land of PostgreSQL, which immediately complained, as it often will. The omission was detected and promptly fixed, lest no unwary souls get caught in the trap.