порт SQLite 1.0

Discussing libraries simplifying applications development
  • barsuk
    Делаешь великое дело... это очередной краеугольный камень в постройке системы...:) буду тестировать, и посажу свой проект на SQL... ;)
    *****:
    ;дух машины, мой бубен сильнее твоей тупости

    *****:
  • Спасибо :)
    Надеюсь, скоро будет что тестировать - пока глюк с созданием таблиц не ловится...
  • Компилятор Visual C++? Попробуй добавить ему опцию командной строки /Gs0x100000 (при компиляции через build.bat эту опцию нужно добавить в параметр CPP_PROJ из hello.mak).
    Ушёл к умным, знающим и культурным людям.
  • diamond, огромное спасибо! Я сам не скоро догадался бы до этого. :) Теперь create table не падает (хотя я не могу понять, как это могло быть связано с опцией /Gs).
  • а "мусорные" файлы можно ли в папку вроде "/sqllite" кидать?
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • barsuk wrote:(хотя я не могу понять, как это могло быть связано с опцией /Gs)
    Если вкратце - управление стеком в Windows и Kolibri различается: в Kolibri стек представляет собой обычную область памяти, а в Windows иногда нужны дополнительные махинации. VC, будучи компилятором под Windows, вставляет дополнительный код в функции с размером локальных переменных больше страницы (0x1000 байт = 4К) - вызовы специальной библиотечной функции _chkstk, которая в kos_func.c почему-то реализована как пустая, но должна выделять соответствующее пространство в стеке, уменьшая esp. Соответственно после вызова этой функции стек летит со всеми вытекающими последствиями. Ясно, что очень немногие функции нуждаются в более 4К локальных переменных, но одна такая здесь есть, и она вызывается при create table.
    Ключ /Gs изменяет предел с 0x1000 байт на заведомо большое значение, подавляя вставку вызовов _chkstk.
    Ушёл к умным, знающим и культурным людям.
  • Интересно как.
    В FP RTL есть подобная функция, но я не понял её смысла, пошел проверять правильно ли я её реализовал. Проблем пока не было.
    Спасибо за информацию.

    ..bw
  • 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 387 times
  • а эти файлы много места занимают? а то рамдиск во многих дистрибутивах забит полностью де-факто..//у меня пока нет возможности самому посмотреть
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • да и не только мусор, сама база данных ведь может быть довольно большой..
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • ну так можно всё это размещать на разделе FAT винта...
  • как я понял, в этом порте - нельзя.. хотябы уж диск задавать бы, а не полный путь.. // думаю, это выходит за пределы портирования программы // или хотябы путь "/sqlite"относительно исполнимого файла программы..
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Gluk wrote:путь "/sqlite"относительно исполнимого файла программы
    Хорошая мысль. Сделаю так. В будущем, разумеется, место размещения файлов БД будет настраиваться.
  • Найденные баги, по-видимому, исправлены. В архиве кроме самой проги еще файл test - это файл БД, который нужно поместить на рамдиск в папку sqlite, после чего можно будет юзать пример таблицы (называется user2).
    С путем пока не разобрался (в VC для этого, как и для параметров, нужен бубен и немного времени).
    Attachments
    sqlite_kos-0.1b.7z (91.62 KiB)
    Downloaded 386 times
  • Who is online

    Users browsing this forum: No registered users and 5 guests