Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: rade-brno 25. 09. 2014, 20:42:06

Název: Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 25. 09. 2014, 20:42:06
Zdravím,

mám následující funkci v PHP:
(http://programujte.com/storage/uzivatelske/2014/09/2014_09_25_20_16_00_000000_funkce_puvodni_vyuzivajici_mysql_png.png)

která generuje JSON z DB pomocí volání concat.

Vše fungovalo roky perfektně, než jeden uživatel vložil do jednoho záznamu v DB data o velikosti více jak asi 24kB. V tu chvíli přestala funkce správně pracovat, přesněji řečeno generoval se špatný JSON formát.

Marně jsem hledal na googlu nějakou informaci a marně jsem o několik řádů nastavoval všemožné limity v konfiguraci MySQL. Nakonec jsem musel celý problém řešit přímo v PHP, což mě nepřijde tak elegantní a i uživatel pozná, že to trvá déle...

Proto se ptám, existuje nějaký limit pro funkci CONCAT?

Díky, R.

PS: dokumentace zde:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat)
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 25. 09. 2014, 20:46:21
Jedná se o problematiku MySQL, příště se polepším a uvedu do předmětu...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: OndraP 25. 09. 2014, 21:56:23
Zkoušel jsi nastavit group_concat_max_len?  SET SESSION group_concat_max_len = 100000;
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 27. 09. 2014, 17:09:28
Zkoušel jsi nastavit group_concat_max_len?  SET SESSION group_concat_max_len = 100000;
Viděl jsi alespoň z vlaku ten zdrojový kód? To co navrhuješ je na prvním řádku té funkce... Zkoušel jsem si i vypsat, zda se to v DB správně nastaví (nastavilo), takže group_concat_max_len není řešením...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Kit 27. 09. 2014, 17:41:47
Viděl jsi alespoň z vlaku ten zdrojový kód? To co navrhuješ je na prvním řádku té funkce...

Zdrojový kód jsi neuvedl. Pouze nějaký (pro mne obtížně čitelný) screenshot. Nedá se to zkopírovat do editoru, nedá se to otestovat. Opisovat to nikdo nebude.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Filip Jirsák 27. 09. 2014, 17:43:49
Nebylo by lepší a bezpečnější ten JSON soubor vytvářet až v PHP pomocí json_encode? Navíc by to vracelo skutečný JSON a ne tuhle napodobeninu.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Lemming 27. 09. 2014, 19:52:11
FJ: Tak nějak. Duplikovat tímhle způsobem funkcionalitu, která je dostupná v knihovně je architektonická prasárna. Navíc to ani není zduplikované pořádně, protože to escapování je dost odfláknuté - escapuje se jen to co si autor myslí, že se tam uživatelovi povede vložit z UI (pokud tam náhodou není nějaký filtr na vstup na servisní vrstvě, ale hádám, že není). Tipuju, že problém bude právěv tom, že se tam uživateli povedlo vložit nějaký znak, se kterým to "escapování" nepočítá.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 15:35:07
Nebylo by lepší a bezpečnější ten JSON soubor vytvářet až v PHP pomocí json_encode? Navíc by to vracelo skutečný JSON a ne tuhle napodobeninu.
Dotaz nezněl na to, jak to mám udělat (mám to dávno opraveno), ale jestli existuje limit... Vytvářím si to, co potřebuji a nikomu to nevnucuji. Kdyby nebyla MySQL taková sračka, tak podporuje výstup do JSONu stejně jako jiné databáze, ale to je úplně jiné téma... Držme se tématu...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 15:39:17
FJ: Tak nějak. Duplikovat tímhle způsobem funkcionalitu, která je dostupná v knihovně je architektonická prasárna. Navíc to ani není zduplikované pořádně, protože to escapování je dost odfláknuté - escapuje se jen to co si autor myslí, že se tam uživatelovi povede vložit z UI (pokud tam náhodou není nějaký filtr na vstup na servisní vrstvě, ale hádám, že není). Tipuju, že problém bude právěv tom, že se tam uživateli povedlo vložit nějaký znak, se kterým to "escapování" nepočítá.
Otázka nezněla, jak mám řešit uloení dat v JSONu, ale jestli má CONCAT nějaké limity... Bože, to je zas chytrolínů, kteří neznají odpověď, ale potřebují se projevit...
Tipuješ špatně, zajisté jsem řešil, jaká data lezou od uživatele, to byla první věc, co mě napadla... Ale vspupními daty to nebylo. Držme se tématu... Problém mám vyřešen, ptám se, zda existuje nějaký limit pro CONCAT
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Filip Jirsák 28. 09. 2014, 15:45:18
Dobře, odpovím přesně na vaši otázku: ano, limit existuje.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 15:47:21
Viděl jsi alespoň z vlaku ten zdrojový kód? To co navrhuješ je na prvním řádku té funkce...

