Не очень успешная пока что попытка портировать 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
Внимание - прога создает мусорные файлы (временные файлы БД и логи) на рамдиске.
порт SQLite 1.0
-
- Attachments
-
-
sqlite_kos-0.0.7z (85.19 KiB)
- собственно программа
Downloaded 421 times
-
sqlite_kos-src-0.0.7z (246.02 KiB)
- исходники
Downloaded 431 times
-
barsuk
Делаешь великое дело... это очередной краеугольный камень в постройке системы... буду тестировать, и посажу свой проект на SQL...
Делаешь великое дело... это очередной краеугольный камень в постройке системы... буду тестировать, и посажу свой проект на SQL...
*****:
;дух машины, мой бубен сильнее твоей тупости
*****:
;дух машины, мой бубен сильнее твоей тупости
*****:
Спасибо
Надеюсь, скоро будет что тестировать - пока глюк с созданием таблиц не ловится...
Надеюсь, скоро будет что тестировать - пока глюк с созданием таблиц не ловится...
Компилятор Visual C++? Попробуй добавить ему опцию командной строки /Gs0x100000 (при компиляции через build.bat эту опцию нужно добавить в параметр CPP_PROJ из hello.mak).
Ушёл к умным, знающим и культурным людям.
diamond, огромное спасибо! Я сам не скоро догадался бы до этого. Теперь create table не падает (хотя я не могу понять, как это могло быть связано с опцией /Gs).
а "мусорные" файлы можно ли в папку вроде "/sqllite" кидать?
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Если вкратце - управление стеком в Windows и Kolibri различается: в Kolibri стек представляет собой обычную область памяти, а в Windows иногда нужны дополнительные махинации. VC, будучи компилятором под Windows, вставляет дополнительный код в функции с размером локальных переменных больше страницы (0x1000 байт = 4К) - вызовы специальной библиотечной функции _chkstk, которая в kos_func.c почему-то реализована как пустая, но должна выделять соответствующее пространство в стеке, уменьшая esp. Соответственно после вызова этой функции стек летит со всеми вытекающими последствиями. Ясно, что очень немногие функции нуждаются в более 4К локальных переменных, но одна такая здесь есть, и она вызывается при create table.barsuk wrote:(хотя я не могу понять, как это могло быть связано с опцией /Gs)
Ключ /Gs изменяет предел с 0x1000 байт на заведомо большое значение, подавляя вставку вызовов _chkstk.
Ушёл к умным, знающим и культурным людям.
Интересно как.
В FP RTL есть подобная функция, но я не понял её смысла, пошел проверять правильно ли я её реализовал. Проблем пока не было.
Спасибо за информацию.
..bw
В FP RTL есть подобная функция, но я не понял её смысла, пошел проверять правильно ли я её реализовал. Проблем пока не было.
Спасибо за информацию.
..bw
Принято. Хотя новая версия умеет удалять ненужные файлы, все файлы, которые создает программа, теперь находятся в папке sqlite на рамдиске. Если папки нет, ее нужно создать.Gluk wrote:а "мусорные" файлы можно ли в папку вроде "/sqllite" кидать?
Эта версия уже умеет создавать таблицы (например: 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 392 times
-
а эти файлы много места занимают? а то рамдиск во многих дистрибутивах забит полностью де-факто..//у меня пока нет возможности самому посмотреть
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
да и не только мусор, сама база данных ведь может быть довольно большой..
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
ну так можно всё это размещать на разделе FAT винта...
как я понял, в этом порте - нельзя.. хотябы уж диск задавать бы, а не полный путь.. // думаю, это выходит за пределы портирования программы // или хотябы путь "/sqlite"относительно исполнимого файла программы..
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Хорошая мысль. Сделаю так. В будущем, разумеется, место размещения файлов БД будет настраиваться.Gluk wrote:путь "/sqlite"относительно исполнимого файла программы
Найденные баги, по-видимому, исправлены. В архиве кроме самой проги еще файл test - это файл БД, который нужно поместить на рамдиск в папку sqlite, после чего можно будет юзать пример таблицы (называется user2).
С путем пока не разобрался (в VC для этого, как и для параметров, нужен бубен и немного времени).
С путем пока не разобрался (в VC для этого, как и для параметров, нужен бубен и немного времени).
- Attachments
-
-
sqlite_kos-0.1b.7z (91.62 KiB)Downloaded 391 times
-
Who is online
Users browsing this forum: No registered users and 4 guests