diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index d21e437..758386a 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -20,6 +20,13 @@ if [ $RETRY -ge $MAX_RETRIES ]; then exit 1 fi +echo "Applying position column collation fix..." +if psql "$DATABASE_URL" -f ./scripts/setup-collation.sql; then + echo "Collation fix applied successfully." +else + echo "WARNING: Failed to apply collation fix. Continuing anyway..." +fi + echo "Applying RLS policies..." if psql "$DATABASE_URL" -f ./scripts/setup-rls.sql; then echo "RLS policies applied successfully." diff --git a/scripts/setup-collation.sql b/scripts/setup-collation.sql new file mode 100644 index 0000000..32762df --- /dev/null +++ b/scripts/setup-collation.sql @@ -0,0 +1,6 @@ +-- Set COLLATE "C" on position columns so fractional indexing sorts correctly. +-- en_US.utf8 collation is case-insensitive and breaks lexicographic ordering. +-- This must run after prisma db push since push may reset column types. + +ALTER TABLE columns ALTER COLUMN position SET DATA TYPE text COLLATE "C"; +ALTER TABLE cards ALTER COLUMN position SET DATA TYPE text COLLATE "C";