Zdrojový kód jsi neuvedl. Pouze nějaký (pro mne obtížně čitelný) screenshot. Nedá se to zkopírovat do editoru, nedá se to otestovat. Opisovat to nikdo nebude.
Proč by to měl někdo opisovat? Pokud někdo ví, zda má/nemá funkce CONCAT v MySQL nějaký limit, tak mě stačí tato informace. A pokud mě někdo poradí, ať vyzkouším nastavit nějaký parametr, který nastavuji na prvním řádku ve zobrazené funkci, tak je to odpověď o ničem.
Uvedl jsem print screen, protože upravuji kód přímo na serveru přes SSH a nechtělo se mi to stahovat. Navic je to pěkně formátované...
Pokud to potřebuješ v textové podobě, tak se jedná o toto:
Kód: [Vybrat]
CONCAT(
  GROUP_CONCAT(
    CONCAT( ... )
    CONCAT( ... )
    CONCAT( ... )
    ...
  )
)
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 15:48:33
Dobře, odpovím přesně na vaši otázku: ano, limit existuje.
A mohu prosit nějaký odkaz, kde se o této problematice dočtu více?
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Kit 28. 09. 2014, 15:58:15
Uvedl jsem print screen, protože upravuji kód přímo na serveru přes SSH a nechtělo se mi to stahovat. Navic je to pěkně formátované...

Mýlíš se. Je to naformátované hnusně. Na přetahování snippetů se dá použít myš. Ctr-C a Ctrl-V snad umíš. Je to jednodušší, než screenshot.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 16:03:48
Uvedl jsem print screen, protože upravuji kód přímo na serveru přes SSH a nechtělo se mi to stahovat. Navic je to pěkně formátované...

Mýlíš se. Je to naformátované hnusně. Na přetahování snippetů se dá použít myš. Ctr-C a Ctrl-V snad umíš. Je to jednodušší, než screenshot.
Pokud si člověk otevře termínál, přihlásí se na server přes SSH, na serveru zadá příkaz mc a otevře si MC, tak nelze myší ani označovat text, ani používat ctrl-c, ctrl-v, jedná se o konzoli... Ale to člověk který ťuká neco ve MS Widlích nepochopí.
Opravdu je tak důležité řešit obrázek který s odpovědí (s dotazem) nesouvisí?
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Kit 28. 09. 2014, 16:23:42
Pokud si člověk otevře termínál, přihlásí se na server přes SSH, na serveru zadá příkaz mc a otevře si MC, tak nelze myší ani označovat text, ani používat ctrl-c, ctrl-v, jedná se o konzoli... Ale to člověk který ťuká neco ve MS Widlích nepochopí.
Opravdu je tak důležité řešit obrázek který s odpovědí (s dotazem) nesouvisí?

Opět se mýlíš. Windows nepoužívám a dokonce nepotřebuji ani "ctrl-c, ctrl-v", abych něco přetáhl z jedné konzoly do druhé. Levým myšítkem označím, postředním vložím. Ale to člověk který ťuká neco ve MS Widlích nepochopí.

