|
|
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
Добрый день! Господа, есть необходимость одним sql файлом установить в базу расширение, скажем hstore. Суть в том, что нужно обновить базу при установке deb пакета через dbconfig-common. А этот пакет будет ставиться на системы с разной версией Postgres (8.3, 8.4 и > 9.x) Как можно на sql собрать что-то типа такого: Код: sql 1. 2. 3. 4. 5. 6. 7. Или через sql никак и нужно искать другие пути? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 20:38:13 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
YP977, не совсем понятно что вы хотите, чтобы процесс установки контрибов выполнялся при apt-get install "ваш deb пакет"? Или вы хотите sql который запускаешь через psql и он определяя версию сам ставит контриб? для первого варианта можно запилить простецкий shell скрипт типа такого: #!/usr/bin/env bash pgVersion=$(dpkg -l |grep -E "^ii.*postgresql-contrib" |awk '{print $3}' |grep -woE '[0-9]\.[0-9]') [[ -z $pgVersion ]] && { echo "FATAL: can't determine version"; exit 1; } case $pgVersion in 8.3 ) psql -h 127.0.0.1 -p 5432 -U postgres -c "\i /usr/share/postgres/8.3/contrib/hstore.sql" ;; 8.4 ) psql -h 127.0.0.1 -p 5432 -U postgres -c "\i /usr/share/postgres/8.4/contrib/hstore.sql" ;; * ) psql -h 127.0.0.1 -p 5432 -U postgres -c "create extension hstore" ;; esac для второго можно написать функцию которая принимает на вход версию постгреса, которую можно выдернуть из (select setting from pg_settings where name = 'server_version_num') и на основании значения делает установку соотв. контриба. И обернуть это в sql где будет создаваться эта функция, выполняться и затем дропаться. Ну и вызывать этот sql через psql -f Вот такой вот полуночный сумбур))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 22:29:28 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
Хочу именно второго. Скрипт написать это как два пальца... ;) Суть в том, что есть установленный софт при установке которого через dbconfig-common создалась база. При изменении версии софта есть возможность выполнить в postgres-e скрипт. Так вот ума не приложу как его правильно написать... Сапасибо за daevyselect setting from pg_settings where name = 'server_version_num' искал нечто подобное, но не нашел... Буду отталкиваться от этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2014, 22:48:30 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
Написал такой скрипт Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. И тут вдруг бермуды :( Код: plaintext 1. 2. 3. 4. 5. 6. 7. Как обойти ограничение функции pg_read_file чтобы прочитать любой файл? Или чем можно воспользоваться еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 14:53:40 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
Через Код: sql 1. 2. 3. Тоже не получилось: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Еще вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 15:02:10 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
YP977, у меня на версии 9.3.3 работает ваша версия скрипта (единственно за неимением схемы system поменял на public) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 15:23:41 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
стормозил, постгрес же не пытается проверить наличие файлов, если не попал в те условия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 15:32:27 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
Идея с COPY провалилась потому, что в файле /usr/share/postgresql/8.4/contrib/hstore.sql присутствует символ Tab. Вот только экранировать его невозможно :( А так бы, думаю, отработало бы отлично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 16:10:16 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
YP977, можно попробовать переписать на использование plperlu вместо plpgsql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 16:20:20 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
daevyможно попробовать переписать на использование plperlu вместо plpgsql Как будет выглядеть процедура? В perl не силен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2014, 17:00:40 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
По некоторым параметрам использовать plperl/plperlu не хотелось бы. Хочется бы каким-нибудь более другими методами. Есть какие-нибудь идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 12:51:23 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
YP977, а зачем на SQL это делать? install скрипты deb пишутся на shell. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:09:19 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
Ёш, dbconfig-common работает с sql файлами. И хочу использовать именно его т.к. очень удобно обновлять базы без лишнего головняка. Что касается моего вопроса, то планирую в ближайший полчаса-час его решить через COPY. Когда игрался с указанием разных разделителей неправильно посмотрел вывод и подумал, что не получится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:54:08 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
Итог выглядит так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. Понятно, что не очень красиво и не 100% универсально (у разных файлов может быть разный разделитель) но в целом работает так как мне нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 14:37:58 |
|
||
|
Устновка contrib расширений для разных версий одним файлом
|
|||
|---|---|---|---|
|
#18+
Вот более красивый вариант Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. Если у кого-то есть замечания/предложения с радостью выслушаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 14:57:02 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38576715&tid=1998811]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 478ms |

| 0 / 0 |
