abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 0
včera 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 17
včera 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 26
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 780 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Nastavení databáze na nerozlišování velikosti písmen.

4.9.2013 18:12 Hunt
Nastavení databáze na nerozlišování velikosti písmen.
Přečteno: 1924×
Ahoj. Nevíte jak to udělat?

Řešení dotazu:


Odpovědi

4.9.2013 18:13 Hunt
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Jsem zapomněl napsat to hlavní. Jedná se o postgres.
4.9.2013 19:01 axel
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Jeste jsi zapomnel napsat, co si pod tim predstavujes. Zkus vysvetlit, ceho chces dosahnout, a podle toho pak lze poradit, jak se to udela...
4.9.2013 20:11 Hunt
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Jak mám udělat v postgres, abych vyhledával všechny uživatele třeba "Wall" ale i "wall" ale už né "wal" protože jsem zjistil že postgres rozlišuje velikosti písmen. Našel jsem že jde udělat select * from uzivatele where nick ~* 'wall'; ale to mi najde i uživatele wal a když to udělám takhle select * from uzivatele where nick = 'wall'; tak zase mi to nenajde Wall. Potřeboval bych to nějak spojit. Ale to nejde... mohl bych udělat lower(nick) ale to prý zpomaluje databázi. Jsem zvyklej u MySQL že to nerozlišuje. Tady jo.
4.9.2013 20:31 Kit
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
CREATE TABLE uzivatel(nick text);
INSERT INTO uzivatel values ('Wall');
INSERT INTO uzivatel values ('wall');
INSERT INTO uzivatel values ('WaLl');
INSERT INTO uzivatel values ('Wal');
INSERT INTO uzivatel values ('wal');
INSERT INTO uzivatel values ('wAl');
SELECT * FROM uzivatel WHERE nick ILIKE 'wal';
4.9.2013 20:44 Hunt
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Děkuju ILIKE. Super dekuji moc... a neni to nějaký zpomalující nebo tak něco? Nemá to prostě nějakou jinou svízel na kterou bych mohl narazit? Už jsem si zvykl, že všechno má věčinou nějakou svízel :D . To postgres je pro mě nové.
4.9.2013 20:51 Kit
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Svízel začne, když se začnou používat žolíky. Pro pár tisíc uživatelů bych to neřešil, milióny bych si normálně otestoval přímo na konkrétním stroji.
4.9.2013 21:22 Hunt
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Tak děkuji. Až bude milion uživatelů zaplatim si na to programátora který je skutečně programátor :D ... Jenom ještě jsem se chtěl zeptat co myslíte termínem "žolík" ?
4.9.2013 21:37 Kit
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Žolíky jsou zástupné znaky. Například "_" nahrazuje libovolný znak a "%" libovolnou posloupnost znaků. Mělo by se jimi šetřit, zejména na začátku hledaného stringu. Je také dobré tyto znaky ošetřit před zlobivými uživateli, aby nám systematicky nepřetěžovali databázi.
4.9.2013 21:38 NN
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
divokou kartu ;)
4.9.2013 21:42 Hunt
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Aha... tak to asi vůbec nepoužívám, takže mě to zatím netrápí. Děkuji Vám za pomoc.
Jakub Lucký avatar 4.9.2013 21:51 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
If you understand, things are just as they are; if you do not understand, things are just as they are. (Zen P.) Blogísek
4.9.2013 21:59 Kit
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
To je zrovna špatně. Správné řešení ILIKE je až na konci.
4.9.2013 22:27 Hunt
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
A kde nakonci? Když to ILIKE dám na konec příkazu tak hodí error. NEbo jsem to nepochopil jak to myslíte teď.
4.9.2013 23:05 Kit
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Na konci odkazované diskuze.

Syntaxe už zde byla popsána a předpokládal jsem, že je už všem zúčastněným jasná. Pokud ne, tak stačí nakouknout do referenční příručky. Místo ILIKE lze použít i operátor ~~*
okbob avatar 4.9.2013 23:55 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
ILIKE je špatné řešení.
4.9.2013 22:26 Hunt
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
to nepomůže když si někdo dá nick waLL
okbob avatar 4.9.2013 23:54 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Používání ILIKE nebo ILIKE operátoru (navíc bez žolíků) je ošklivé a matoucí.

