URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 111926
[ Назад ]

Исходное сообщение
"Релиз СУБД SQLite 3.20.0"

Отправлено opennews , 07-Авг-17 12:22 
Представлен (http://www.mail-archive.com/sqlite-announce@sqlite.org/...) релиз SQLite 3.20.0 (http://sqlite.org/), легковесной СУБД, оформленной в виде подключаемой библиотеки. Код SQLite распространяется как общественное достояние (public domain), т.е. может использоваться без ограничений и безвозмездно в любых целях. Финансовую поддержку разработчиков SQLite осуществляет специально созданный консорциум, в который входят такие компании, как Adobe, Oracle, Mozilla, Bentley и Bloomberg.


Основные изменения (https://sqlite.org/releaselog/3_20_0.html):

-  Изменён текст некоторых сообщений об ошибках;
-  Изменено форматирование вывода имён столбцов при использовании функций sqlite3_column_name() и sqlite3_column_name16(), которое приведено в соответствие с оформлением вывода в PostgreSQL, MySQL и SQLServer (например, при применении подзапросов имена  раньше в зависимости от запроса выводились иногда как table.column, а иногда как column, теперь всегда выводится только column);
-  Среди нарушающих совместимость изменений также осуществлён переход внутренних API для подключения расширений на новый интерфейс передачи указателей (https://sqlite.org/bindptr.html);
-  Добавлено расширение COMPLETION (https://sqlite.org/completion.html) с реализацией системы автодополнения ввода, срабатывающей по нажатию клавиши Tab;
-  Добавлено расширение UNION (https://sqlite.org/unionvtab.html), предоставляющее поддержку сводных виртуальных таблиц, в которых несколько разных таблиц можно представить в виде одной большой объединённой таблицы;
-  Добавлено расширение SQLITE_STMT (https://sqlite.org/stmt.html) с реализацией эпонимических (eponymous, таблицы имя которых совпадает с модулем") виртуальных таблиц с информацией о подготовленных выражениях (prepared statement), ассоциированных с соединением к БД;

-  Встроенные функции date и time теперь можно использоваться в составе условий CHECK, в выражениях при определении индексов и в составе выражений WHERE в частичных индексах;

-  Добавлена PRAGMA-команда secure_delete=FAST, при указании которой включается режим быстрого безопасного удаления данных - в   b-tree деревьях содержимое удаляемых элементов обнуляется, но может какое-то время оставаться в списках free-page;


-  В интерфейс командной стоки (https://sqlite.org/cli.html) добавлена поддержка автодополнения ввода по нажатию клавиши Tab (можно использовать как readline, ак и linenoise), добавлена команда ".cd", в командах ".schema" и ".tables" обеспечена возможность отображения схем из всех прикреплённых БД, реализована опция  "--newlines" для вывода командой ".dump" содержимого без экранирования символов перевода строки и возврата каретки;

-  Улучшена работа планировщика запросов:


-  При генерации индивидуальных циклов для OR-выражений, не  меняющиеся WHERE-блоки теперь вычисляются один раз вне цикла;
-  Обеспечена проверка прикреплённых параметров для определения возможности задействования частичных индексов;
-  При определении двух возможных планов выполнения запроса, для которых вычислен одинаковый вес, теперь выбирается тот, в котором не используется сортировка;
-  При разборе выражений WHERE обработка подзапросов теперь выполняется в самом конце, в надежде, что сработает более простое условие и выполнение подзапроса не потребуется;

-  Прекращено применение flattening-оптимизации для подзапросов, в случае использовании LEFT JOIN и чтении данных из виртуальной таблицы, с целью исключить создание автоматических индексов для результата, которые могут замедлить выполнение запроса;


-  В утилите sqlite3_analyzer (https://sqlite.org/sqlanalyze.html) обеспечено отображение размера метаданных в страницах btree;

-  Внесена порция оптимизаций, который позволили примерно на 2% снизить (https://sqlite.org/cpu.html) нагрузку на CPU.

URL: http://www.mail-archive.com/sqlite-announce@sqlite.org/...
Новость: https://www.opennet.ru/opennews/art.shtml?num=46980


Содержание

Сообщения в этом обсуждении
"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 12:22 
Лучше бы переписали на c++ и использовали встроенные в плюсы регулярки.

"Релиз СУБД SQLite 3.20.0"
Отправлено КоКоКо , 07-Авг-17 12:27 
Ага. Из-за сомнительной радости юзать "встроенные" регулярки, переписывать прожект на плюсы - отличный план!

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 12:32 
> Ага. Из-за сомнительной радости юзать "встроенные" регулярки, переписывать прожект на
> плюсы - отличный план!

А что там переписывать, c++ с сями почти совместим. Немного модернизировать - и будет работать.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 12:35 
> Немного модернизировать -  и будет работать.

P.S. Сам так много раз делал.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 12:59 
>> Немного модернизировать -  и будет работать.
> P.S. Сам так много раз делал.

Им не надо "немного модернизировать — и будет работать", им это ещё поддерживать. Если ты много раз делал из проекта помойку, это не значит, что такое всех устроит.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 13:15 
больших помоек, чем проекты на сях, не найти.

"Релиз СУБД SQLite 3.20.0"
Отправлено Andrey Mitrofanov , 07-Авг-17 13:25 
> больших помоек, чем проекты на сях, не найти.

npm, /windwos/system32/, cms-ы на php,  ...  Ну, дальше сам.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 14:45 
>npm
>C

вы серьёзно? 100% JavaScript


"Релиз СУБД SQLite 3.20.0"
Отправлено Andrey Mitrofanov , 07-Авг-17 16:13 
#>>>ольших помоек, чем проекты на сях, не найти.
>>npm

Это был пример бОльшей помойки, чем...

> вы серьёзно? 100% JavaScript

...чэм грузины, Вали-ико-о-о !


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 14:41 
> больших помоек, чем проекты на сях, не найти.

Сказал человек, который пользуется ОС, в которой не используется код на Си, в том числе в ядре. Или нет?


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:10 
>> больших помоек, чем проекты на сях, не найти.
> Сказал человек, который пользуется ОС, в которой не используется код на Си,
> в том числе в ядре. Или нет?

Используется, и это прискорбно.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 22:48 
> Используется, и это прискорбно.

Так в чём проблема-то? Пересядь на написанную такими же продвинутыми, которые пишут операционки на Яве/Яваскрипте/Расте/Хаскеле, а через полгода отпишись тут, как оно, ощущаются ли преимущества языка, всем ли знакомым уже поставил, сколько серверов перевёл.

А то кричать "ОС на Расте была бы лучше, чем ОС на Сях" вы можете, а доказать свои слова - нет.


"Релиз СУБД SQLite 3.20.0"
Отправлено _ , 08-Авг-17 17:32 
Немедленно сделай вдоль! :)

"Релиз СУБД SQLite 3.20.0"
Отправлено Crazy Alex , 07-Авг-17 14:05 
Это не "переписать на плюсах", это "добавить проблемы плюсов к пробемам си". Нормальный, рекомендуемый плюсовый стиль с C не имеет практически ничего общего.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:12 
> Нормальный, рекомендуемый плюсовый стиль с C не имеет практически ничего общего.

кем рекомендуемый? Лично Бъёрном? Прям в спецификации так прописано : "это единственно верный и рекомендуемый стиль для программ на с++, остальные мы не рекомендуем использовать"? Если нет, то нафига эта демагогия?



"Релиз СУБД SQLite 3.20.0"
Отправлено Crazy Alex , 07-Авг-17 15:34 
Да, лично, с Саттером вместе. Вот тут: https://github.com/isocpp/CppCoreGuidelines/

"Релиз СУБД SQLite 3.20.0"
Отправлено Андрей , 08-Авг-17 08:56 
Вы, наверное, рекомендованного стиля для JS/Java не видели... Реально мозг выносит, против тех же Сей (не ++) и прочих «привычных» языков.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 09-Авг-17 20:49 
А ссылку?

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 09-Авг-17 20:52 
> Вы, наверное, рекомендованного стиля для JS/Java не видели... Реально мозг выносит, против
> тех же Сей (не ++) и прочих «привычных» языков.

А ссылку? В свою очередь, вот современные практики С: https://news.ycombinator.com/item?id=9018247


"Релиз СУБД SQLite 3.20.0"
Отправлено kamiram , 07-Авг-17 16:58 
вобще говоря не совсем так.
местами совсем не так.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 12:31 
что минусуете? pcre лишняя зависимость, поэтому в sqlite нет регулярок, приходится через питон определять функцию. А в стандартной библиотеке c++ регулярки есть. И вообще C без плюсов устарел, а код на нём в большинстве случаев жуткая фекалия из-за чрезмерного и неоправданного использования фанатиками препроцессора.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 12:55 
> pcre лишняя зависимость

А libstdc++ не лишняя, выходит? В чём разница?


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 13:11 
"if the choice of C were to do *nothing* but keep the C++ programmers out, that in itself would be a huge reason to use C" -- Linus Torvalds

"Релиз СУБД SQLite 3.20.0"
Отправлено _KUL , 07-Авг-17 13:57 
Переведите пожалуйста подковырку, чтобы русский человек понял смысл подначки.

"Релиз СУБД SQLite 3.20.0"
Отправлено тоже Аноним , 07-Авг-17 14:03 
"Си хороши уж тем, что я в Крестах не очень" - примерно так.

Насчет "переписать все на Крестах, чтобы регулярки были" - это просто-таки вершина мысли, почти эталонная. Конечно, если авторам SQLite вдруг захочется добавить встроенные регулярки, они никак не смогут это сделать без переписывания на Кресты, ага.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:42 
Вы и в английском не очень.

"Релиз СУБД SQLite 3.20.0"
Отправлено тоже Аноним , 08-Авг-17 08:01 
Как говорил один Чеширский Кот: "I'm not here, sir, to remedy your ignorance".

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним84701 , 07-Авг-17 14:28 
> Переведите пожалуйста подковырку, чтобы русский человек понял смысл подначки.

Если [использование] си даст нам только возможность держать плюсанутых на расстоянии [от проекта], то это  само по себе уже будет мощным аргументом в пользу [использования] си.


"Релиз СУБД SQLite 3.20.0"
Отправлено тоже Аноним , 07-Авг-17 14:42 
Перевод без контекста все равно бессмысленен.
Получается тупое хейтерство, а его тут, на самом деле, нет.

Кресты, в основном, используются вместо С ради ООП. То есть - реализуем все сложности, заворачиваем их в классы поплотнее, высовываем наружу интерфейсы. Тому, кто придет следом, не нужно зарываться в сложности реализации, он работает с интерфейсами классов. Это прекрасно подходит для масштабных проектов высокого уровня - и ни к черту не годится для ядра. Потому что системные разработчики, искренне полагающие, что там, за интерфейсом, происходит какая-то магия, которую необязательно понимать - страшнее обезьян с гранатой. Порог вхождения в ядро должен обеспечивать, что дошедший досконально понимает, что именно он делает и почему. Вот именно это С, в отличие от Крестов, и обеспечивает ipso facto. А все прочие аспекты, по большому счету, вторичны.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 14:57 
Лично я больше всего хейтю си из-за того, что там нет шаблонных функций, constexpr, enum classов, вывода типов. А также из-за фанатизма фанатиков использовать препроцессор, который приводит к крайне трудноотлавливаемым ошибкам и неудобствам в отладке, потому что внезапно код в редакторе оказывается не кодом, который компилируется. Ведь если подумать, никто в плюсах не мешает писать код в сишном функциональном стиле. Но фанатиков не переубедить.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:56 
А в самом деле, почему не использовать вместо макросов inline-функции. Даже C их поддерживает.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:31 
> из-за фанатизма фанатиков использовать препроцессор

Никакого фанатизма тут нет. Использование препроцессора было необходимо из-за отсутствия inline-функций, и сейчас ещё бывает необходимо из-за отсутствия шаблонов. Но все давно поняли, что это — зло, и пытаются его избегать.
Да, шаблоны — тоже зло, если их использовать к месту и не к месту, да ещё с большим уровнем вложенности.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:59 
>стараются избегать
>#define SQLITE_N_BTREE_META 10
>#define FTS2_HASH_BINARY 2
>#define sqliteHashFirst(H) ((H)->first)

"Релиз СУБД SQLite 3.20.0"
Отправлено EHLO , 07-Авг-17 19:41 
> Ведь если подумать,

то иногда лучше жевать чем думать
> никто в плюсах не мешает писать
> код в сишном функциональном стиле. Но фанатиков не переубедить.

сишном функциональном


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 22:50 
> сишном функциональном

функциональный - это в лисп. сишный стиль - процедурный.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 08-Авг-17 12:38 
> Лично я больше всего хейтю си из-за того, что там нет шаблонных функций,
> constexpr,

если для функций, то насколько я понимаю

static inline int shit(int x) __attribute__ ((pure))
{
      return x + x;
}

будет иметь тот же эффект (и без кучи идиотских ограничений constexpr'a)

> enum classов

Это вот так FOO::BAR ? И чем оно лучше FOO_BAR ?

> Ведь если подумать, никто в плюсах не мешает писать код в сишном функциональном стиле. Но фанатиков не переубедить.

Ну да, и заниматься например вот такой идиотией:

p = (struct cpp_designers_are_fucking_idiots *)malloc(XXX);


"Релиз СУБД SQLite 3.20.0"
Отправлено 0xd34df00d , 11-Авг-17 02:57 
> будет иметь тот же эффект (и без кучи идиотских ограничений constexpr'a)

Во-первых, какие у constexpr есть идиотские ограничения в C++14, которых нет у pure-функции?
Во-вторых, использование __attribute__ ((pure)) резко делает ваш код не сишным. Это не С, а C as understood by gcc. [[pure]] обещали, кстати, в С++17, но не завезли, к сожалению.

> Это вот так FOO::BAR ? И чем оно лучше FOO_BAR ?

Тем, что не приведётся автоматически к инту.

> p = (struct cpp_designers_are_fucking_idiots *)malloc(XXX);

Кто мешает конкретно тут написать new?


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним84701 , 07-Авг-17 14:59 
> Перевод без контекста все равно бессмысленен.

Это да.
> Получается тупое хейтерство, а его тут, на самом деле, нет.

Гм-хм ...
https://lwn.net/Articles/249460/
> Linus Torvalds <torvalds-AT-linux-foundation.org>
> C++ is a horrible language. It's made more horrible by the fact that a lot  of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do *nothing* but keep the C++ programmers out, that in itself would be a huge reason to use C.
> I've come  to the conclusion that any programmer that would prefer the project to be in C++ over C is likely a programmer that I really *would* prefer to piss off, so that he doesn't come and screw up any project I'm involved with.
> C++ leads to really really bad design choices.


"Релиз СУБД SQLite 3.20.0"
Отправлено тоже Аноним , 07-Авг-17 15:11 
Еще раз: Линус рассуждает о том, в чем варится сам. О системном программировании.
И, что характерно, он таки прав - в этой нише высокоуровневым и мультипарадигменным делать нечего, и те программисты, кто готов гнаться за их плюшками, мостят своими розовыми мечтами дорогу в ад.

Цитирование этих суждений вне контекста разработки ядра и системных утилит - глупость или демагогия.
"Было бы величайшей ошибкой думать" (точная цитата из собрания сочинений Ленина).


"Релиз СУБД SQLite 3.20.0"
Отправлено angra , 08-Авг-17 01:27 
Борясь с вырыванием цитаты из контекста, вы стали на сторону куда большего зла -  приписывание другим своих мыслей. При этом вам привели полную цитату, без вырывания из контекста. Из Ленина вы взяли неполную. Зато приписали Линусу то, что он не говорил. На досуге узнайте, на чем написал Линус совсем не системный git.

"Релиз СУБД SQLite 3.20.0"
Отправлено тоже Аноним , 08-Авг-17 08:04 
На том, на чем умеет лучше всего, очевидно.
Да, возможно, я думаю о людях слишком хорошо.
Но согласитесь, то, что я действительно хочу их понять, а не просто развесить ярлыки, уже дорогого стоит ;)

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 08-Авг-17 09:56 
> бессмысленен

Спасибо хоть не бессмыслененен.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:04 
>Порог вхождения в ядро должен обеспечивать, что дошедший досконально понимает, что именно он делает и почему.

Не преувеличивайте насчёт необходимости глубокого понимания, что там внутри ядра происходит. Аккуратно заполняете ядерные структуры указателями на свои функции и ... драйвер символьного усторойства (реального аппаратного) работает и прерывания обрабатываются. Проверено.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:33 
Рада синдрома утенка он используется.


#ifndef FOO_H_
#define FOO_H_

struct foo;

struct foo *foo_create(int arg);
int foo_bar(struct foo *foo);
int foo_quux(struct foor *foo);
void *foo_destroy(struct foo *foo);

#endif

А теперь покажи как зарыться в сложности реализации.


"Релиз СУБД SQLite 3.20.0"
Отправлено YetAnotherOnanym , 07-Авг-17 18:20 
> не нужно зарываться в сложности реализации

Это если доверять на 100% неведомо кому на другой стороне глобуса, который "реализовал все сложности, завернул их в классы поплотнее, высунул наружу интерфейсы". После одного-единственного натыкания на подводный камень это доверие улетучивается как сухой лёд на солнце.


"Релиз СУБД SQLite 3.20.0"
Отправлено тоже Аноним , 07-Авг-17 18:45 
Боги! Так никто же ничего не прячет. Хочешь покопаться - исходники-то доступны.
Но если вы разбираетесь с конкретной подсистемой в проекте масштаба OpenOffice, вы предпочтете, чтобы логика, не имеющая прямого отношения к этой конкретной подсистеме, максимально была из нее вынесена наружу и не путалась под ногами здесь и сейчас. Но при этом максимально же была собрана воедино, когда действительно понадобится. Да вдобавок - была понятна без изучения всего кода, который ей пользуется.

Впрочем, предвижу холивар с рассказами, как все это (зачем-то) делается на Сях (почти не стоя в гамаке). Ага, делается, еще как. Давайте будем сразу считать, что я посрамлен, унижен, поставлен на место и больше не вызываю никакого интереса. Не будем увеличивать энтропию.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 22:58 
> предвижу холивар с рассказами, как все это (зачем-то) делается на Сях (почти не стоя в гамаке)

Можно пару примеров стояния в гамаке? Чего именно в Си не хватает? Про шаблоны и исключения все всё уже поняли, пожалуйста, что-нибудь другое.

Вот есть, например, аналог класса на Си https://www.opennet.ru/openforum/vsluhforumID3/111926.html#58 . Это гамак или хороший пример?


"Релиз СУБД SQLite 3.20.0"
Отправлено hoopoe , 08-Авг-17 09:12 
ну как минимум с виртуальными функами это будет печаль, с наследованием - тоже непросто (деструктор статический). если и делать кресто-подобный стиль, то забивай структуру указателями на функи, например как там: https://github.com/ofiwg/libfabric

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 08-Авг-17 12:39 
Наследование нужно чуть чаще чем никогда.

"Релиз СУБД SQLite 3.20.0"
Отправлено 0xd34df00d , 11-Авг-17 03:00 
> Чего именно в Си не хватает?
> Про шаблоны и исключения все всё уже поняли, пожалуйста, что-нибудь другое.

constexpr, move semantics, лямбды. Типобезопасность, в конце концов, когда можете в qsort передать свой компаратор, и компилятору будет чуть легче найти потенциальные проблемы, чем с void*, а заодно заинлайнить и заоптимизировать.


"Релиз СУБД SQLite 3.20.0"
Отправлено ivanpetrov , 07-Авг-17 14:42 
"Даже если бы C давал лишь отсутствие C++ разработчиков в проекте, одно лишь это было бы уже мощным аргументом в его пользу".

Сложный/примитивный прекол (или я недалёкий надмозг).


"Релиз СУБД SQLite 3.20.0"
Отправлено Andrey Mitrofanov , 07-Авг-17 16:57 
> Переведите пожалуйста подковырку, чтобы русский человек понял смысл подначки.

Линус ругает не таких, как он.  Ничего особенного.  Вот, и г-н Crazy Alex подтвердит.

Гуле-транслейт:
Если выбор C должен был делать * ничего *, но сохранить программистов на C ++, это само по себе было бы огромной причиной для использования C

оборот 'do nothing but keep out' оно не смогло, и 'keep' совсем мимо, там примерно так: "Одно только то, чтоб не допускать цпп-програмеров, было бы..."


"Релиз СУБД SQLite 3.20.0"
Отправлено Crazy Alex , 07-Авг-17 18:16 
Я-то подтверждаю, но при всём моём уважении к Линусу я его в непогрешимые боги не записывал и не собираюсь. И с его отношением к плюсам, как и к свободному софту ни хрена не согласен.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 08-Авг-17 11:57 
Продолжайте держать нас в курсе.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 14:09 
Л. Торвальдс гуру и авторитет в области ядра конкретно Linux. Вот в отношении ядра и будем считать его высказывания авторитетными.

"Релиз СУБД SQLite 3.20.0"
Отправлено EHLO , 07-Авг-17 23:36 
>Л. Торвальдс гуру и авторитет в области ядра конкретно Linux

и в области VCS и конкретно Git. И в области управления крупными и очень крупными проектами.
Во всем остальном можешь считать себя более авторитетным... Хотя нет, еще нюанс, Линус школу давно закончил.


"Релиз СУБД SQLite 3.20.0"
Отправлено an , 08-Авг-17 16:54 
Только вот VCS цельнотянутая с Monotone и BitKeeper. Качество кода ядра вызывает много вопросов, помню свежеиспеченную libata, это тихий ужас. Проектом он управляет далеко и не только один. Но человек заслуженный, это бесспорнно.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 09-Авг-17 21:06 
> Только вот VCS цельнотянутая с Monotone и BitKeeper. Качество кода ядра вызывает
> много вопросов, помню свежеиспеченную libata, это тихий ужас. Проектом он управляет
> далеко и не только один. Но человек заслуженный, это бесспорнно.

— вы прослушали пересказ Шукшина "Срезал" в исполнении жертвы ЕГЭ


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 13:20 
>> pcre лишняя зависимость
> А libstdc++ не лишняя, выходит? В чём разница?

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


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:34 
> Тому, что в sqlite нет
> встроенных регулярок - нет оправдания. Из-за этого мне приходится заморачиваться с
> питоном там, где можно было бы использовать консольный клиент.

Так не заморачивайся с питоном, возьми ту библиотеку регулярок, которая тебе нравится.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 22:52 
ага, предлагаешь заморочиться ещё больше и переписать консольный клиент. А потом заморочиться ещё больше, и переписать dbeaver.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 08-Авг-17 09:59 
> ага, предлагаешь заморочиться ещё больше и переписать консольный клиент.

Ну возьми grep.



"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 13:01 
libstdc++ лишняя зависимость, поэтому в sqlite нет регулярок, можно через питон определять функцию. А в стандартной библиотеке C регулярок нет. И вообще C с плюсами устарел, а код на нём в большинстве случаев жуткая фекалия из-за чрезмерного и неоправданного использования фанатиками шаблонов и наследования.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 14:16 
Но есть Rust, он значительно новее их обоих ;)

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:05 
Встраиваемую РСУБД на раст переписать забыли.

"Релиз СУБД SQLite 3.20.0"
Отправлено Crazy Alex , 07-Авг-17 15:06 
Вот поэтому на нём и не надо писать ничего настолько базового, как SQLite. Ещё лет пять, как минимум. Потому что ни хороших практик, ни списков известных граблей ещё толком нет, и формируются они далеко не быстро.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:36 
> Но есть Rust, он значительно новее их обоих ;)

В части шаблонов и наследования, как и многого другого, он от крестов ничем не отличается.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:08 
> libstdc++ лишняя зависимость, поэтому в sqlite нет регулярок, можно через питон определять
> функцию. А в стандартной библиотеке C регулярок нет. И вообще C
> с плюсами устарел, а код на нём в большинстве случаев жуткая
> фекалия из-за чрезмерного и неоправданного использования фанатиками шаблонов и наследования.

ну так не надо быть фанатиками. Где ты у меня увидел требование стать фанатиком? В си объетивно не хватает функций, но есть фанатики, которые упорно продолжают юзать костыли (препроцессор) там, где в плюсах есть встроенные типо- и кодобезопасные конструкции жля этого.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:37 
> есть фанатики,
> которые упорно продолжают юзать костыли (препроцессор) там, где в плюсах есть
> встроенные типо- и кодобезопасные конструкции жля этого.

Можно конкретный пример?


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 22:52 
>> есть фанатики,
>> которые упорно продолжают юзать костыли (препроцессор) там, где в плюсах есть
>> встроенные типо- и кодобезопасные конструкции жля этого.
> Можно конкретный пример?

я уже наприводил конкретных примеров в обсуждении.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:39 
> В си объетивно не хватает функций,

Напримep ?


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 22:54 
>> В си объетивно не хватает функций,
> Напримep ?

все возможности c++, которые можно использовать при программировании в стиле си.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 23:11 
Конкретнее пожалуйста.

"Релиз СУБД SQLite 3.20.0"
Отправлено Sabakwaka , 08-Авг-17 00:35 
>> а код на нём в большинстве случаев жуткая фекалия...

Покажи свой код.
Ссылку на git в студию.


"Релиз СУБД SQLite 3.20.0"
Отправлено anonymous , 07-Авг-17 12:40 
Теперь погугли про перфоманс регулярок в типичных реализациях stdlib

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 12:45 
кому надо больше производительности - тот ещё раз переопределит функцию. Всё равно тормознутей, чем вызов питоней функцию через cffi уже не будет.

"Релиз СУБД SQLite 3.20.0"
Отправлено th3m3 , 07-Авг-17 14:16 
Тогда уж на Rust.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:02 
> Тогда уж на Rust.

раст совместим с си? Не, я конечно за перевод на раст, но это никто делать не будет, ибо тяжело и никому не нужно.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:06 
>> Тогда уж на Rust.
> раст совместим с си? Не, я конечно за перевод на раст, но
> это никто делать не будет, ибо тяжело и никому не нужно.

Да, совместим.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:15 
>>> Тогда уж на Rust.
>> раст совместим с си? Не, я конечно за перевод на раст, но
>> это никто делать не будет, ибо тяжело и никому не нужно.
> Да, совместим.

То есть ты берёшь код на си, меняешь пару незначительных деталей и получаешь код на раст?


"Релиз СУБД SQLite 3.20.0"
Отправлено Алконим , 07-Авг-17 18:11 
Нет. Получаеш код на Си. Код на Раст получится когда 100% кода будет переведено на Раст, а не несколько процентов, и будет проведён рефакторинг и чистка от unsafe кода. А до этого момента, особой разницы не будет, только синтакс другой.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 18:34 
значит не совместим (речь не о бинарной совместимости, а о совместимости исходников)

"Релиз СУБД SQLite 3.20.0"
Отправлено Ordu , 07-Авг-17 21:50 
> То есть ты берёшь код на си, меняешь пару незначительных деталей и получаешь код на раст?

Не. Ты берёшь corrode и он делает из C'шного проекта rust'овый.


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 22:56 
>> То есть ты берёшь код на си, меняешь пару незначительных деталей и получаешь код на раст?
> Не. Ты берёшь corrode и он делает из C'шного проекта rust'овый.

ага, волшебным образом сам реинжинирит код, чтобы можно было юзать почти без доработки. И borrow checker сам удовлетворяет. Расскажи эти сказки кому другому.


"Релиз СУБД SQLite 3.20.0"
Отправлено Ivan_83 , 07-Авг-17 14:55 
Нафик-нафик.
Все зачотные вещи написаны на си.
На крестах кодят всякий шлак клиентский и игры.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:45 
<dba-mode-on>За использование регулярок с SQL вообще убивать надо.</dba-mode-off>

"Релиз СУБД SQLite 3.20.0"
Отправлено rtq , 07-Авг-17 21:05 
Уважаемый Максим, а можно опцию "не показывать комментарии начинающиеся на "Лучше бы""? Я заметил что их авторы как правило не компетентны и не уважают проделанный труд других людей.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 08-Авг-17 00:29 
> Уважаемый Максим, а можно опцию "не показывать комментарии начинающиеся на "Лучше бы""?

Тут без СУБД со встроенной поддержкой регулярок не обойтись...


"Релиз СУБД SQLite 3.20.0"
Отправлено Онаним , 07-Авг-17 22:16 
Лучше бы переписали на разные языки чтобы в том же C#, например, просто работало, без матов, бубнов, получасовых гуглений и антинаучного тыка, независимо от битности ОС.

"Релиз СУБД SQLite 3.20.0"
Отправлено Led , 07-Авг-17 23:03 
> Лучше бы переписали на разные языки чтобы в том же C#, например, просто работало, без матов, бубнов, получасовых гуглений и антинаучного тыка, независимо от битности ОС.

Нет, не лучшее. Потому что вендузятник должен срадать.


"Релиз СУБД SQLite 3.20.0"
Отправлено KonstantinB , 08-Авг-17 14:27 
А зачем вам в вашей прекрасной винде всякие левые поделия? Пользуйтесь официальным решением проверенного вендора - MS Access!

"Релиз СУБД SQLite 3.20.0"
Отправлено Онаним , 08-Авг-17 21:46 
Зачем - чтобы работало и под Linux и под Mac (благо .Net - штука кроссплатформенная), а также потому, что Access (RIP) убог как и MS Access убога как и embedded варианты SQL Server. А под виндой я сижу, хотите верьте, хотите нет, но вот так, реально по одной единственной причине: под Linux нет Visual Studio - полноценной IDE для C# с рефакторингом ReSharper и визуальным дизайнером форм. Но аккурат сегодня зарелизили JetBrains Rider, так что может скоро настанет наконец вндкпц...

"Релиз СУБД SQLite 3.20.0"
Отправлено Led , 08-Авг-17 23:48 
Иди в винду.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 12:27 
Также не поясните, что быстрее, WITHOUT ROWID и PRIMARY KEY из  2х целочисленных  полей, или отображение этих дх полей в rowid и обратно (напр бинарным сдвигом и бинарным ИЛИ)? Если второе, то неплохо бы это иметь встроенным в саму базу.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 14:44 
> Также не поясните, что быстрее, WITHOUT ROWID и PRIMARY KEY из  
> 2х целочисленных  полей, или отображение этих дх полей в rowid
> и обратно (напр бинарным сдвигом и бинарным ИЛИ)?

Так проверьте же. Прямо на своих задачах.

> Если второе, то неплохо бы это иметь встроенным в саму базу.

Patches are welcome, не?


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 15:03 
> Так проверьте же. Прямо на своих задачах.

конвертация таблицы в другой формат может несколько суток занять.


"Релиз СУБД SQLite 3.20.0"
Отправлено НяшМяш , 07-Авг-17 23:09 
> конвертация таблицы в другой формат может несколько суток занять.

Кто же заставил держать такую таблицу в sqlite?


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 08-Авг-17 10:03 
>> Так проверьте же. Прямо на своих задачах.
> конвертация таблицы в другой формат может несколько суток занять.

Так сделай тестовую поменьше.


"Релиз СУБД SQLite 3.20.0"
Отправлено нах , 08-Авг-17 17:25 
несколько суток с момента этой новости - давно прошли. А ты все еще даже не попробовал. Ты их руками, по одному байтику конвертируешь, с 9 до 18?

(и нет, не надо "делать поменьше", тебя, на самом деле, не интересует как оно работает на таблицах поменьше, тебя интересует как оно работает на _твоей_ таблице. Никто кроме тебя это проверять не будет. Если бы мне была нужна подобная оптимизация - я бы давно именно это и сделал. И еще одну с default rowid и отдельно - составным ключом, никогда не знаешь, что придет в голову сложным оптимизаторам)


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 14:45 
https://www.sqlite.org/src/tree?ci=trunk
Код sqlite это все-таки хороший пример для обучения того как надо писать код. К слову, для меня, например, отлично, что они используют не монструозный git, а простой fossil (ими же и созданный). Современным хипстерам стоит поучиться подходу sqlite.

"Релиз СУБД SQLite 3.20.0"
Отправлено Crazy Alex , 07-Авг-17 15:09 
Скорее, это пример того, что команда хороших инженеров может работать на любой дряни, и того, что в промышленных решениях иногда дешевле поддерживать какую-то экзотику чем мигрировать на более распространённые и эффективные вещи.

"Релиз СУБД SQLite 3.20.0"
Отправлено Владимир Путин , 07-Авг-17 15:48 
Отлично, гит уже для хипстеров. Куда дальше дна скатываться комментаторам на опеннете?

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:47 
> Отлично, гит уже для хипстеров. Куда дальше дна скатываться комментаторам на опеннете?

Дна чего? Дно ближайшего пруда не сравнится с дном Марианской впадины. А та, в свою очередь, лишь мелкая морщинка на стыке тектонических плит ...



"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:41 
> Современным хипстерам
> стоит поучиться подходу sqlite.

С каких это пор хипстерам потребовалось обучаться велосипедостроению?


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 16:48 
>> Современным хипстерам
>> стоит поучиться подходу sqlite.
> С каких это пор хипстерам потребовалось обучаться велосипедостроению?

leftpad же.



"Релиз СУБД SQLite 3.20.0"
Отправлено Michael Shigorin , 08-Авг-17 12:51 
> К слову, для меня, например, отлично, что они используют не монструозный git,
> а простой fossil (ими же и созданный).

Сколько там было переездов туда-сюда?  Наш майнтейнер sqlite3 (и fossil, ага) уже ухахатываться устал, похоже.


"Релиз СУБД SQLite 3.20.0"
Отправлено yet another anonymous , 08-Авг-17 13:51 
Простой fossil несколько кривоват by design: линия коммитов по wall time --- для распределённой системы это супер-находка.

"Релиз СУБД SQLite 3.20.0"
Отправлено Шарпей , 07-Авг-17 22:58 
Поиск по UTF-8-строкам без учёта регистра до сих пор не работает из коробки? Помню, раньше было два варианта решения (костыля):
1) Перекомпилировать с ICU, увеличив объём либы на 10-15 метров и замедлив скорость поиска в 4 раза.
2) Внедрить грязный фикс для кириллицы прямо в if — если маленькая буква, то из кода символа вычитаем 32.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 23:19 
А вы чисто технически как это себе представляете ? Так чтобы без ICU и чтоб корректно работало ?

"Релиз СУБД SQLite 3.20.0"
Отправлено Шарпей , 07-Авг-17 23:41 
> А вы чисто технически как это себе представляете ? Так чтобы без
> ICU и чтоб корректно работало ?

Элементарно сделать без ICU. Просто, для каждой локали (благо, их не так много) сделать свои upper(), lower() и т.д. Cделать, чтобы это были указатели на функции. Переключил локаль на русскую — upper() указывает на ru_upper(). Я уже пробовал так делать, но мне совершенно не хочется каждый раз при обновлении sqlite перекомпилировать всё это заново.


"Релиз СУБД SQLite 3.20.0"
Отправлено angra , 08-Авг-17 01:45 
Судя по предлагаемому решению, ты не знаешь, что в локали ru_RU.UTF-8 можно использовать хоть иероглифы с эмоджами, не говоря уже про буквы всех европейских языков. Да и о количестве возможных локалей скорее всего тоже не в курсе и путаешь общее количество с количеством установленных на твоей машине.


"Релиз СУБД SQLite 3.20.0"
Отправлено Шарпей , 08-Авг-17 01:53 
> Судя по предлагаемому решению, ты не знаешь, что в локали ru_RU.UTF-8 можно
> использовать хоть иероглифы с эмоджами, не говоря уже про буквы всех
> европейских языков. Да и о количестве возможных локалей скорее всего тоже
> не в курсе и путаешь общее количество с количеством установленных на
> твоей машине.

Я знаю. Только, наверное, если я спецом выбрал ru, то всяко, не для того, чтобы искать по арабской вязи. Количество локалей. Ну пусть будут не все существующие, а самые популярные. Вон, Firefox поддерживает почти сто локалей, и ничего, «не жужжит».


"Релиз СУБД SQLite 3.20.0"
Отправлено Led , 08-Авг-17 01:56 
> Вон, Firefox поддерживает почти сто локалей, и ничего, «не жужжит».

Бери с него пример (в последнем).


"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 08-Авг-17 16:40 
Теперь хотелось бы услышать отчего и почему авторы библиотеки должны лепить (и поддерживать) уродский костыль ради вашего юзкейса.

"Релиз СУБД SQLite 3.20.0"
Отправлено Аноним , 07-Авг-17 23:53 
Мыши плакали, кололись, но не хотели внедрять KOI-8RU