Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

FoxPro & SQL - вопрос

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Andrey-750
Гость





СообщениеДобавлено: Пн Май 26 2003 02:27    Заголовок сообщения: FoxPro & SQL - вопрос Ответить с цитатой

Примерно 6 лет назад мною (думается - не только мною) был обнаружен пренеприятнейший баг в Visual FoxPro 3.0 (version date June 21 1995). Суть бага в том, что при некоторых обстоятельствах егойный SQL напрочь отказывается считаь эквивалентными одинаковые числа.
Ниже я привожу коротенькую тестовую программку, позволяющую выявить этот баг.
Огромная просьба ко всем, имеющим такую возможность - прогнать этот тест на VFP более поздних версий и сообщить о результатах

С уважением, Андрей
andrey-750@mail.ru

************************** VFP SQL TEST **************************
SET COLLATE TO "RUSSIAN"
*** Это непременное условие проявления бага.
*** Если COLLATE="MACHINE" - ЭТОТ баг не проявляется (зато проявляются другие)


*** Для начала создадим таблицу с единственным полем.
CREATE TABLE tbl1 FREE (TblID N(10))

*** Внесём 100000 записей
FOR j=0 TO 99999
INSERT INTO tbl1 VALUES (j)
ENDFOR

SELECT * FROM tbl1 WHERE TblID NOT IN (SELECT TblID FROM tbl1)
*** Результатом этого запроса, как легко видеть, должна быть пустая таблица,
*** на самом же деле получается выборка примерно из 250 записей.

SELECT * FROM tbl1 a, tbl1 b WHERE a.TblID=b.TblID
*** Результатом этого запроса должна быть таблица из 100000 записей,
*** на самом же деле получается выборка примерно из 99650 записей.

*** Если создать таблицу с полем типа I, первый запрос выдаст правильный
*** результат (0 records selected), но только если в подзапросе будет использоваться та же таблица.
*** Если же это будет другая, идентичная первой, баг повторяется.
*** Второй запрос будет в любом случае выполнен с ошибкой.
*** Вместо "TABLE" можно с таким же успехом использовать "CURSOR"

*** Очистим диск
SELECT tbl1
ZAP
USE
DELETE FILE tbl1
*********************** END OF VFP SQL TEST **********************
Вернуться к началу
Борис
Гость





СообщениеДобавлено: Пн Май 26 2003 08:01    Заголовок сообщения: Точно, есть. VFP 6.0: в результате соответственно 377 и 99747 записей (-) Ответить с цитатой

-
Вернуться к началу
Sclis
Гость





СообщениеДобавлено: Вт Июн 03 2003 09:17    Заголовок сообщения: Re: FoxPro & SQL - вопрос Ответить с цитатой

6.0 - да, но вот если не удалять таблицы, а закрыть фокс, потом открыть и прогнать запросы то - нет. будет все нормально Smile может он кэширует так? и начинается этот фокус с 2060 записей, потом добавляется по числу через каждые 128 примерноSmile)
заканчивается на 63671. а может это как-то связано с кодировкой уникоде?Smile классный фокус!
Вернуться к началу
Борис
Гость





СообщениеДобавлено: Вт Июн 03 2003 11:25    Заголовок сообщения: Если нужно побороться с этим, то можно так: сразу после "CREATE TABLE..." поставить "INDEX ON TblID...". По Ответить с цитатой

-
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...