- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
std::string sql = "INSERT INTO digest_test_record (set_id, ref_digest, cand_digest, vdt_cfg_warn, digest_cfg_warn, "
"ref_duration, ref_cardinality, ref_dispersion, "
"cand_duration, cand_cardinality, cand_dispersion, "
"cardinality, difference, red_difference, ext_difference, "
"inv_cardinality, inv_difference, inv_red_difference, inv_ext_difference,
"timing, lib_version) SELECT 0, "
"ROW($1, $2, $3, $4, $5, $6, $7, $8)::digest_info, "
"ROW($9, $10, $11, $12, $13, $14, $15, $16)::digest_info,"
"$17, $18, ",
"$19, $20, $21, "
"$22, $23, $24, "
"$25, $26, $27, $28, "
"$29, $30, $31, $32, "
"$33, ROW($34, $35, $36, make_date($37, $38, $39), $40)::lib_version_info";
cn.prepare("insert", sql);
xact.prepared("insert")
(ref_digest_info.src_width)(ref_digest_info.src_height)(ref_digest_info.src_fps)(ref_digest_info.src_duration)
(ref_digest_info.vdt_duration)(ref_digest_info.cardinality)(ref_digest_info.has_flags)(ref_digest_info.src_filename)
(cand_digest_info.src_width)(cand_digest_info.src_height)(cand_digest_info.src_fps)(cand_digest_info.src_duration)
(cand_digest_info.vdt_duration)(cand_digest_info.cardinality)(cand_digest_info.has_flags)(cand_digest_info.src_filename)
(results.vdt_cfg_warn)(results.digest_cfg_warn)
(results.ref_duration)(results.ref_cardinality)(results.ref_dispersion)
(results.cand_duration)(results.cand_cardinality)(results.cand_dispersion)
(results.cardinality)(results.difference)(results.red_difference)(results.ext_difference)
(results.inv_cardinality)(results.inv_difference)(results.inv_red_difference)(results.inv_ext_difference)
((double)timing / CLOCKS_PER_SEC)(li.main_ver)(li.sub_ver)(li.revision)(li.year)(li.month)(li.day)(li.platform).exec();
Мои глаза.... Яркий пример использования нативного pqxx
Lokich 01.03.2016 14:56 # 0
leon_mz 01.03.2016 14:57 # +3
bormand 01.03.2016 18:48 # 0
3_14dar 03.03.2016 14:29 # 0
Тавтология.
Откуда эта говнофича пошла?
defecate-plusplus 03.03.2016 15:14 # +4
3_14dar 03.03.2016 15:28 # −6
>Откуда эта говнофича пошла?
3.14159265 03.03.2016 15:32 # −1
Уже сколько сюда не заходил, тыкнул в первый тред и оп... Очередная тупость от сёмы-анонимба.
Вот поясни, ты специально дебилом прикидываешься, чтоб у всех была myötähäpeä. Или это врождённое?
1024-- 03.03.2016 18:22 # 0
Говнокод образовательный. Спасибо.
>>FOO и BAR нихуя не литералы же.
> Очередная тупость от сёмы-анонимба.
Мне кажется, myötähäpeä у посетителей ГК недостаточная какая-то вышла, я бы хотел добавить немного от себя, если позволите.
Почему отрицание принадлежности FOO и BAR к классу литералов - проявление тупости? "foo", "bar" - литералы; FOO, BAR - псевдонимы для этих литералов, но после посещения программы препроцессором таковыми становятся, но это уже вроде как не важно, иначе можно было бы сказать, что x в программе int x = 3+2; printf("%d", x); - литерал, т.к. в режиме оптимизации копмилятор преобразует его в число, которое свежей костью положат на стек в миску принтэфу.
kegdan 03.03.2016 18:31 # +1
хз зачем я это сказал
1024-- 03.03.2016 18:40 # +1
Т.е. выходит, что это переменная на другом языке, и вообще никак литералом быть не может, т.е. 3.14дар абсолютно прав.
В случае, если это часть языка си, можно было ещё поболтать о преобразованиях в литерал и т.п.
kegdan 03.03.2016 18:49 # +2
Тогда FOO - это переменная на языке препроцессора СИ.
И после обработки каждая FOO заменится литералом.
хм
поэтому FOO является переменной с точки зрения препроцессора, но константой времен компиляции с точки зрения компилятора си. То есть одновременно и тем и тем. Таким образом FOO - квантовая переменная
roman-kashitsyn 03.03.2016 18:51 # 0
Никто и не утверждал, что это литералы.
Дефекейт привёл пример, когда это действительно нужно - когда нужно склеить строки, поступающие на этапе компиляции (или препроцессинга) из разных источников.
Ещё один типичный пример -
bormand 03.03.2016 19:55 # +1
3_14dar 04.03.2016 15:01 # −1
3.14159265 04.03.2016 17:48 # +5
3_14dar 04.03.2016 23:02 # −1
kegdan 03.03.2016 15:41 # +1
Увидел шаблон
Осилит не смог
ведь он - пидарок
тара тара пам! пиу! хх!
bormand 03.03.2016 19:38 # 0
kegdan 03.03.2016 19:42 # 0
bormand 03.03.2016 19:44 # +3
kegdan 03.03.2016 19:47 # +3
3_14dar 04.03.2016 15:00 # 0
3.14159265 04.03.2016 17:52 # +1
3_14dar 04.03.2016 15:03 # 0
и какой петух притащил ее в питон?
1024-- 04.03.2016 17:12 # 0
Да ну, полезное свойство.
guest 04.03.2016 19:38 # 0
1024-- 04.03.2016 22:10 # 0
3_14dar 04.03.2016 23:05 # +1
bormand 04.03.2016 19:41 # −1
Тебе же уже столько примеров показали...
Ради сишных макросов она запилена в хуй знает какие годы... Препроцессор в конкатенацию литералов не умеет. А иногда нужно (к примеру, вывести имя файла __FILE__, номер строки __LINE__ и твой текст как одну const char *: DEBUG("my text") -> debug_log("test.c" ":" "200" " " "my text"). Поэтому всё что ты можешь сделать из макроса - приставить литералы друг к другу, а конпелятор их потом склеит сам.
guest 04.03.2016 19:44 # 0
это разные вещи, включи моск.
kegdan 04.03.2016 19:48 # 0
Принц Гвидон же
3_14dar 04.03.2016 23:04 # 0
bormand 05.03.2016 07:16 # 0
Да кто ж его знает. Макросов в питоне нет, поэтому смысла в этой фиче ну абсолютно никакого.
З.Ы. Пытались выпилить таки: http://legacy.python.org/dev/peps/pep-3126/
guest 05.03.2016 15:07 # 0
bormand 05.03.2016 16:04 # 0
Добавь...
Любители многострочных регулярок и SQL запросов, видимо, уговорили оставить эту говнофичу и не делать проверок на неё...
3_14dar 05.03.2016 16:55 # 0
В чем проблема дописать +? но ее блядь даже в качестве опции нету.
3_14dar 05.03.2016 18:53 # 0
В линте
roman-kashitsyn 01.03.2016 15:01 # 0
leon_mz 01.03.2016 15:58 # 0
roman-kashitsyn 02.03.2016 18:09 # +1
Радикальненько. А если используются фишки, специфичные для Pg? Наследования таблиц для шардирования, hstore, индексы по json и прочая радость? Как улучшить код, не переписывая его целиком в XML под ORM с сомнительной выгодой?
bormand 03.03.2016 07:23 # 0
query() + "where foo = " + arg(x.foo)
Очевидный минус - потеряем подготовленные запросы.
defecate-plusplus 03.03.2016 09:54 # 0
не знаю как постгрес, надо почитать, но оракл давно уже подобные аргументы сам заменяет на плейсхолдеры под биндящиеся значения
даже до маразма доходит, когда он переделывает select 1 from ... в select :SYS_B0 from ...
но да, хорошая либа должна позволять задать аргументы биндов не только тупо по порядку, но и по имени
bormand 03.03.2016 07:26 # 0
roman-kashitsyn 03.03.2016 11:56 # +1
Если принять, что pqxx такой возможности пока нет (http://pqxx.org/devprojects/libpqxx/doc/3.1/html/Reference/a00047.html) мы править не собираемся, то код в топике особо и не улучшишь.
P.S. Больше всего в pqxx меня колбасит то, что prepare не возвращает объект, а назначает prepared statement-ам строковые имена, которые нужно потом использовать для создания invocation.