суббота, 29 сентября 2007 г.

Неоднозначность в запросах с сортировкой и distinct

Такой вот запрос, в FB2 отрабатывает, но данные возвращает в случайном порядке.
select distinct(t.f1) from table1 t order by t.id

Как подсказал Дима Кузьменко:
сначала идет distinct, потом order.
то есть. набор выливается в sort, удаляются повторы.
Затем набор сортируется по атрибуту order.
как оно этот атрибут возьмет - зависит от того, как на диске
или в индексе легло.
план в 2.0 - PLAN SORT (SORT ((table1 NATURAL)))

А вот Oracle(как выяснилось и PostgreSQL) с такими запросами посылает(после чего и поднялся вопрос).
http://ora-01791.ora-code.com/
ORA-01791: not a SELECTed expression
Cause:
There is an incorrect ORDER BY item. The query is a SELECT DISTINCT query with an ORDER BY clause. In this context, all ORDER BY items must be constants, SELECT list expressions, or expressions whose operands are constants or SELECT list expressions.
Action:
Remove the inappropriate ORDER BY item from the SELECT list and retry the statement.


Для экспериментов:
CREATE TABLE TABLE1 (
ID INTEGER NOT NULL,
F1 VARCHAR(10)
);

INSERT INTO TABLE1 (ID, F1) VALUES (1, 'q');
INSERT INTO TABLE1 (ID, F1) VALUES (2, 'w');
INSERT INTO TABLE1 (ID, F1) VALUES (3, 'e');
INSERT INTO TABLE1 (ID, F1) VALUES (4, 'r');
INSERT INTO TABLE1 (ID, F1) VALUES (5, 't');
INSERT INTO TABLE1 (ID, F1) VALUES (6, 'q');
INSERT INTO TABLE1 (ID, F1) VALUES (7, 'w');
COMMIT WORK;

Блокировка файла базы при XNET подключении с использованием событий

>> 2) Сервер после отключения ничего не держит.
> Неправдачка ваша.
> При XNET подключении с использованием событий именно держит.

События - ключевой момент. Там поток их доставки ждёт 5 сек
до полного отруба.

--
Хорсун Влад

воскресенье, 9 сентября 2007 г.

Хитрый способ починки БД с помощью nbackup

>04.09.2007 12:17:06 INFO: Analyzing database low-level structures...
> 04.09.2007 12:17:06 INFO: Process database file #1 of 1 files.
> 04.09.2007 12:20:01 INFO: Actual PageCount: 238816 found in database
> 04.09.2007 12:20:01 ERROR: Found 6168 undefined pages.
>
> Насколько это страшно ?

VK>> Если это ОДС 11.1 и все 6168 undefined pages в конце БД, то это
VK>> совершенно не страшно.
VK>> Сделай бекап 0-го уровня nbackup'ом, пофикси его им же для
VK>> превращения в БД, и сравни с р-ром оригинала. Потом прогони
VK>> FirstAID на полученной копии
>
> Влад, а можешь пару слов про низкий уровень процесса?
> Nbackup их восстановит правильно или отбросит?

FB 2.1, работая с родным форматом ОДС 11.1, по-умолчанию расширяет файл БД
относительно большими кусками, а не по-странично как раньше. Соответственно в
конце файла, как правило, есть страницы, которые никогда не были использованы.
В PIP есть отметка о том, сколько страниц было реально использовано. nbackup
читает эти отметки и не включает в бекап эти страницы.

--
Хорсун Влад

Различия в работе с savepoint в Firebird и Interbase

Kovalenko Dmitry wrote:
>
> Родился вопрос. А в стандарте SQL (99) вроде как прописано понятие
> точек сохранения (SAVEPOINT).

Так точно.

> А прописано ли в нем что делать с точкой B в таком случае?
>
> 1. savepoint A;
> 2. savepoint B;
> 3. savepoint A;
> 4. в этой точке у нас savepoint B (по-стандарту) существует или нет?

Стандарт лишь говорит, что должен удалиться старый сейвпойнт А и
создаться новый с тем же именем.

> в IB savepoint "B" будет изничтожен

Судя по всему, IB неявно выполняет RELEASE SAVEPOINT A (который по
стандарту уничтожает все сейвпойнты от А до настоящего времени), в то
время как FB выполняет наше расширение: RELEASE SAVEPOINT A ONLY,
которое удаляет только данный сейвпойнт. Отсюда и разница.

Я считаю наше поведение правильным.

--
Дмитрий Еманов

воскресенье, 2 сентября 2007 г.

Мега связка Perl+Oracle

DBD-Oracle-1.19\README.win32.txt
1)...
8) Enough Downloading and installing go have a coffee.

А перед этим мы скачали все что только можно от МС(Microsoft Visual Studio 2005,Windows SDK, Microsoft .Net framework 1.1) - опенсорс, мля.

PS не нужно воспринимать сей пост серьезно
PSS хотя...