Kromě obrázku jsi poslal jen dotaz na limit CONCAT. Odpověď jsi už dostal.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: mareolan 28. 09. 2014, 16:35:01
S SQL moc nedělám, ale dle dokumentace ke GROUP_CONCAT (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat) je povolená velikost min(group_concat_max_len (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_group_concat_max_len), max_allowed_packet (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet)). No a max_allowed_packet je definován jako "The maximum size of one packet or any generated/intermediate string.", takže bych čekal, že toto nastavení bude mít vliv i na CONCAT, resp. jakýkoliv řetězec.

Jinak, jak říkají ostatní - pokud by ses rozhodl upravit ten kód, tak si vyselekti z DB obyčejné hodnoty a použij json_encode. Jednak tím získáš skutečný JSON (a tedy ne pouze javascriptový literál, který je z pohledu povolené syntaxe nadmnožinou JSONu), ale hlavně se vyhneš vlastnímu escapování (např. takový backslash na konci řetězce by v té původní verzi umožňoval SQL injekci).
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 16:43:36
Pokud si člověk otevře termínál, přihlásí se na server přes SSH, na serveru zadá příkaz mc a otevře si MC, tak nelze myší ani označovat text, ani používat ctrl-c, ctrl-v, jedná se o konzoli... Ale to člověk který ťuká neco ve MS Widlích nepochopí.
Opravdu je tak důležité řešit obrázek který s odpovědí (s dotazem) nesouvisí?

Opět se mýlíš. Windows nepoužívám a dokonce nepotřebuji ani "ctrl-c, ctrl-v", abych něco přetáhl z jedné konzoly do druhé. Levým myšítkem označím, postředním vložím. Ale to člověk který ťuká neco ve MS Widlích nepochopí.

Kromě obrázku jsi poslal jen dotaz na limit CONCAT. Odpověď jsi už dostal.
Mylis se, to co popisujes funguje pouze v terminalu, pokud otevres mc a pouzijes F4 a editujes nejaky soubor (primo v editoru mc), tak ta tvoje vychytavka nefunguje.
Kdyz se zeptam netere, ktera ma 3 roky, co mela k obedu, tak me neodpovi, ze venku sviti slunko. Bylo by fajn, kdyby si byl alespon na jeji urovni a kdyz se na neco zeptam, bud odpovedel na mou otazku nebo muj dotaz ignoroval...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 16:53:59
S SQL moc nedělám, ale dle dokumentace ke GROUP_CONCAT (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat) je povolená velikost min(group_concat_max_len (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_group_concat_max_len), max_allowed_packet (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet)). No a max_allowed_packet je definován jako "The maximum size of one packet or any generated/intermediate string.", takže bych čekal, že toto nastavení bude mít vliv i na CONCAT, resp. jakýkoliv řetězec.

Jinak, jak říkají ostatní - pokud by ses rozhodl upravit ten kód, tak si vyselekti z DB obyčejné hodnoty a použij json_encode. Jednak tím získáš skutečný JSON (a tedy ne pouze javascriptový literál, který je z pohledu povolené syntaxe nadmnožinou JSONu), ale hlavně se vyhneš vlastnímu escapování (např. takový backslash na konci řetězce by v té původní verzi umožňoval SQL injekci).
Ano, to vse jsem zkousel, tedy jak group_concat_max_len tak i max_allowed_packet a i dalsi limity. Nastavoval jsem to o nekolik radu vic... Ale nic na to nemelo vliv... Navic text ktery byl useknut byl useknut funkci CONCAT a ne GROUP_CONCAT.

Ja uz to mam davno vyresene (opravene) a nikdo nevi jak, tak nechapu proc se mi tady stale nekdo snazi radit, jak to mam resit. Me pouze zajima pripadny limit CONCAT, abych vedel, az budu nekdy resil neco uplne jineho (OBECNE - co nebude mit s JSONem nic spolecneho), co muzu/nemuzu od DB ocekavat.

