Guest User

Untitled

a guest
Jun 21st, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #!/bin/bash
  2. echo "Transform database collate UTF-8 to C in order to fix btree indexes for where-like filter"
  3.  
  4. export DATABASE=$1
  5. export DATABASE_UTF8=${DATABASE}_utf8
  6. export DATABASE_C=${DATABASE}_c
  7. export DATABASE_OWNER=$2
  8.  
  9. if [[ $DATABASE == "" ]]; then
  10. echo "Database paremeter is required."
  11. echo "Uses db_utf8_to_c.sh DATABASE OWNER"
  12. exit -2
  13. fi
  14. if [[ $DATABASE_OWNER == "" ]]; then
  15. echo "Owner parameter is required."
  16. echo "Uses db_utf8_to_c.sh DATABASE OWNER"
  17. exit -2
  18. fi
  19.  
  20. echo "Transform database UTF-8 to C:"${DATABASE}
  21.  
  22. echo "Creating backup"
  23. pg_dump ${DATABASE} > ${DATABASE_UTF8}
  24. result=$?
  25. if [[ $result != 0 ]]; then
  26. echo "Failed to create backup"
  27. exit $result
  28. fi
  29.  
  30. echo "Creating empty database"
  31. createdb --owner=$DATABASE_OWNER --lc-collate='C' --encoding='unicode' -T template0 ${DATABASE_C}
  32. result=$?
  33. if [[ $result != 0 ]]; then
  34. echo "Failed to create new database"
  35. exit $result
  36. fi
  37.  
  38. echo "Restoring database"
  39. psql -d ${DATABASE_C} -qf ${DATABASE_UTF8} > ${DATABASE_C}_restore.out
  40. result=$?
  41. if [[ $result != 0 ]]; then
  42. echo "Failed to restore database"
  43. exit $result
  44. fi
  45.  
  46. echo "Renamed of databases"
  47. psql postgres -c "BEGIN;ALTER DATABASE ${DATABASE} RENAME TO ${DATABASE_UTF8};ALTER DATABASE ${DATABASE_C} RENAME TO ${DATABASE};COMMIT;"
  48. result=$?
  49. if [[ $result != 0 ]]; then
  50. echo "Failed to rename database"
  51. exit $result
  52. fi
  53. echo "*************Success***************"
  54.  
  55. echo "Verify slow results for ${DATABASE_UTF8}:"
  56. psql ${DATABASE_UTF8} -c "SHOW LC_COLLATE"
  57. # First time creates buffers
  58. psql ${DATABASE_UTF8} -c "SELECT id, url FROM ir_attachment WHERE url::text LIKE '/web/content/%-d6fee47/web.assets_backend%%.css'" > /dev/null 2>&1 || true
  59. psql ${DATABASE_UTF8} -c "EXPLAIN (ANALYZE, VERBOSE, BUFFERS) SELECT id, url FROM ir_attachment WHERE url::text LIKE '/web/content/%-d6fee47/web.assets_backend%%.css'" > ${DATABASE_UTF8}_query.out || true
  60. cat ${DATABASE_UTF8}_query.out
  61.  
  62. echo "Verify faster results for ${DATABASE}:"
  63. psql ${DATABASE} -c "SHOW LC_COLLATE"
  64. # First time creates buffers
  65. psql ${DATABASE} -c "SELECT id, url FROM ir_attachment WHERE url::text LIKE '/web/content/%-d6fee47/web.assets_backend%%.css'" > /dev/null 2>&1 || true
  66. psql ${DATABASE} -c "EXPLAIN (ANALYZE, VERBOSE, BUFFERS) SELECT id, url FROM ir_attachment WHERE url::text LIKE '/web/content/%-d6fee47/web.assets_backend%%.css'" > ${DATABASE_C}_query.out || true
  67. cat ${DATABASE_C}_query.out
Add Comment
Please, Sign In to add comment