V Postgresu je extenze citext, která obsahuje datový typ citext - case insensitive text, což je to co chcete
5.9.2013 00:28 Kit
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Pěkné. Jen se nesmí zapomenout na
CREATE EXTENSION "citext";
okbob avatar 5.9.2013 05:23 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Samozřejmě - je to extenze. Ale pokud si ji nainstalujete to template1, tak na ni nezapomenete.

Navíc je případná chyba se jednoduše identifikuje - takže jakýkoliv unit test ji najde v několika prvních řádcích.
5.9.2013 12:28 Hund
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Toto tady mě mate. Proč je používání ILIKE ošklivé a matoucí? Záleží mi na tom abych to napsal správně.
5.9.2013 12:55 Kit
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Typ citext má výhodu v tom, že index je již optimalizován pro vyhledávání case_insensitive a hodí se tedy pro větší počet záznamů. Pokud však sloupec nebude indexován (do několika tisíc položek to zpravidla není nutné) je ILIKE jednodušší na použití - není třeba přidávat extension.

ILIKE se používá zpravidla ve spojení se žolíky. Nejsou však nezbytně nutné.
5.9.2013 14:25 axel
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
ILIKE nepouzije index, coz muze byt fatalni vykonnostni problem. Specialne v pripade, ze ve skutecnosti neni zadny like potreba, ale jde o dotaz na presnou shodu bez ohledu na case (scenar vyberu konkretniho uzivatele). Pak je nejvhodnejsi funkcni index pro lower a pouziti lower. Nebo dokonce pridani sloupce s lower hodnotou (to bude fungovat vsude, ne kazda DB ma funkcni indexy nebo specialni rozsireni pro ignore case).
5.9.2013 14:39 Hund
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
No já jsem teď zkoušel ten CITEXT podle návodu tady http://www.postgresql.org/docs/9.1/static/citext.html a vyhodí mi to ERROR: type "citext" does not exist
Tarmaq avatar 5.9.2013 15:07 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
a pouzil jsi vyse zminene CREATE EXTENSION "citext";?
Don't panic!
5.9.2013 15:22 Hund
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Ano ale nevim jestli správně... když jsem to hodil normálně do command line tak : ERROR: permission denied to create extension "citext"
Tarmaq avatar 5.9.2013 16:10 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
zrejme uzivatel, pod kterym to spoustis, nema dostatecna opravneni..
Don't panic!
5.9.2013 16:16 Hund
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Jo takhle... to bude určitě pravda no. To mě nenapadlo.
5.9.2013 16:34 Hund
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
No ale nějak mi to nejde... dám jako ROOT

create database nova_database encoding 'utf8' owner hunt;

pak

CREATE EXTENSION "citext";

a pak jako hunt se snažim udělat nick CITEXT UNIQUE not null, a prostě ERROR: type "citext" does not exist
5.9.2013 17:21 axel
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Uz jsi nekdy zadal chybovou hlasku do google? Zkus to!
5.9.2013 17:30 Hund
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Ano. Prostě jsem to neposkládal. Používám pořád google.
okbob avatar 5.9.2013 17:53 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Protože ten správný uživatel s právy na instalaci extenze (tzv superuser) je "postgres"

melo by fungovat:
su
su postgres
psql vasedb
CREATE EXTENSION "citext";
Postgres neběží s právy roota jelikož by to bylo bezpečnostní riziko - takže má vlastního "roota" čímž je uživatel Postgres.

Původně jsem to tady nechtěl vytahovat, ale možná by Vám pomohlo školení - 23. října - PostgreSQL efektivne - Základní administrace PostgreSQL, vysvětlení základních funkcí PostgreSQL ovlivňujících chování MVCC, TOAST - cílem školení je vysvětlit nejdůležitější funkce PostgreSQL, tak aby účastník školení dokázal efektivně nasadit a provozovat PostgreSQL (ROOT). Školím pro iinfo.
5.9.2013 19:54 Hund
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
No ale takhle v podstatě jsem to dělal, jak jste napsal... s tim rootem jsem to napsal špatně... to je zvyk z MySQL pochopitelně že postrgres, tak to testuju na windows, ale hodil jsem :

postgres=# create database nova_database encoding 'utf8' owner hunt; CREATE DATABASE postgres=# CREATE EXTENSION "citext"; CREATE EXTENSION postgres=#

a pak jsem se přihlásil na hunt a chtěl jsem udělat

nick_uzivatele CITEXT UNIQUE not null,