Ale diky za vecnou odpoved...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 17:01:24
S SQL moc nedělám, ale dle dokumentace ke GROUP_CONCAT (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat) je povolená velikost min(group_concat_max_len (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_group_concat_max_len), max_allowed_packet (http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet)). No a max_allowed_packet je definován jako "The maximum size of one packet or any generated/intermediate string.", takže bych čekal, že toto nastavení bude mít vliv i na CONCAT, resp. jakýkoliv řetězec.

Jinak, jak říkají ostatní - pokud by ses rozhodl upravit ten kód, tak si vyselekti z DB obyčejné hodnoty a použij json_encode. Jednak tím získáš skutečný JSON (a tedy ne pouze javascriptový literál, který je z pohledu povolené syntaxe nadmnožinou JSONu), ale hlavně se vyhneš vlastnímu escapování (např. takový backslash na konci řetězce by v té původní verzi umožňoval SQL injekci).
Jeste bych prosil o rozvedeni te pripadne SQL injektaze, nejaky priklad... Uplne tam tu diru nevidim a pokud tam je, tak bych se rad poucil... Diky. PS: na vstupni data (nez jsou ulozeny do DB) je zajiste pouzita escapovaci funkce... Zde se jedna pouze o vypis dat jiz ulozenych v DB...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Kit 28. 09. 2014, 17:40:40
PS: na vstupni data (nez jsou ulozeny do DB) je zajiste pouzita escapovaci funkce... Zde se jedna pouze o vypis dat jiz ulozenych v DB...

Použití escapovacích funkcí na vstupu nemá vliv na výstupní data, protože uvnitř databáze se data nachází v surové podobě. Escapování se týká pouze sestavování SQL dotazu - dnes se už escapování většinou nepoužívá.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Logik 28. 09. 2014, 18:11:18
Citace
Ja uz to mam davno vyresene (opravene) a nikdo nevi jak, tak nechapu proc se mi tady stale nekdo snazi radit, jak to mam resit.
Holt když do programátorskýho fóra dáš prasečinu, tak Ti to lidé povědí, i když nechceš. Obzvlášť když vystupuješ poměrně dosti arogantně,
přitom neumíš položit dotaz (screenshot místo kódu, vůbec jsi neuvedl, co bylo na tom výsledku špatně atd...),  dle screenshotu píšeš děravej kód a nevíš ani takovou základní věc, jako že v případě, kdy linuxovej program v terminálu zpracovává vstup od myši, tak je funkcionalita na kopírování textu dostupná při stlačeném shiftu :-) :-)
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Dzavy 28. 09. 2014, 18:14:32
Jestli jsi ještě pořád nedokázal vygooglit odpověď, tak tady píšou 1024: http://boulderapps.co/mysql-concat-limitation

Jinak fakt netušim co tady zase masturbujete nad problémem se screenshotem...to jste to hned chtěli všichni testovat a spouštět, abyste mohli odpovědět dostatečně sofistikovaně? A DB vytvořenou a naplněnou máte? Boha jeho...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Tomáš Crhonek 28. 09. 2014, 18:25:43
Mylis se, to co popisujes funguje pouze v terminalu, pokud otevres mc a pouzijes F4 a editujes nejaky soubor (primo v editoru mc), tak ta tvoje vychytavka nefunguje.
Kdyz se zeptam netere, ktera ma 3 roky, co mela k obedu, tak me neodpovi, ze venku sviti slunko. Bylo by fajn, kdyby si byl alespon na jeji urovni a kdyz se na neco zeptam, bud odpovedel na mou otazku nebo muj dotaz ignoroval...

