PostgreSQL

Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.18 »   PostgreSQL
RSS

PostgreSQL

Текущий рейтинг темы: Нет
Выводить сообщения
Правила раздела

<<Назад  Вперед>>Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 13 14 15 16 17 18
Модераторы: aerograf, wsx
Печать
 
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
Оптимизированный вариант show_ddl, корректно работающий с триггерами и внешними ключами. Хотя для IntBoard и не критично, но вдруг кому еще пригодится...

Прикрепленный файл (fn_show_ddl.sql, 2540 байт, скачан: 743 раза)
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
Только что скачал обновленный дистрибутив — несколько уточнений в отношении PostgreSQL:
Подсчет размера таблицы с помощью страниц (relpages) дает весьма приблизительный результат, и то только после VACUUM. Кроме того, размер страницы не обязательно 8К (хотя, как правило, так и есть) — зависит от настроек сервера. Точный размер таблиц (с индексами) можно получить так:
function db_table_status() {
  return "SELECT pt.relname AS Name, pg_catalog.pg_total_relation_size(pt.oid) AS Data_length ".
"FROM pg_catalog.pg_class pt ".
"     LEFT JOIN pg_catalog.pg_roles r ON r.oid = pt.relowner ".
"     LEFT JOIN pg_catalog.pg_namespace pn ON pn.oid = pt.relnamespace ".
" WHERE pt.relkind IN ('r','') ".
"      AND pt.relname NOT LIKE ('pg_ts_%') ".
"      AND pn.nspname NOT IN ('pg_catalog', 'pg_toast') ".
"      AND pg_catalog.pg_table_is_visible(pt.oid) ";
}

Триггер   CREATE TRIGGER tg_fulltext_prefix_Post  BEFORE UPDATE OR INSERT ON prefix_Post
  FOR EACH ROW EXECUTE PROCEDURE  tsearch2(fulltext_idx, p_text, p_title);
для таблицы prefix_Post нужен обязательно — он заполняет поле для полнотекстового поиска перед каждым INSERT/UPDATE.

Приношу извинения за неточность:
UPDATE prefix_Post SET fulltext_idx = to_tsvector('default',coalesce(p_text,'') ||' '|| coalesce(p_title,''));
VACUUM FULL ANALYZE prefix_Post;
нужно только в том случае, если для существующей заполненной таблицы добавилось поле полнотекстового поиска. Для создания базы с "нуля" это не нужно.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Ok. Изменения внес. А поиск нормально работает?

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
Упс! В "параметрах установки" тип SQL-сервера — только MySQL, PostgreSQL в меню нет...
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
Тьфу, самое важное-то я и забыл. Вот исправленный install.php

Прикрепленный файл (install.php, 36724 байт, скачан: 752 раза)
---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003
исправления включены в обновлённый дистрибутив?
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
install — пока еще нет. Новый common, который лежит в отдельной теме — да.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
После изменения строки</td><td><select name=DBdriver><option value="mysql">MySQL</select><select name=DBdriver><option value="pssql">PostgreSQL</select></td></tr>на</td><td><select name=DBdriver><option>MySQL<option>pssql</select></td></tr>установка начинается, но отваливается с сообщением:Fatal error: Call to undefined function db_exist_check() in /usr/local/www/apache22/data/new/install.php on line 160В pssql.php действительно такой функции нет. После переименования db_check() в db_exist_check() создание таблиц начинается, но дает ошибку на таблице prefix_Forum:Warning: pg_query() [function.pg-query]: Query failed: ERROR: <набор крокозяблов> at character 1621 in /usr/local/www/apache22/data/new/db/pssql.php on line 83
Ошибка! CREATE TABLE i_Forum ( f_id SERIAL, f_tpid SMALLINT NOT NULL DEFAULT 0, ......)
ERROR: <набор крокозяблов> at character 1621

В связи с этим вопрос:
Аналог функции php mysql_query() для Postgre (установить "SET client_encoding")?


PS. Опера ни в какую не хочет распознавать кодировку автоматически. Пока не поставишь utf-8 по умолчанию, показывает крокозяблики \":(\"
-KoT-
Почетный участник


Откуда: Красноярский край
Всего сообщений: 153
Рейтинг пользователя: 6

Репутация пользователя: 1

Ссылка


Дата регистрации на форуме:
26 апр. 2006
В prefix_Forum есть поля TINYINT, скорее всего на них и ругается...
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
У тебя что, руссифицированный PostgreSQL? Такое может быть только в одном случае: если он сообщение об ошибке выдает на русском языке...
С инстяллятором там вот что возникло: я сначала хотел его на UTF8 перевести, но потом возникли некоторые проблемы (в частности, редирект перестал работать), поэтому я от этой идеи отказался (потом, видимо, придется сделать отдельный дистрибутив на UTF-8, но в теге META исправить забыл кодировку).
Функция db_exist_check в pssql.php называется db_check, ее надо переименовать (я для MySQL это сделал, а для PS SQL просто забыл). По идее, она должна проверять существование базы данных, и пытаться создавать ее, если базы не существует, но хватает прав для создания, но пока она просто возвращает 1.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
<<Назад  Вперед>>Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 13 14 15 16 17 18
Модераторы: aerograf, wsx
Печать
Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.18 »   PostgreSQL
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0573. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!