což by měl bejt stejnej postup ne? Nebo já už nevim, začínám toužit po MySQL.
Řešení 1× (Šangala)
okbob avatar 5.9.2013 20:42 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Malá chybička - extenzi jste vytvořil v databázi postgres - extenze jsou per db, takže musíte být v cílové databázi nebo si ji nainstalujte do databáze template1. Potom ji budete mít automaticky ve všech nově vytvořených databázích.
psql postgres
postgres=# create database nova_database encoding 'utf8' owner hunt; 
CREATE DATABASE 
--- prepnout se do cilove db
\c nova_database
CREATE EXTENSION "citext"; 
CREATE EXTENSION
Jakmile se v pg rozkoukáte, tak to je v pohodě - úplně nejhorší na Postgresu je, že to nemá stejné ovládání jako MySQL.

Jak vidím, měl bych do článku http://postgres.cz/wiki/P%C5%99echod_z_MySQL přidat ještě část o case sensitivity
5.9.2013 22:06 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Ještě mně tam napiš něco napiš, a to co mám dělat když migruji SMALLINT unsigned nebo i INT unsigned a nechci databázi velkou jak kráva( rýpu?), štve mě to a už několikrát jsem byl nešťastný, že se mi DB sakramentsky zvětšila (bo právě proto byly použity 2^16 a 2^32 datové typy, bo to je pro aplikaci platný rozsah).
A taky jak s verzí > 9 udělit oprávnění více uživatelům(rolím) ke všem tabulkám (ve schema-tu) - bo to člověka fakt zarazí, a je dobré mít návod.
A jako třešničku:
CREATE TABLE tx ( x SMALLINT, PRIMARY KEY (x));
INSERT INTO tx (x) VALUES(32767);
SELECT x*2 AS val FROM tx;
To jsou tři věci, které jsem tam nenašel, a které mě při migraci často zabolí (pominu-li, že mysql akceptuje INSERT bez INTO líní lidé jsou…).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
okbob avatar 5.9.2013 23:17 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
co např. http://pgxn.org/dist/varint/0.1.0/? Podobných extenzí existuje vícero, stačí hledat - případně si ji napsat. Je to docela jednoduché, a dá se jako základ vzít některá existující.

I 9.1 podporuje
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
GRANT SELECT ON ALL TABLES IN SCHEMA xxxx TO GROUP nejaka_grupa

případně:
do $$
  declare users text[] = ARRAY['pavel','postgres']; 
  u varchar; r record; 
begin
  for r in 
    select * 
       from information_schema.tables 
      where table_schema = 'public' 
  loop
    for u in select * from unnest(users) 
    loop
      execute format('grant select on %I.%I to %I', r.table_schema, r.table_name, u);
    end loop; 
  end loop; 
end;$$ ;
Kdybych z nějakého důvodu nemohl použít skupiny (třeba z vlastní lenosti).

99% z MySQL lze do Pg nějak převést - to 1 procento nejde - v několika málo ohledech tyhle dvě databáze mají úplně jinou filozofii, jiná řešení a měly (a mají) jiné priority vývoje.
6.9.2013 09:50 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.

Myslel jsem aby jsi to doplnil na wiki, bo to jsou věci, s kterými se přechodník setká a potrápí jej ;-)

Ad. unsigned - dík, zajímavé řešení, ale jen pro situace kdy tabulka obsahuje velké rozpětí hodnot (tedy spíše spoustu malých a pár velkých) jinak je to nastejno jak užití vyššího datového typu nebo je to o kus horší (už 15bits ve 4B blééé)…

