Переключение на Главную Страницу Страницы: 1 ... 63 64 [65] 66 67 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 456744 )
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #960 - 24. Марта 2018 :: 05:03
Печать  
alyuev писал(а) 23. Марта 2018 :: 16:37:
И вылетает теперь на любом файле... Как будто где-то что-то подвисло.... Хотя процесс 1Сный убивается.

Странное дело... Точно версия *_02? Мне ее пока не удается завалить.
Какая строка подключения?

UPD1: Поймал. Попробуй 3ю версию (лежит в каталоге).
UPD2: Добавлена обработка "вьювер csv" на табличном поле.
https://cloud.mail.ru/public/EdyB/4zS4EG8gB

Фуффф... вроде как закончено Подмигивание
« Последняя редакция: 24. Марта 2018 :: 13:18 - Djelf »  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #961 - 26. Марта 2018 :: 10:47
Печать  
Спасибо! Работает! Т.е. даже если и вылетает - последующая загрузка работает корректно (с исправленным запросом, например, добавленным ЛИМИТом).

И за ert-шку тоже отдельное спасибо.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #962 - 26. Марта 2018 :: 10:56
Печать  
alyuev писал(а) 26. Марта 2018 :: 10:47:
Спасибо! Работает! Т.е. даже если и вылетает - последующая загрузка работает корректно (с исправленным запросом, например, добавленным ЛИМИТом).

И за ert-шку тоже отдельное спасибо.

По этому в примере и предусмотрен режим загрузки через временный файл sqlite. имхо получилось нормально: чтобы быстро глянуть что внутри - прямой режим, а чтобы работать с файлом быстро - через временный.

Да... надо бы memory-guard и time-guard в 1sqlite встроить, а то вылетать по памяти или вырубать через диспетчер длинный/кривой запрос надоело/
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #963 - 26. Марта 2018 :: 11:09
Печать  
Да, за это (за временный файл) тоже спасибо.

По поводу вылетов.
Мы в пятницу пробовали один несложный запрос с группировкой (не из CSV а из, DB3), так 1с-ка вылетала при превышении памяти. Но стали пробовать разные просмотрщики и выполняли этот же запрос там. Так, например, SQLiteExpertPro загрузил файл без проблем, и память не выжирал ни разу. А SQLiteDatabaseBrowser работал также как 1С - вылетал.

У SQLiteExpertPro разве свой какой-то движок? Или как-то оптимизировано выполнение запроса?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #964 - 26. Марта 2018 :: 12:32
Печать  
alyuev писал(а) 26. Марта 2018 :: 11:09:
У SQLiteExpertPro разве свой какой-то движок? Или как-то оптимизировано выполнение запроса?

Почти у всех этих оболочек неявно limit прописывается.
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #965 - 26. Марта 2018 :: 12:53
Печать  
Но запрос-то выполняется! Результат возвращается.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #966 - 26. Марта 2018 :: 13:20
Печать  
alyuev писал(а) 26. Марта 2018 :: 12:53:
Но запрос-то выполняется! Результат возвращается.

А ты случаем не 64 битный SQLite Expert использовал?  Подмигивание
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #967 - 26. Марта 2018 :: 13:46
Печать  
Судя по истории 64х версия появилась начиная с 4.0 релиза. А у нас 3.5.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #968 - 26. Марта 2018 :: 14:37
Печать  
alyuev писал(а) 26. Марта 2018 :: 13:46:
Судя по истории 64х версия появилась начиная с 4.0 релиза. А у нас 3.5.

Чорд... забыл уже...
PRAGMA temp_store = 1;
и все дела...
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #969 - 26. Марта 2018 :: 18:03
Печать  
О, Великий Djelf! "PRAGMA temp_store = 1;" - Это оно!
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: 1sqlite
Ответ #970 - 03. Апреля 2018 :: 09:51
Печать  
1sqlite 3.22.0.19
Перестал работать IS NULL

Пример:

SELECT
  count()
FROM
  Справочник_ФизЛица as спрФизЛица
  left join Справочник_Менеджеры as спрМенеджеры
  ON спрФизЛица.ID = спрМенеджеры.ФизЛицо
WHERE
  спрМенеджеры.ID IS NULL

