Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Глюки WHERE условия в запросе на vf 9 / 14 сообщений из 14, страница 1 из 1
20.01.2006, 10:28
    #33493464
Danil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Всем привет.
Переношу проект с foxpro 8 на foxpro 9
Столкнулся с некоторыми сложностями:
Запрос
Код: plaintext
1.
2.
SELECT d.subj_id;
		FROM docs d, recs r;
		WHERE d.subj_id+STR(d.id)=r.subj_id+STR(r.doc_id)

без проблем отрабатывает в foxpro 8
,а в foxpro 9 зависает, до того, что процессор перегревается и продолжает "висеть".
Данные используются одни и те же.
subj_id -строка, размерностью 4 знака
doc_id и id - целые числа
Экспериментальным путем получено, что если переписать условие WHERE на
Код: plaintext
WHERE d.subj_id=r.subj_id AND STR(d.id)=STR(r.doc_id)
,то работает!
Проблема в том, что таких запросов в "переносимом" проекте очень много, и хотелось бы узнать: как обойти подобную "странность" и выполнить запрос на foxpro 9, без модификаций запроса? М.б. есть какой-либо SET ?
Заранее спасибо.
P.S.
Выставлен SET ENGINEBEHAVIOR 80 , но на результат не влияет.
...
Рейтинг: 0 / 0
20.01.2006, 10:46
    #33493521
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Исполни, должно проехать, если тест пройдёт, то переиндексируй данные

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE CURSOR docs (subj_id c( 4 ), id i)
SELECT docs 
INDEX ON subj_id+STR(id) TAG t1

CREATE CURSOR recs (subj_id c( 4 ), Doc_id i)
SELECT recs 
INDEX ON subj_id+STR(doc_id)  TAG t2

INSERT INTO docs (subj_id , id ) VALUES ('1',  1 )

INSERT INTO RECS(subj_id , doc_id) VALUES ('1',  1 )

SELECT d.subj_id;
		FROM docs d, recs r;
		WHERE d.subj_id+STR(d.id)=r.subj_id+STR(r.doc_id)
...
Рейтинг: 0 / 0
20.01.2006, 14:29
    #33494418
Danil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Действительно, запрос прошел, попытаюсь переиндексировать, но в vf8 работает и так (без индексирования), а в vf9 висит. Не подскажете (хотя бы гипотетически) в чем же проблема?
...
Рейтинг: 0 / 0
20.01.2006, 14:36
    #33494441
Danil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
К тому в программе очень много создается таблиц и курсоров, которые в дальнейшем учавствуют в запросах с подобными условиями выборки. Поэтому очень бы хотелось как-то решить проблему, допустим отключить для select-а использование индексных выражений или что-то подобное.
...
Рейтинг: 0 / 0
20.01.2006, 14:54
    #33494484
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Ну кто же знает какие у тебя данные и структуры, если не можешь добиться воспроизводимого результата на тестовых данных, то смотри свои "косяки".

Для SELECT-SQL отключить оптимизацию нельзя.
...
Рейтинг: 0 / 0
20.01.2006, 14:59
    #33494502
Danil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Структура выше описана, по сути! Две таблицы имеющее по 2 поля каждая и сравниваемые по выражению:
Поле_строка+STR(поле_число)
Косяк тут сложно найти, разве, что в новом подходе MS к оптимизации. Вероятно foxpro 9 пытается построить индекс для оптимизации, но у него не получается или что-то еще происходит.
SET-ы проверил, совпадают, что у 9-ки, что у 8-ки.
:-(
...
Рейтинг: 0 / 0
20.01.2006, 15:26
    #33494567
Danil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Для vf9:
Кстати ТЕСТОВЫЕ запросы на ТЕСТОВЫХ данных отрабатывают нормально, в случае если по выражениям в WHERE есть индекс.
Получается, что для vf8, наличие или присутствие индексов не играет столь важной роли как для vf9.
Неужели при переходе на vf9, придется создавать индексы по выражениям или менять условия с AND???
И другого пути заставить vf9 работать с запросами select, как vf8 НЕТ???
...
Рейтинг: 0 / 0
20.01.2006, 15:33
    #33494588
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Так уточняющий вопрос, чтозначит процессор перегревается - надо ли это понимать , что запрос долго выполняется, но результат всё равно получаешь.
...
Рейтинг: 0 / 0
20.01.2006, 15:37
    #33494597
Danil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Результата НЕТ! Висит до тех пока не сниму задачу - это только в vf9, в vf8 - отрабатывает оченб быстро. Т.е. результата в vf9 НЕТ!!! :-(
Кстати, при работе запроса в vf9, на жестком диске создается очень много файлов вида:
00004HZD000H.CDX
00004HZD000A.TMP
...
Рейтинг: 0 / 0
21.01.2006, 01:54
    #33495377
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Hi Danil!

1) SP1 на VFP9 стоит? Есть некоторые проблемы с STR - без SP1 в 9-ке не
работает оптимизация - так что видимо фокс у тебя не "висит", а просто так
жутко медленно считает...
2) Не пробовал писать более чётко - STR(..., 10) хотя-бы...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
21.01.2006, 15:39
    #33495603
Danil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Пробовал писать STR(...,10) - все равно висит!
А где можно скачать SP1 на VF9?
...
Рейтинг: 0 / 0
21.01.2006, 16:07
    #33495622
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
DanilА где можно скачать SP1 на VF9?
Скачать бесплатно SP1 к MS VFP 9.0
...
Рейтинг: 0 / 0
21.01.2006, 16:46
    #33495650
Danil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Огромное спасибо! Установил SP1 на VF9 и все заработало!!!
...
Рейтинг: 0 / 0
22.01.2006, 20:07
    #33496224
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюки WHERE условия в запросе на vf 9
Hi Danil!

Видимо оно и раньше работало, но просто терпения тебе не хватило дождаться
завершения процесса :)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Глюки WHERE условия в запросе на vf 9 / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]