Ad. Vím - jsem to musel už řešit několikrát, stojí za zmínku i ALTER DEFAULT PRIVILEGES IN SCHEMA… - což je už konečně to co je „třeba“ :), ale chtěl jsem napsat verzi < 9 (, ale nějak se mi pomíchali &gt; &lt; :-(), člověku dělající v MySQL to přijde velmi neohrabané a je zmaten - obdobnou fci používám, jen má nevýhodu, že po každém doplnění tabulek, se nesmí zapomenout ji použít.

Ad. případ (třešnička) implicitního ne-přetypování na vyšší typ, tak na to spousta „obyčejných“ lidí co dělali jen s MySQL čučí jak čáp do trubky…

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
okbob avatar 6.9.2013 11:04 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
S přechodem na větší typ to je diskutabilní - datový typ musí být určen před vlastním během - a zbytečně jít do většího typu může způsobovat jiné výkonnostní problémy, takže tam neexistuje ve všech ohledech výhodnější řešení - a v MySQL vybrali A, a v PG B, přičemž každá varianta má svoje. Vzhledem k designu a podpoře přetížení se v PG musí víc explicitně přetypovávat - takže v PG se prostě typuje - a uznávám, že to může být šok pro někoho, kdo přechází z jakékoliv jiné DB. Typový systém je v PG bohatší a umožňuje docela hezké kousky, které ostatní db nezvládají (přetěžování, polymorfní typy, variadické funkce), ale je jiný, a složitější pro začátečníky.

6.9.2013 12:53 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.

Ju. Aby jsme si rozuměli, nechtěl jsem rozbíhat nic ve smyslu MySql vs. PostgreSql a obhajobu či hanění řešení. Jen když jsi zmínil doplnění wiki, já si ji přečetl, tak jsem navrhl doplnit další rozdíly, které považuji za důležité.

Přiznávám, že absence unsigned nedokážu brát s nadhledem a jsem schopen/ochoten flejmovat na toto téma :-).

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
okbob avatar 6.9.2013 13:08 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
:)

Taky si myslím. Za celou dobu, co tu dělám s Postgresem, se na mne s dotazem ohledně unsigned typů obrátili možná tak dva lidi, a z toho jeden jste Vy.

Skoro každý program má pár vychytávek, které se tam dostaly při ranném vývoji, kdy se snažíte vyhovět každému (z těch málo prvních) zákazníků, a vůbec nemyslíte na zítřek nebo na nějakou koncepci. Před 10-12 lety bylo o dost jednodušší dostat do PG jakokoukoliv funkci, stačilo že vypadala dostatečně cool. Teď už jak se hodně důkladně rozvažuje, co přidat a co ne - bo to bude kód na minimálně 10 let a je hodně obtížná cesta zpět, pokud by se vymyslela nějaká bejkárna. Je to hodně konzervativní a pokud něco není přímo vyžadaváno ANSI SQL, tak dá hodně práce to protlačit.
okbob avatar 6.9.2013 13:11 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Pošli mi text, který tam mám dát. S tímhle jsem nikdy neválčil - a tudíž nemám tu správnou motivaci a znalosti, bych to napsal.
6.9.2013 14:27 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Tak tomu jsem se chtěl vyhnout :-), ale zesmolím a pošlu, řekněme do týdne…
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
5.9.2013 22:16 Hund
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
Děkuju Vám. Už jsem to rozchodil.
okbob avatar 5.9.2013 17:56 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
To je správně - běžný uživatel nemá práva instalovat extenze. Prostřednictvím chybně napsaných extenzí lze snadno získat vyšší práva - a tudíž je vždy na administrátoru databáze, aby rozhodl a dovolil, které extenze se budou instalovat. Extenze z balíku postgresql-contrib jsou bezpečné - nicméně zatím stále platí omezení na superusera.
okbob avatar 5.9.2013 18:09 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
LIKE (ILIKE) má jinou sémantiku - říkám tím, že budu vyhledávat na základě částečné shody, nikoliv ekvivalence. Kromě toho, že člověk ze sebe dělá tatara, tak se vám bez dalšího zvláštního zápisu (který si málokdo dohledá) nikdy nechytne index, což vede k pomalejšímu zpracování.

Ve vašem případě je to podobné, jako kdybyste v běžném kódu místo A + B napsal A - -B, výsledek je stejný, ale každý bude muset přemýšlet, proč jste to napsal, tak jak jste to napsal - a než člověk přijde na to, že to je nezkušenost autora (případně trollování), z které automaticky nikoho nepodezíráte, tak se spálí hromada času.
Tarmaq avatar 5.9.2013 18:33 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
jestli tomu rozumim spravne, pokud teda je pouzit datovy typ citext, tak ani pak neni treba pouzivat ILIKE, protoze i LIKE by mel nad citex sloupcem fungovat case insensitive - je to tak?
Don't panic!
okbob avatar 5.9.2013 20:43 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
ano
okbob avatar 5.9.2013 21:11 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: Nastavení databáze na nerozlišování velikosti písmen.
viz http://postgres.cz/wiki/Přechod z MySQL#Identifikátory a řetězce

Funguje to dobře - pozor bez indexu jsou operace na citext typu pomalejší než na varcharu cca o 30% (což znamená, že by se měl používat s indexem nad 10 K řádků). Case insensitive porovnání je náročnější než case sensitive - což je u důvod, proč je to navrženo, tak jak je to navrženo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.