На версии 3.16.2.14 возвращает количество с пустым менеджером, на версии 3.22.0.19 возвращает количество всех элементов физ.лиц.

  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #971 - 03. Апреля 2018 :: 11:54
Печать  
Sserj писал(а) 03. Апреля 2018 :: 09:51:
1sqlite 3.22.0.19
Перестал работать IS NULL

Пример:

SELECT
  count()
FROM
  Справочник_ФизЛица as спрФизЛица
  left join Справочник_Менеджеры as спрМенеджеры
  ON спрФизЛица.ID = спрМенеджеры.ФизЛицо
WHERE
  спрМенеджеры.ID IS NULL

На версии 3.16.2.14 возвращает количество с пустым менеджером, на версии 3.22.0.19 возвращает количество всех элементов физ.лиц.


Мда... Спасибо! Недоглядел что в 3.21.0  добавили SQLITE_INDEX_CONSTRAINT_ISNULL  и т.п. (это флаг разрешения поиска по индексу с таким условием). Отключил.
1sqlite 3.22.20 https://cloud.mail.ru/public/MWgt/4yuCZS6bE
  
Наверх
www  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: 1sqlite
Ответ #972 - 06. Июня 2018 :: 13:47
Печать  
Djelf, а ты мог бы добавить фичу: insert/update/delete для 1С-ных баз?
Орефков еще в 2008 писал:
"insert/update/delete скорее всего не будет.
Если только кто-нить не сделает."

Если возможно, то - реализовать их действие по еще какому-то параметру. Т.е. по умолчанию - нельзя. А если принудительно установить параметр - то можно. И то, только в текущем запросе.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #973 - 08. Июня 2018 :: 16:18
Печать  
alyuev писал(а) 06. Июня 2018 :: 13:47:
Djelf, а ты мог бы добавить фичу: insert/update/delete для 1С-ных баз?
Орефков еще в 2008 писал:
"insert/update/delete скорее всего не будет.
Если только кто-нить не сделает."

Если возможно, то - реализовать их действие по еще какому-то параметру. Т.е. по умолчанию - нельзя. А если принудительно установить параметр - то можно. И то, только в текущем запросе.


Извини, как то пропустил вопрос.

Тут засада в том что у dbf нет RowId, а sqlite для модификации строки отправляет в функцию Update именно полученный RowId.
RowId то в 1sqlite есть, но он фэйковый (просто счетчик).
Поэтому и не срастается.
Но это даже не так важно, прямого доступа к dbf нет, поэтому придется записывать через штатный механизмы 1С и скорости из-за этого не сильно прибавится.

Возможно delete как то и получится, но не больше.
  
Наверх
www  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #974 - 08. Июня 2018 :: 16:50
Печать  
* 1sqlite 3.24.0.21 https://cloud.mail.ru/public/9znr/ZJ6ULE9aR

+ обновлен движок sqlite до 3.24.0
+ устранен вылет из 1С при вызове метода ТабличногоПоля Колонки.Очистить() или удалить колонку
Причина: инициирует тп, 1sqlite удаляет, но потом информирует тп о удалении колонки. Вот тут тп и падает.

+ устранен вылет на запросе "SELECT 1 FROM __1s_blob GROUP by block COLLATE binary", возможно проявлялся и в других случаях.
Причина: не учитывает размер строки и лезет куда ни попадя...

Из-за этого
+ движок чтения UTF8 переведен на конечный автомат Хофмана
http://bjoern.hoehrmann.de/utf-8/decoder/dfa/

+ переписано сравнение collete _1С
это может что-то ускорить, а что-то и замедлить, как получится...

А это мне надо Подмигивание
+ добавлены функции compress и uncompress, возвращают blob, чтобы получить текст нужно использовать cast(uncompress(data) as text)
   я sqlite использую не только вместо хранения длинных строк, но и для хранения архива xml и сжатие тут весьма уместно.

Нововведения в самой sqlite не сильно велики, но для тех кто работает с внешними базами sqlite - функция "upsert" весьма полезна.

А вот следующая версия видимо будет с поддержкой оконных функций и это будет даже круче cte!
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 63 64 [65] 66 67 ... 79
ОтправитьПечать