Koukám, že kromě toho, že neumíte vybrat databázi, programovat, tak dokonce ani neumíte ovládat nástroje, pomocí kterých tvoříte. Z MC samozřejmě lze kopírovat věci pomocí myši. Jen se to (logicky) dělá nepatrně jinak, než pouhým označením myši a přetažením, protože mc je program napsaný v ncurses (a to už jsem napověděl víc, než jsem chtěl).
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 18:34:05
Citace
Ja uz to mam davno vyresene (opravene) a nikdo nevi jak, tak nechapu proc se mi tady stale nekdo snazi radit, jak to mam resit.
Holt když do programátorskýho fóra dáš prasečinu, tak Ti to lidé povědí, i když nechceš. Obzvlášť když vystupuješ poměrně dosti arogantně,
přitom neumíš položit dotaz (screenshot místo kódu, vůbec jsi neuvedl, co bylo na tom výsledku špatně atd...),  dle screenshotu píšeš děravej kód a nevíš ani takovou základní věc, jako že v případě, kdy linuxovej program v terminálu zpracovává vstup od myši, tak je funkcionalita na kopírování textu dostupná při stlačeném shiftu :-) :-)
ctrl+shift+v do terminalu pouzivam bezne (vkladani hesla z KeePassX atd), ale nevim o tom, ze by fungovalo ctrl+shift+c z terminalu do textoveho editoru... Jestli to funguje, tak si necham rad poradit...
No jo, sem uplne blbej, ale ja s tim dokazu zit... :-)
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 18:39:17
Jestli jsi ještě pořád nedokázal vygooglit odpověď, tak tady píšou 1024: http://boulderapps.co/mysql-concat-limitation

Jinak fakt netušim co tady zase masturbujete nad problémem se screenshotem...to jste to hned chtěli všichni testovat a spouštět, abyste mohli odpovědět dostatečně sofistikovaně? A DB vytvořenou a naplněnou máte? Boha jeho...
Podle tohoto navodu jsem to zkousel take (zajiste jsem po uprave konfiguraku shodil apache, restartoval MySQL a nahodil apache) a nepomohlo to, ale nejsem SQL guru, takze treba jsem neco delal spatne
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Kit 28. 09. 2014, 18:42:28
Jinak fakt netušim co tady zase masturbujete nad problémem se screenshotem...to jste to hned chtěli všichni testovat a spouštět, abyste mohli odpovědět dostatečně sofistikovaně? A DB vytvořenou a naplněnou máte? Boha jeho...

Jednak jsem si tu ukázku skriptu chtěl alespoň přečíst tak, abych se nemusel spoléhat na OCR. Otestovat a spustit kus zdrojáku není problém, vytvořit si databázi a naplnit ji nějakými náhodnými daty snad umíš také.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 18:43:28
Mylis se, to co popisujes funguje pouze v terminalu, pokud otevres mc a pouzijes F4 a editujes nejaky soubor (primo v editoru mc), tak ta tvoje vychytavka nefunguje.
Kdyz se zeptam netere, ktera ma 3 roky, co mela k obedu, tak me neodpovi, ze venku sviti slunko. Bylo by fajn, kdyby si byl alespon na jeji urovni a kdyz se na neco zeptam, bud odpovedel na mou otazku nebo muj dotaz ignoroval...

Koukám, že kromě toho, že neumíte vybrat databázi, programovat, tak dokonce ani neumíte ovládat nástroje, pomocí kterých tvoříte. Z MC samozřejmě lze kopírovat věci pomocí myši. Jen se to (logicky) dělá nepatrně jinak, než pouhým označením myši a přetažením, protože mc je program napsaný v ncurses (a to už jsem napověděl víc, než jsem chtěl).
:-)
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 18:54:09
Pokud si člověk otevře termínál, přihlásí se na server přes SSH, na serveru zadá příkaz mc a otevře si MC, tak nelze myší ani označovat text, ani používat ctrl-c, ctrl-v, jedná se o konzoli... Ale to člověk který ťuká neco ve MS Widlích nepochopí.
Opravdu je tak důležité řešit obrázek který s odpovědí (s dotazem) nesouvisí?

Opět se mýlíš. Windows nepoužívám a dokonce nepotřebuji ani "ctrl-c, ctrl-v", abych něco přetáhl z jedné konzoly do druhé. Levým myšítkem označím, postředním vložím. Ale to člověk který ťuká neco ve MS Widlích nepochopí.

