Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Sep 30, 2020 1:27 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 56 posts ]  Go to page 1 2 3 4 Next
Author Message
 Post subject: порт SQLite 1.0
PostPosted: Sun Oct 26, 2008 7:44 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Не очень успешная пока что попытка портировать SQLite 1.0.
SQLite выбрана потому, что основная часть зависимых от платформы/ОС функций там вынесена в отдельный модуль, кроме того, используется мало функций стандартной библиотеки языка C.
Текущая версия работает как "калькулятор": оператор SELECT + выражение (например, select max(1+3,5/7.5))
Есть работа с целыми, вещественными числами и строками;
Работают функции:
min, max, length, abs, substr, random, last_insert_rowid, like, nullif.

Не работает (падает) создание таблиц (остальные функции работы с таблицами
по этой причине проверить не удалось).

Однако работают begin transaction, commit, rollback :)

Внимание - прога создает мусорные файлы (временные файлы БД и логи) на рамдиске.


Attachments:
File comment: собственно программа
sqlite_kos-0.0.7z [85.19 KiB]
Downloaded 203 times
File comment: исходники
sqlite_kos-src-0.0.7z [246.02 KiB]
Downloaded 203 times
Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Tue Oct 28, 2008 11:24 pm 
Offline
User avatar

Joined: Thu Mar 29, 2007 3:02 am
Posts: 249
barsuk
Делаешь великое дело... это очередной краеугольный камень в постройке системы...:) буду тестировать, и посажу свой проект на SQL... ;)

_________________
*****:
;дух машины, мой бубен сильнее твоей тупости

*****:


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Tue Oct 28, 2008 11:37 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Спасибо :)
Надеюсь, скоро будет что тестировать - пока глюк с созданием таблиц не ловится...


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Wed Oct 29, 2008 1:04 am 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
Компилятор Visual C++? Попробуй добавить ему опцию командной строки /Gs0x100000 (при компиляции через build.bat эту опцию нужно добавить в параметр CPP_PROJ из hello.mak).

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Wed Oct 29, 2008 1:15 am 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
diamond, огромное спасибо! Я сам не скоро догадался бы до этого. :) Теперь create table не падает (хотя я не могу понять, как это могло быть связано с опцией /Gs).


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Wed Oct 29, 2008 10:02 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
а "мусорные" файлы можно ли в папку вроде "/sqllite" кидать?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Wed Oct 29, 2008 12:52 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
barsuk wrote:
(хотя я не могу понять, как это могло быть связано с опцией /Gs)

Если вкратце - управление стеком в Windows и Kolibri различается: в Kolibri стек представляет собой обычную область памяти, а в Windows иногда нужны дополнительные махинации. VC, будучи компилятором под Windows, вставляет дополнительный код в функции с размером локальных переменных больше страницы (0x1000 байт = 4К) - вызовы специальной библиотечной функции _chkstk, которая в kos_func.c почему-то реализована как пустая, но должна выделять соответствующее пространство в стеке, уменьшая esp. Соответственно после вызова этой функции стек летит со всеми вытекающими последствиями. Ясно, что очень немногие функции нуждаются в более 4К локальных переменных, но одна такая здесь есть, и она вызывается при create table.
Ключ /Gs изменяет предел с 0x1000 байт на заведомо большое значение, подавляя вставку вызовов _chkstk.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Wed Oct 29, 2008 7:48 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 426
Интересно как.
В FP RTL есть подобная функция, но я не понял её смысла, пошел проверять правильно ли я её реализовал. Проблем пока не было.
Спасибо за информацию.

..bw


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Thu Oct 30, 2008 12:25 am 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Gluk wrote:
а "мусорные" файлы можно ли в папку вроде "/sqllite" кидать?

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

Эта версия уже умеет создавать таблицы (например: create table table_name (id integer, value text)). Можно удалять таблицы и вставлять и извлекать значения. К сожалению, еще полно багов:
1) добавление нового ряда замещает предыдущий,
2) но если есть первичный ключ, можно добавить только 1 ряд,
3) иногда ранее созданные таблицы куда-то исчезают,
4) иногда сбивается парсер выражений и начинает выдавать syntax error на все подряд.
Эти баги известны, я их исправляю. Найдете еще - пишите :)


Attachments:
sqlite_kos-0.1a.7z [96.99 KiB]
Downloaded 198 times
Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Thu Oct 30, 2008 12:58 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
а эти файлы много места занимают? а то рамдиск во многих дистрибутивах забит полностью де-факто..//у меня пока нет возможности самому посмотреть

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Thu Oct 30, 2008 1:01 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
да и не только мусор, сама база данных ведь может быть довольно большой..

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Thu Oct 30, 2008 5:20 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 7:57 pm
Posts: 835
ну так можно всё это размещать на разделе FAT винта...

_________________
Всех выше те, кто доброе творят,
И за дела добра не ждут наград,
Всем жертвуют для страждущих людей,
Не думая о выгоде своей.


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Fri Oct 31, 2008 1:02 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
как я понял, в этом порте - нельзя.. хотябы уж диск задавать бы, а не полный путь.. // думаю, это выходит за пределы портирования программы // или хотябы путь "/sqlite"относительно исполнимого файла программы..

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Fri Oct 31, 2008 6:50 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Gluk wrote:
путь "/sqlite"относительно исполнимого файла программы

Хорошая мысль. Сделаю так. В будущем, разумеется, место размещения файлов БД будет настраиваться.


Top
   
 Post subject: Re: порт SQLite 1.0
PostPosted: Fri Oct 31, 2008 9:05 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Найденные баги, по-видимому, исправлены. В архиве кроме самой проги еще файл test - это файл БД, который нужно поместить на рамдиск в папку sqlite, после чего можно будет юзать пример таблицы (называется user2).
С путем пока не разобрался (в VC для этого, как и для параметров, нужен бубен и немного времени).


Attachments:
sqlite_kos-0.1b.7z [91.62 KiB]
Downloaded 189 times
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 56 posts ]  Go to page 1 2 3 4 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited