Оставлю это здесь, в надежде, что подобных ошибок в будущем будет меньше.
2016-10-19 0:09 GMT+03:00 Ivan Petrov <[email protected]>: > >>> $dbh->>> selectrow_hashref('/* получим юзера */ SELECT * FROM users WHERE >>> id = 1') > >> А как вас называет за такое? :D > > а что не нравится-то? > русские коменты в SQL? хотим видеть их в pg_top - разве плохое > желание? > Нормальное желание, делается так: use 5.024; use warnings; use utf8; use Test::More; use DBI; my $dbh = DBI->connect('dbi:Pg:dbname=test', '', '', { AutoCommit => 1, RaiseError => 1, }); $dbh->do('/* Удаляем старую таблицу */ DROP TABLE IF EXISTS sample_test'); $dbh->do('/* Создаём таблицу */ CREATE TABLE sample_test (id integer, value text)'); $dbh->do('/* Вставляем данные */ INSERT INTO sample_test VALUES (?,?),(?,?)', undef, 10, 'Привет', 20, 'Медвед'); my $result = $dbh->selectrow_hashref('/* получим данные */ SELECT * FROM sample_test WHERE id = 10'); is $result->{id}, 10; is $result->{value}, 'Привет'; $dbh->disconnect; done_testing; В логах видим: LOG: statement: /* Удаляем старую таблицу */ DROP TABLE IF EXISTS sample_test LOG: statement: /* Создаём таблицу */ CREATE TABLE sample_test (id integer, value text) LOG: statement: /* Вставляем данные */ INSERT INTO sample_test VALUES ('10','Привет'),('20','Медвед') LOG: statement: /* получим данные */ SELECT * FROM sample_test WHERE id = 10 Может уже пофиксили? Perl 5.24.0, DBI 1.636, DBD::Pg 3.5.3 > проблема в том что открытие issue иногда приводит к обратному > результату. > вот я наблюдал issue на mojo, про упомянутый utf8. > > в Test::More можно написать ok $var, 'тест пройден'; > в Test::Mojo можно БЫЛО написать get_ok($url, 'тест пройден') > человек открыл багу про json_is($bla, 'тест пройден') > > в итоге гей на букву п багу закрыл и сломал get_ok и все прочие _ok. > > при этом поскольку этот гей на букву п не русскоязычный то он тупо НЕ > ПОНИМАЕТ проблему (общались с ним в IM). > Судя по комментариям к - https://github.com/kraih/mojo/pull/997 - https://github.com/kraih/mojo/issues/995 - https://github.com/kraih/mojo/issues/497 - https://github.com/kraih/mojo/issues/430 Автор как раз понимает о чём речь, гораздо лучше, чем топикстартер, который считает для себя нормальным оскорблять незнакомых людей в публичной рассылке. > то есть например > > use utf8; > use open qw(:std :utf8); > > $str = 'привет, медвед'; > like $str => qr{при\w+,}, 'тест пройден'; > > в его гейском (на букву п) виртуальном мире делать не нужно. Юникода в > данных в коде программы встречаться не должно. Скорей всего kraih говорил Ивану, что опасно делать`use open qw(:std :utf8)`. В данном примере это работает, но только потому, что Test::More не поддерживает юникод, а рекомендация использовать io-layers в документации к нему, очевидный хак, более того, там это и описано, как 'workaround'. В своём текущем состоянии Test::More очевидно является той границей, на которой должна происходить конверсия string<->bytes, поэтому такой тест скорее должен выглядеть как: my $str = 'привет, медвед'; like $str => qr{при\w+,}, encode('utf-8','тест пройден'); Но и это не будет работать на 100%, оно будет генерить ворнинг при завалившихся тестах. В идеальном будущем, кто-то сделает правильно вот эту работу: https://github.com/Test-More/test-more/pull/422 и тест будет выглядеть: use Test::More output => {formatter => 'TAP', encoding => 'utf-8'} my $str = 'привет, медвед'; like $str => qr{при\w+,}, 'тест пройден'; Но если только ныть и ругаться, ничего такого не произойдёт, как не произошло до сих пор, максимум, в очередной версии очередного модуля будут проходить весь цикл ошибок с обработкой юникода, как это делает сам интерпретатор ) Сделайте Test::More::Unicode, где он? Что-то не вижу ) Вот Монсу понадобился, он сделал Test::More::UTF8, правда только обёртку вокруг binmode )) А про Mojolicious так вообще смешно... ну сделайте подкласс Test::Mojo, да перебейте один метод (и это круто, что там теперь один такой метод), как вам нравится ) > > Гею на букву п нужен геморрой питонячий вида > if 'hello world' == u'hello world': > сюда никогда не попадаем. що является ППЦ > ему нужно втащить этот геморрой в perl! > Это жизнь... вам придётся различать бинарные данные и строки. В разных языках и средах это делается по разному, но делается везде. И в Perl тоже приходится. К сожалению, в Perl это сложнее по многим причинам. > > далее становится вопрос что делать-то? > возможно идти по пути Марка Лемана. > > Грустно это все. они заполонили планету, блин > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org -- Vladimir Timofeev <[email protected]> -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