Kromě obrázku jsi poslal jen dotaz na limit CONCAT. Odpověď jsi už dostal.
Mylis se, to co popisujes funguje pouze v terminalu, pokud otevres mc a pouzijes F4 a editujes nejaky soubor (primo v editoru mc), tak ta tvoje vychytavka nefunguje.
Kdyz se zeptam netere, ktera ma 3 roky, co mela k obedu, tak me neodpovi, ze venku sviti slunko. Bylo by fajn, kdyby si byl alespon na jeji urovni a kdyz se na neco zeptam, bud odpovedel na mou otazku nebo muj dotaz ignoroval...
OK - mas pravdu, funguje to i v MC, musi se oznacovat s mys + CTRL... V terminalu lze oznacit jen mysi bez toho CTRL... Taxem se neco priucil, dik... :-)
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: mareolan 28. 09. 2014, 20:24:52
Jeste bych prosil o rozvedeni te pripadne SQL injektaze, nejaky priklad... Uplne tam tu diru nevidim a pokud tam je, tak bych se rad poucil... Diky. PS: na vstupni data (nez jsou ulozeny do DB) je zajiste pouzita escapovaci funkce... Zde se jedna pouze o vypis dat jiz ulozenych v DB...

Omlouvám se, moje chyba - SQL injekce tam není, pouze může uživatel rozbít ten JSON (resp. JS literál). Pokud obsah v DATA bude na konci obsahovat backslash (což žádná z těch REPLACE funkcí neošetřuje), tak v JSONu bude DATA: 'obsah \', DATAEN: 'obsah v dataen', t.j. z pohledu JS literálu obsah klíče DATA je obsah ', DATAEN:
Dopady nemá smysl rozebírat, jelikož není známo, jak se s tím dál pracuje (navíc to nemusí být přesně, jak jsem psal, a to kvůli newline před DATAEN).

K tomu escapování před uložením do DB - data se zvyknou ukládat v surové podobě, ve smyslu ~"tak, jak je uživatel viděl ve vstupním poli, když je zadával". Samozřejmě, pouze validní. Pokud se tam dávají jinak, tak si člověk zadělává na problém, pokud je potřeba je dál zpracovat, což (časem) typicky potřeba je. Hodně triviální příklad - pokud bych chtěl někde vypsat pouze prvních X znaků z uložených dat a ukládám to předpřipravené pro HTML, t.j. místo < jsem uložil &lt;, tak se při oříznutí můžu trefit zrovna doprostřed entity.
To jen taková poznámka pod čarou ;).
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 28. 09. 2014, 21:20:51
Jeste bych prosil o rozvedeni te pripadne SQL injektaze, nejaky priklad... Uplne tam tu diru nevidim a pokud tam je, tak bych se rad poucil... Diky. PS: na vstupni data (nez jsou ulozeny do DB) je zajiste pouzita escapovaci funkce... Zde se jedna pouze o vypis dat jiz ulozenych v DB...

Omlouvám se, moje chyba - SQL injekce tam není, pouze může uživatel rozbít ten JSON (resp. JS literál). Pokud obsah v DATA bude na konci obsahovat backslash (což žádná z těch REPLACE funkcí neošetřuje), tak v JSONu bude DATA: 'obsah \', DATAEN: 'obsah v dataen', t.j. z pohledu JS literálu obsah klíče DATA je obsah ', DATAEN:
Dopady nemá smysl rozebírat, jelikož není známo, jak se s tím dál pracuje (navíc to nemusí být přesně, jak jsem psal, a to kvůli newline před DATAEN).

K tomu escapování před uložením do DB - data se zvyknou ukládat v surové podobě, ve smyslu ~"tak, jak je uživatel viděl ve vstupním poli, když je zadával". Samozřejmě, pouze validní. Pokud se tam dávají jinak, tak si člověk zadělává na problém, pokud je potřeba je dál zpracovat, což (časem) typicky potřeba je. Hodně triviální příklad - pokud bych chtěl někde vypsat pouze prvních X znaků z uložených dat a ukládám to předpřipravené pro HTML, t.j. místo < jsem uložil &lt;, tak se při oříznutí můžu trefit zrovna doprostřed entity.
To jen taková poznámka pod čarou ;).
Díky za tip, máte pravdu... Lomítko na konci by to poťapalo...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Dzavy 28. 09. 2014, 21:21:12
Jestli jsi ještě pořád nedokázal vygooglit odpověď, tak tady píšou 1024: http://boulderapps.co/mysql-concat-limitation

Jinak fakt netušim co tady zase masturbujete nad problémem se screenshotem...to jste to hned chtěli všichni testovat a spouštět, abyste mohli odpovědět dostatečně sofistikovaně? A DB vytvořenou a naplněnou máte? Boha jeho...
Podle tohoto navodu jsem to zkousel take (zajiste jsem po uprave konfiguraku shodil apache, restartoval MySQL a nahodil apache) a nepomohlo to, ale nejsem SQL guru, takze treba jsem neco delal spatne
Jak špatně? Proč proboha restart Apache? Tam jasně píšou, že CONCAT má limit 1024 znaků, kterej se nedá změnit, a celej ten článek je o nahrazení funkce CONCAT funkcí GROUP_CONCAT...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Dzavy 28. 09. 2014, 21:22:49
Jinak fakt netušim co tady zase masturbujete nad problémem se screenshotem...to jste to hned chtěli všichni testovat a spouštět, abyste mohli odpovědět dostatečně sofistikovaně? A DB vytvořenou a naplněnou máte? Boha jeho...

Jednak jsem si tu ukázku skriptu chtěl alespoň přečíst tak, abych se nemusel spoléhat na OCR. Otestovat a spustit kus zdrojáku není problém, vytvořit si databázi a naplnit ji nějakými náhodnými daty snad umíš také.
No to umim, ale pro odpověď na otázku mi to přijde trochu overkill...nebo Ty hned vždycky jako první věc testuješ všechny zdrojáky, když se někdo na něco ptá?
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: James_Scott 28. 09. 2014, 21:43:19
Při vší úctě,docela se divim že takovýmu "člověku" vůbec pomáháte...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Kit 28. 09. 2014, 21:52:56
...nebo Ty hned vždycky jako první věc testuješ všechny zdrojáky, když se někdo na něco ptá?

Pokud chci zdroják pochopit, tak si ho nejprve natáhnu do svého editoru, přeformátuji a obarvím syntaxi. Teprve pak ho začínám číst. Dřív to nemá smysl. Už při tom přeformátování například vidím chybějící závorky a středníky.

Pokud někomu chci odpovědět kusem kódu, zpravidla si ho nejprve otestuji, minimálně na syntaxi. V lepším případě si k němu vyrobím i test funkčnosti s několika mocky a stuby.

Ono to moc práce navíc nedá, možná minutu, ale získám tím další zkušenost. Když to někdo udělá jako screenshot, tak je to pro mne často nečitelné. Zejména pokud zvolí nevhodnou kombinaci písmo/pozadí. Také bývá velmi časté prťavé písmo, jako bylo i v tomto případě. Nedá se to ani pořádně zvětšit, protože pak se mi to nevejde na obrazovku - limit 80 znaků na řádek jako kdyby neexistoval.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Kit 28. 09. 2014, 21:56:29
Při vší úctě,docela se divim že takovýmu "člověku" vůbec pomáháte...

Při vší úctě, docela se divím, že jsi nenapsal žádný názor k tématu nebo alespoň ke stávajícímu off-topicu, ale vytváříš další off-topic.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 29. 09. 2014, 10:07:49
Při vší úctě,docela se divim že takovýmu "člověku" vůbec pomáháte...
:-* (_!_)
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 29. 09. 2014, 10:15:26
Jestli jsi ještě pořád nedokázal vygooglit odpověď, tak tady píšou 1024: http://boulderapps.co/mysql-concat-limitation

