Existuje limit pro funkci CONCAT?

mareolan

Re:Existuje limit pro funkci CONCAT?
« Odpověď #15 kdy: 28. 09. 2014, 16:35:01 »
S SQL moc nedělám, ale dle dokumentace ke GROUP_CONCAT je povolená velikost min(group_concat_max_len, 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).


rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #16 kdy: 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...

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #17 kdy: 28. 09. 2014, 16:53:59 »
S SQL moc nedělám, ale dle dokumentace ke GROUP_CONCAT je povolená velikost min(group_concat_max_len, 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...

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #18 kdy: 28. 09. 2014, 17:01:24 »
S SQL moc nedělám, ale dle dokumentace ke GROUP_CONCAT je povolená velikost min(group_concat_max_len, 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...

Kit

Re:Existuje limit pro funkci CONCAT?
« Odpověď #19 kdy: 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á.


Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re:Existuje limit pro funkci CONCAT?
« Odpověď #20 kdy: 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 :-) :-)

Dzavy

Re:Existuje limit pro funkci CONCAT?
« Odpověď #21 kdy: 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...

Re:Existuje limit pro funkci CONCAT?
« Odpověď #22 kdy: 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).

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #23 kdy: 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... :-)

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #24 kdy: 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

Kit

Re:Existuje limit pro funkci CONCAT?
« Odpověď #25 kdy: 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é.

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #26 kdy: 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).
:-)

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #27 kdy: 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... :-)

mareolan

Re:Existuje limit pro funkci CONCAT?
« Odpověď #28 kdy: 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 ;).

rade-brno

Re:Existuje limit pro funkci CONCAT?
« Odpověď #29 kdy: 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...