Jinak fakt netušim co tady zase masturbujete nad problémem se screenshotem...to jste to hned chtěli všichni testovat a spouštět, abyste mohli odpovědět dostatečně sofistikovaně? A DB vytvořenou a naplněnou máte? Boha jeho...
Podle tohoto navodu jsem to zkousel take (zajiste jsem po uprave konfiguraku shodil apache, restartoval MySQL a nahodil apache) a nepomohlo to, ale nejsem SQL guru, takze treba jsem neco delal spatne
Jak špatně? Proč proboha restart Apache? Tam jasně píšou, že CONCAT má limit 1024 znaků, kterej se nedá změnit, a celej ten článek je o nahrazení funkce CONCAT funkcí GROUP_CONCAT...
No, mám pocit, že CONCAT by se mělo odlimitovat spíše CONCAT_WS a že GROUP_CONCAT slouží k něčemu trochu jinému, ale raději už se tu nebudu o ničem rozepisovat... :-D
Máte pravdu, článek http://boulderapps.co/mysql-concat-limitation (http://boulderapps.co/mysql-concat-limitation) byl jeden z mnoha co na mě vypadlo z googlu a jen jsem se díval na řešení a přehlédl jsem, že je ten limit natvrdo a nedá se s ním hnout, MOJE CHYBA, OMLOUVÁM SE ZA ZBYTEČNÝ DOTAZ...
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: sj 29. 09. 2014, 11:20:48
Popravdě řečeno to nebyl až tak zbytečný dotaz. Minimálně já jsem rád že po 10+ letech uživatelského používání Linuxu dokážu zkopírovat z MC texty, to jsem dříve nevěděl (nenapadlo mě googlit a myslel jsem spíše že to nejde - což byla očividně hloupost). Obdobně i k tomu kódu byly nějaké užitečné poznámky.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Tomáš Crhonek 29. 09. 2014, 11:43:20
Popravdě řečeno to nebyl až tak zbytečný dotaz. Minimálně já jsem rád že po 10+ letech uživatelského používání Linuxu dokážu zkopírovat z MC texty, to jsem dříve nevěděl (nenapadlo mě googlit a myslel jsem spíše že to nejde - což byla očividně hloupost). Obdobně i k tomu kódu byly nějaké užitečné poznámky.

A přitom je to přímo v manuálu mc:

Mouse Support

...

If you are running the Midnight Commander with the mouse support, you can get the default mouse behavior (cutting and pasting text) by holding down the Shift key.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: Pavel... 29. 09. 2014, 12:17:47
A přitom je to přímo v manuálu mc:

Este sa Ti nestalo, ze si si jednoducho nepolozil otazku "ako v XXX pouzivat YYY" ?
Kto si ju polozil, ten to samozrejme hravo vygoogli.

Po bitke je kazdy general.
Název: Re:Existuje limit pro funkci CONCAT?
Přispěvatel: rade-brno 29. 09. 2014, 17:01:34
Popravdě řečeno to nebyl až tak zbytečný dotaz. Minimálně já jsem rád že po 10+ letech uživatelského používání Linuxu dokážu zkopírovat z MC texty, to jsem dříve nevěděl (nenapadlo mě googlit a myslel jsem spíše že to nejde - což byla očividně hloupost). Obdobně i k tomu kódu byly nějaké užitečné poznámky.
jj, presne tak, v 99% potrebuji vkladat do terminalu (hlavne hesla z KeePassX) coz funguje i v editoru MC (CTRL+SHIFT+V) a kdyz uz jsem fakt nejaky soubor potreboval, taxem si otevrel druhy MC, pres menu jsem se primo v MC prihlasil na SSH a pak uz se da normalne kopirovat na lokal... Po X letech jsem se rozhodl pouzivat pouze MC i v X11, abych jak na serveru tak na notasu delal ty samy veci stejne a nemusel si pamatovat ovladani (klavesove zkratky atd) zvlast pro MC a zvlast pro jiny GUI file manager...