https://wiki.postgresql.org/api.php?action=feedcontributions&user=Cclavadetscher&feedformat=atom
PostgreSQL wiki - User contributions [en]
2024-03-29T10:14:13Z
User contributions
MediaWiki 1.35.13
https://wiki.postgresql.org/index.php?title=JSON_compact&diff=38689
JSON compact
2024-02-29T11:19:24Z
<p>Cclavadetscher: Created page with "{{SnippetInfo|JSON compact|version=9.4+|lang=plpgsql}} In some cases you may want to remove all unnecessary noise from a JSON document, in particular if you plan to store it..."</p>
<hr />
<div>{{SnippetInfo|JSON compact|version=9.4+|lang=plpgsql}}<br />
<br />
In some cases you may want to remove all unnecessary noise from a JSON document, in particular if you plan to store it in your DB. This snippet does exactly this task.<br />
<br />
<source lang="sql"><br />
CREATE OR REPLACE FUNCTION public.json_compact(p_json JSON,<br />
p_step INTEGER DEFAULT 0)<br />
RETURNS JSON<br />
AS $$<br />
DECLARE<br />
v_type TEXT;<br />
v_text TEXT := '';<br />
v_indent INTEGER;<br />
v_key TEXT;<br />
v_object JSON;<br />
v_count INTEGER;<br />
BEGIN<br />
p_step := coalesce(p_step, 0);<br />
-- Object or array?<br />
v_type := json_typeof(p_json);<br />
<br />
IF v_type = 'object' THEN<br />
-- Start object<br />
v_text := '{';<br />
SELECT count(*) - 1 INTO v_count<br />
FROM json_object_keys(p_json);<br />
-- go through keys, add them and recurse over value<br />
FOR v_key IN (SELECT json_object_keys(p_json))<br />
LOOP<br />
v_text := v_text || to_json(v_key)::TEXT || ':' || public.json_compact(p_json->v_key, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
--v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close object<br />
v_text := v_text || '}';<br />
ELSIF v_type = 'array' THEN<br />
-- Start array<br />
v_text := '[';<br />
v_count := json_array_length(p_json) - 1;<br />
-- go through elements and add them through recursion<br />
FOR v_object IN (SELECT json_array_elements(p_json))<br />
LOOP<br />
v_text := v_text || public.json_compact(v_object, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
--v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close array<br />
v_text := v_text || ']';<br />
ELSE -- A simple value<br />
v_text := v_text || p_json::TEXT;<br />
END IF;<br />
IF p_step > 0 THEN RETURN v_text;<br />
ELSE RETURN v_text::JSON;<br />
END IF;<br />
END;<br />
$$ LANGUAGE plpgsql;<br />
<br />
COMMENT ON FUNCTION public.json_compact(p_json JSON,<br />
p_step INTEGER)<br />
IS $$Return a JSON document in a compact JSON suitable for storing in the DB.<br />
Parameters:<br />
* p_json: The JSON document to be compacted.<br />
* p_step: Optional: This parameter is used for recursion in the document structure. You are not supposed to use it.$$;<br />
</source></div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=JSON_pretty&diff=38688
JSON pretty
2024-02-29T11:16:01Z
<p>Cclavadetscher: </p>
<hr />
<div>{{SnippetInfo|JSON pretty|version=9.4+|lang=plpgsql}}<br />
<br />
Version 9.5 introduced JSONB and with it jsonb_pretty. So it is very easy to prettify a JSON document casting it first<br />
to JSONB and using the built-in function jsonb_pretty.<br />
<br />
However, if you need to keep the order of the keys in your document or if you have<br />
repeated keys you may want to use this function instead.<br />
<br />
<source lang="sql"><br />
CREATE OR REPLACE FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER DEFAULT 4,<br />
p_step INTEGER DEFAULT 0)<br />
RETURNS JSON<br />
AS $$<br />
DECLARE<br />
v_type TEXT;<br />
v_text TEXT := '';<br />
v_indent INTEGER;<br />
v_key TEXT;<br />
v_object JSON;<br />
v_count INTEGER;<br />
BEGIN<br />
v_indent := coalesce(p_indent_size, 4);<br />
p_step := coalesce(p_step, 0);<br />
-- Object or array?<br />
v_type := json_typeof(p_json);<br />
<br />
IF v_type = 'object' THEN<br />
-- Start object<br />
v_text := E'{\n';<br />
SELECT count(*) - 1 INTO v_count<br />
FROM json_object_keys(p_json);<br />
-- go through keys, add them and recurse over value<br />
FOR v_key IN (SELECT json_object_keys(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || to_json(v_key)::TEXT || ': ' || public.json_pretty(p_json->v_key, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close object<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || '}';<br />
ELSIF v_type = 'array' THEN<br />
-- Start array<br />
v_text := E'[\n';<br />
v_count := json_array_length(p_json) - 1;<br />
-- go through elements and add them through recursion<br />
FOR v_object IN (SELECT json_array_elements(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || public.json_pretty(v_object, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close array<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || ']';<br />
ELSE -- A simple value<br />
v_text := v_text || p_json::TEXT;<br />
END IF;<br />
IF p_step > 0 THEN RETURN v_text;<br />
ELSE RETURN v_text::JSON;<br />
END IF;<br />
END;<br />
$$ LANGUAGE plpgsql;<br />
<br />
COMMENT ON FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER,<br />
p_step INTEGER)<br />
IS $$Return a JSON document as a formatted JSON suitable for better reading from humans.<br />
Parameters:<br />
* p_json: The JSON document to be formatted.<br />
* p_indent_size: Optional: The number of blanks to be used for indenting. Default is 4.<br />
* p_step: Optional: This parameter is used for recursion in the document structure. You are not supposed to use it. If you use it, your formatted document will be shifted to the right by an amount corresponding to p_indent_size * p_step.$$;<br />
</source><br />
<br />
=== Usage ===<br />
<source lang="sql"><br />
db=> select * from public.json_pretty('{"a":"2","c":{"b":2, "b":4, "F":{"U1":14,"U2":"Hallo Welt"}},"array":["a","c",2,{"F":"obj in array"}, [8, 9, 10, "undici"]],"m":7567,"N":{"xyz":"uid"}}');<br />
json_pretty<br />
---------------------------------<br />
{ +<br />
"a": "2", +<br />
"c": { +<br />
"b": 4, +<br />
"b": 4, +<br />
"F": { +<br />
"U1": 14, +<br />
"U2": "Hallo Welt" +<br />
} +<br />
}, +<br />
"array": [ +<br />
"a", +<br />
"c", +<br />
2, +<br />
{ +<br />
"F": "obj in array"+<br />
}, +<br />
[ +<br />
8, +<br />
9, +<br />
10, +<br />
"undici" +<br />
] +<br />
], +<br />
"m": 7567, +<br />
"N": { +<br />
"xyz": "uid" +<br />
} +<br />
}<br />
(1 row)<br />
</source><br />
<br />
You may want to set the output format to unaligned to remove the the table decoration.<br />
<br />
[[Category:{{{category|}}} Snippets]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=PostgreSQL_Related_Slides_and_Presentations&diff=33618
PostgreSQL Related Slides and Presentations
2019-07-03T10:46:13Z
<p>Cclavadetscher: </p>
<hr />
<div>Here you can find links to various PostgreSQL related presentations<br />
<br />
* [http://www.pgday.ch/2019#tabs-4 Swiss PGDay 2019]<br />
* [[FOSDEM_2019|FOSDEM, Brussels 2019]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2018|PostgreSQL Conference Europe 2018]]<br />
* [[PostgreSQL_Meetup_Geneve_2018_Oct|PostgreSQL Meetup Genève, 2018-10-11]]<br />
* [[PostgreSQL_Conference_Brazil_Talks_2018|PGConf Brazil 2018]]<br />
* [http://www.pgday.ch/2018#tabs-4 Swiss PGDay 2018]<br />
* [[PG_Day_France_2018|PG Day France 2018]]<br />
* [[SCALE16x|PostgreSQL@SCaLE Conference 2018]]<br />
* [https://www.postgresql.eu/events/schedule/pgconfeu2017/ PGConf EU 2017]<br />
* [[Postgres_Open_2017|Postgres Open SV 2017]]<br />
* [http://www.pgday.ch/2017#tabs-4 Swiss PGDay 2017]<br />
* [[PgConfUS_Talks_2017|PGConf US 2017]]<br />
* [[PgDay_Paris_2017|PGDay Paris 2017]]<br />
* [[Nordic_PGDay_2017|Nordic PGDay 2017]]<br />
* [[SCALE15x|PostgreSQL@SCaLE Conference 2017]]<br />
* [[FOSDEM_2017|FOSDEM, Brussels 2017]]<br />
* [[PGConf.Asia_2016|PGConf.Asia 2016]]<br />
* [[PgConfSV_Talks_2016|PGConf SV 2016]]<br />
* [[PGDay_Austin_2016|PGDay Austin 2016]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2016|PostgreSQL Conference Europe 2016]]<br />
* [[PgConfUS_Talks_2016|PGConf US 2016]]<br />
* [http://www.pgday.ch/2016#tabs-4 Swiss PGDay 2016]<br />
* [[PGConf.ru 2016|PGConf.ru, Moscow 2016]]<br />
* [[FOSDEM_2016|FOSDEM, Brussels 2016]]<br />
* [[SCALE14x|PostgreSQL@SCaLE Conference 2016]]<br />
* [[German-Speaking_PostgreSQL_Conference_2015|German speaking PostgreSQL Conference 2015]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2015|PostgreSQL Conference Europe 2015]]<br />
* [[pg_session_7|PostgreSQL Sessions #7 Sep, 2015]]<br />
* [[Postgres_Open_2015|PostgresOpen 2015]]<br />
* [[pgDay_Paris_2015|pgDay Paris 2015]]<br />
* [[PgConfUS_Talks_2015|PGConf US 2015]]<br />
* [[Nordic_PGDay_2015|Nordic PGDay, Copenhagen, 2015]]<br />
* [[FOSDEM_2015|FOSDEM, Brussels 2015]]<br />
* [http://vimeo.com/110472415 Level Up Conference 2014 | Craig Kersteins | Postgres: A Data Platform]<br />
* [[PostgreSQL_Conference_Europe_Talks_2014|PostgreSQL Conference Europe Talks 2014]]<br />
* [[PostgreSQL_Meetup_Paris_2014_Sept|PostgreSQL Meetup Paris, 2014-09-08]]<br />
* [[PGConf_NYC_2014_Talks|PGConf NYC 2014]]<br />
* [[Nordic_PGDay_2014|Nordic PGDay, Stockholm, 2014]]<br />
* [[PGDay_SCALE12x|PgDay SCALE 12x, 2014]]<br />
* [[FOSDEM_2014|FOSDEM, Brussels 2014]]<br />
* [[PGDay_Argentina_2013|PgDay Argentina 2013]]<br />
* [[German-Speaking PostgreSQL Conference 2013 | PGConf.DE 2013 - German-Speaking PostgreSQL Conference 2013]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2013|PostgreSQL Conference Europe 2013]]<br />
* [[Postgres Open 2013]]<br />
* [[PGCon, Ottawa 2013]]<br />
* [[PGDay_NYC_2013_Talks|PGDay NYC 2013]]<br />
* [[FOSDEM_2013|FOSDEM, Brussels 2013]]<br />
* [[PGDay_Argentina_2012|PgDay Argentina 2012]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2012|PostgreSQL Conference Europe 2012]]<br />
* [[Postgres Open 2012]]<br />
* [[German-Speaking PostgreSQL Conference 2011|PGConf.DE 2011]]<br />
* [[PGBR 2011, São Paulo]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2011|PostgreSQL Conference Europe 2011]]<br />
* [[Postgres_Open_Talks_2011|Postgres Open 2011]]<br />
* [[FOSDEM, Brussels 2010]]<br />
* [[PGDay.EU, Paris 2009]]<br />
* [[PGCon, Ottawa 2009]]<br />
* [[FOSDEM, Brussels 2009]]<br />
* [http://www.arpug.com.ar/trac/wiki/PgDay2008 PgDay 2008 Rio de la Plata (Argentina)]<br />
* [[European PGDay 2008]]<br />
* [[Netways Nagios Conference 2008]]<br />
* [[FrOSCon, St. Augustin (near Bonn, Germany) 2008]]<br />
* [[PostgreSQLConferenceWest2008]]<br />
* [[PG UK 2008]]<br />
* [[FOSDEM, Brussels 2008]]<br />
* [http://postgresql.org.br/Palestras_do_PGCon_Brasil_2008 PGCon Brazil 2008]<br />
* [http://postgresql.org.br/Palestras_do_PGCon_Brasil_2007 PGCon Brazil 2007]<br />
* [[OSCon 2005]]<br />
* [[OSCon 2004]]<br />
* [[:Image:NUUG2005.pdf|NUUG 2005]]<br />
* [http://momjian.us/main/writings/computer.html Bruce Momjian Presentations]<br />
* [[PUG_Presentations]]<br />
* [http://www.postgresql.org/developer/coding PostgreSQL Coding]<br />
<br />
[[Category:Community]]<br />
[[Category:PostgreSQL Events]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=PostgreSQL_Related_Slides_and_Presentations&diff=33617
PostgreSQL Related Slides and Presentations
2019-07-03T10:45:28Z
<p>Cclavadetscher: </p>
<hr />
<div>Here you can find links to various PostgreSQL related presentations<br />
<br />
* [http://www.pgday.ch/2019#tabs-4 Swiss PGDay 2019]<br />
* [[FOSDEM_2019|FOSDEM, Brussels 2019]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2018|PostgreSQL Conference Europe 2018]]<br />
* [[PostgreSQL_Meetup_Geneve_2018_Oct|PostgreSQL Meetup Genève, 2018-10-11]]<br />
* [[PostgreSQL_Conference_Brazil_Talks_2018|PGConf Brazil 2018]]<br />
* [[PG_Day_France_2018|PG Day France 2018]]<br />
* [[SCALE16x|PostgreSQL@SCaLE Conference 2018]]<br />
* [https://www.postgresql.eu/events/schedule/pgconfeu2017/ PGConf EU 2017]<br />
* [[Postgres_Open_2017|Postgres Open SV 2017]]<br />
* [http://www.pgday.ch/2017#tabs-4 Swiss PGDay 2017]<br />
* [[PgConfUS_Talks_2017|PGConf US 2017]]<br />
* [[PgDay_Paris_2017|PGDay Paris 2017]]<br />
* [[Nordic_PGDay_2017|Nordic PGDay 2017]]<br />
* [[SCALE15x|PostgreSQL@SCaLE Conference 2017]]<br />
* [[FOSDEM_2017|FOSDEM, Brussels 2017]]<br />
* [[PGConf.Asia_2016|PGConf.Asia 2016]]<br />
* [[PgConfSV_Talks_2016|PGConf SV 2016]]<br />
* [[PGDay_Austin_2016|PGDay Austin 2016]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2016|PostgreSQL Conference Europe 2016]]<br />
* [[PgConfUS_Talks_2016|PGConf US 2016]]<br />
* [http://www.pgday.ch/2016#tabs-4 Swiss PGDay 2016]<br />
* [[PGConf.ru 2016|PGConf.ru, Moscow 2016]]<br />
* [[FOSDEM_2016|FOSDEM, Brussels 2016]]<br />
* [[SCALE14x|PostgreSQL@SCaLE Conference 2016]]<br />
* [[German-Speaking_PostgreSQL_Conference_2015|German speaking PostgreSQL Conference 2015]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2015|PostgreSQL Conference Europe 2015]]<br />
* [[pg_session_7|PostgreSQL Sessions #7 Sep, 2015]]<br />
* [[Postgres_Open_2015|PostgresOpen 2015]]<br />
* [[pgDay_Paris_2015|pgDay Paris 2015]]<br />
* [[PgConfUS_Talks_2015|PGConf US 2015]]<br />
* [[Nordic_PGDay_2015|Nordic PGDay, Copenhagen, 2015]]<br />
* [[FOSDEM_2015|FOSDEM, Brussels 2015]]<br />
* [http://vimeo.com/110472415 Level Up Conference 2014 | Craig Kersteins | Postgres: A Data Platform]<br />
* [[PostgreSQL_Conference_Europe_Talks_2014|PostgreSQL Conference Europe Talks 2014]]<br />
* [[PostgreSQL_Meetup_Paris_2014_Sept|PostgreSQL Meetup Paris, 2014-09-08]]<br />
* [[PGConf_NYC_2014_Talks|PGConf NYC 2014]]<br />
* [[Nordic_PGDay_2014|Nordic PGDay, Stockholm, 2014]]<br />
* [[PGDay_SCALE12x|PgDay SCALE 12x, 2014]]<br />
* [[FOSDEM_2014|FOSDEM, Brussels 2014]]<br />
* [[PGDay_Argentina_2013|PgDay Argentina 2013]]<br />
* [[German-Speaking PostgreSQL Conference 2013 | PGConf.DE 2013 - German-Speaking PostgreSQL Conference 2013]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2013|PostgreSQL Conference Europe 2013]]<br />
* [[Postgres Open 2013]]<br />
* [[PGCon, Ottawa 2013]]<br />
* [[PGDay_NYC_2013_Talks|PGDay NYC 2013]]<br />
* [[FOSDEM_2013|FOSDEM, Brussels 2013]]<br />
* [[PGDay_Argentina_2012|PgDay Argentina 2012]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2012|PostgreSQL Conference Europe 2012]]<br />
* [[Postgres Open 2012]]<br />
* [[German-Speaking PostgreSQL Conference 2011|PGConf.DE 2011]]<br />
* [[PGBR 2011, São Paulo]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2011|PostgreSQL Conference Europe 2011]]<br />
* [[Postgres_Open_Talks_2011|Postgres Open 2011]]<br />
* [[FOSDEM, Brussels 2010]]<br />
* [[PGDay.EU, Paris 2009]]<br />
* [[PGCon, Ottawa 2009]]<br />
* [[FOSDEM, Brussels 2009]]<br />
* [http://www.arpug.com.ar/trac/wiki/PgDay2008 PgDay 2008 Rio de la Plata (Argentina)]<br />
* [[European PGDay 2008]]<br />
* [[Netways Nagios Conference 2008]]<br />
* [[FrOSCon, St. Augustin (near Bonn, Germany) 2008]]<br />
* [[PostgreSQLConferenceWest2008]]<br />
* [[PG UK 2008]]<br />
* [[FOSDEM, Brussels 2008]]<br />
* [http://postgresql.org.br/Palestras_do_PGCon_Brasil_2008 PGCon Brazil 2008]<br />
* [http://postgresql.org.br/Palestras_do_PGCon_Brasil_2007 PGCon Brazil 2007]<br />
* [[OSCon 2005]]<br />
* [[OSCon 2004]]<br />
* [[:Image:NUUG2005.pdf|NUUG 2005]]<br />
* [http://momjian.us/main/writings/computer.html Bruce Momjian Presentations]<br />
* [[PUG_Presentations]]<br />
* [http://www.postgresql.org/developer/coding PostgreSQL Coding]<br />
<br />
[[Category:Community]]<br />
[[Category:PostgreSQL Events]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=PostgreSQL_Conference_Europe_Talks_2018&diff=32734
PostgreSQL Conference Europe Talks 2018
2018-11-19T07:12:56Z
<p>Cclavadetscher: </p>
<hr />
<div>Most Slides can be retrieved visiting the website of the conference:<br />
<br />
[https://www.postgresql.eu/events/pgconfeu2018/schedule/ https://www.postgresql.eu/events/pgconfeu2018/schedule/]<br />
<br />
Follow the links to the talks in the schedule. If speakers have delivered their slides, you will find them there.<br />
<br />
Here are direct links to the same slides (alphabetical order):<br />
<br />
* Lætitia Avrot, [https://loxo-conferences.gitlab.io/slides/psql_en_public.html#/ Be efficient, Use PSQL]<br />
* Charles Clavadetscher, [https://www.postgresql.eu/events/pgconfeu2018/sessions/session/2030/slides/90/clavadetscher_range_types_pgconf_eu_2018.pdf Time Related Range Types Revisited]<br />
* Dimitri Fontaine, [https://www.postgresql.eu/events/pgconfeu2018/sessions/session/2023/slides/124/DataModeling.pdf Data Modeling, Normalization and Denormalisation]<br />
* Andreas Scherbaum, [https://andreas.scherbaum.la/writings/Tour_de_Data_Types_-_pgconf.eu_2018.pdf Tour de (PostgreSQL) Data Types]<br />
* Rubens Souza, [https://prezi.com/eqgivycl-u2d/fast-not-furious-what-a-benchmark-can-tell-you/ Fast, not furious - What a benchmark can tell you]<br />
* Gülçin Yıldırım Jelínek, [https://slides.com/apatheticmagpie/postgres-modern-pgconfeu#/ PostgreSQL is NOT your traditional SQL database]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=PostgreSQL_Conference_Europe_Talks_2018&diff=32733
PostgreSQL Conference Europe Talks 2018
2018-11-19T06:45:35Z
<p>Cclavadetscher: Created page with "Most Slides can be retrieved visiting the website of the conference: [https://www.postgresql.eu/events/pgconfeu2018/schedule/ https://www.postgresql.eu/events/pgconfeu2018/sc..."</p>
<hr />
<div>Most Slides can be retrieved visiting the website of the conference:<br />
<br />
[https://www.postgresql.eu/events/pgconfeu2018/schedule/ https://www.postgresql.eu/events/pgconfeu2018/schedule/]<br />
<br />
Follow the links to the talks in the schedule. If speakers have delivered their slides, you will find them there.<br />
<br />
Here are direct links to the same slides (alphabetical order):<br />
<br />
* Lætitia Avrot, [https://loxo-conferences.gitlab.io/slides/psql_en_public.html#/ Be efficient, Use PSQL]<br />
* Charles Clavadetscher, [https://www.postgresql.eu/events/pgconfeu2018/sessions/session/2030/slides/90/clavadetscher_range_types_pgconf_eu_2018.pdf Time Related Range Types Revisited]<br />
* Gülçin Yıldırım Jelínek, [https://slides.com/apatheticmagpie/postgres-modern-pgconfeu#/ PostgreSQL is NOT your traditional SQL database]<br />
* Andreas Scherbaum, [https://andreas.scherbaum.la/writings/Tour_de_Data_Types_-_pgconf.eu_2018.pdf Tour de (PostgreSQL) Data Types]<br />
* Rubens Souza, [https://prezi.com/eqgivycl-u2d/fast-not-furious-what-a-benchmark-can-tell-you/ Fast, not furious - What a benchmark can tell you]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=PostgreSQL_Related_Slides_and_Presentations&diff=32732
PostgreSQL Related Slides and Presentations
2018-11-19T06:33:16Z
<p>Cclavadetscher: </p>
<hr />
<div>Here you can find links to various PostgreSQL related presentations<br />
<br />
* [[PostgreSQL_Conference_Europe_Talks_2018|PostgreSQL Conference Europe 2018]]<br />
* [[PostgreSQL_Meetup_Geneve_2018_Oct|PostgreSQL Meetup Genève, 2018-10-11]]<br />
* [[PostgreSQL_Conference_Brazil_Talks_2018|PGConf Brazil 2018]]<br />
* [[PG_Day_France_2018|PG Day France 2018]]<br />
* [[SCALE16x|PostgreSQL@SCaLE Conference 2018]]<br />
* [https://www.postgresql.eu/events/schedule/pgconfeu2017/ PGConf EU 2017]<br />
* [[Postgres_Open_2017|Postgres Open SV 2017]]<br />
* [http://www.pgday.ch/2017#tabs-4 Swiss PGDay 2017]<br />
* [[PgConfUS_Talks_2017|PGConf US 2017]]<br />
* [[PgDay_Paris_2017|PGDay Paris 2017]]<br />
* [[Nordic_PGDay_2017|Nordic PGDay 2017]]<br />
* [[SCALE15x|PostgreSQL@SCaLE Conference 2017]]<br />
* [[FOSDEM_2017|FOSDEM, Brussels 2017]]<br />
* [[PGConf.Asia_2016|PGConf.Asia 2016]]<br />
* [[PgConfSV_Talks_2016|PGConf SV 2016]]<br />
* [[PGDay_Austin_2016|PGDay Austin 2016]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2016|PostgreSQL Conference Europe 2016]]<br />
* [[PgConfUS_Talks_2016|PGConf US 2016]]<br />
* [http://www.pgday.ch/2016#tabs-4 Swiss PGDay 2016]<br />
* [[PGConf.ru 2016|PGConf.ru, Moscow 2016]]<br />
* [[FOSDEM_2016|FOSDEM, Brussels 2016]]<br />
* [[SCALE14x|PostgreSQL@SCaLE Conference 2016]]<br />
* [[German-Speaking_PostgreSQL_Conference_2015|German speaking PostgreSQL Conference 2015]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2015|PostgreSQL Conference Europe 2015]]<br />
* [[pg_session_7|PostgreSQL Sessions #7 Sep, 2015]]<br />
* [[Postgres_Open_2015|PostgresOpen 2015]]<br />
* [[pgDay_Paris_2015|pgDay Paris 2015]]<br />
* [[PgConfUS_Talks_2015|PGConf US 2015]]<br />
* [[Nordic_PGDay_2015|Nordic PGDay, Copenhagen, 2015]]<br />
* [[FOSDEM_2015|FOSDEM, Brussels 2015]]<br />
* [http://vimeo.com/110472415 Level Up Conference 2014 | Craig Kersteins | Postgres: A Data Platform]<br />
* [[PostgreSQL_Conference_Europe_Talks_2014|PostgreSQL Conference Europe Talks 2014]]<br />
* [[PostgreSQL_Meetup_Paris_2014_Sept|PostgreSQL Meetup Paris, 2014-09-08]]<br />
* [[PGConf_NYC_2014_Talks|PGConf NYC 2014]]<br />
* [[Nordic_PGDay_2014|Nordic PGDay, Stockholm, 2014]]<br />
* [[PGDay_SCALE12x|PgDay SCALE 12x, 2014]]<br />
* [[FOSDEM_2014|FOSDEM, Brussels 2014]]<br />
* [[PGDay_Argentina_2013|PgDay Argentina 2013]]<br />
* [[German-Speaking PostgreSQL Conference 2013 | PGConf.DE 2013 - German-Speaking PostgreSQL Conference 2013]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2013|PostgreSQL Conference Europe 2013]]<br />
* [[Postgres Open 2013]]<br />
* [[PGCon, Ottawa 2013]]<br />
* [[PGDay_NYC_2013_Talks|PGDay NYC 2013]]<br />
* [[FOSDEM_2013|FOSDEM, Brussels 2013]]<br />
* [[PGDay_Argentina_2012|PgDay Argentina 2012]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2012|PostgreSQL Conference Europe 2012]]<br />
* [[Postgres Open 2012]]<br />
* [[German-Speaking PostgreSQL Conference 2011|PGConf.DE 2011]]<br />
* [[PGBR 2011, São Paulo]]<br />
* [[PostgreSQL_Conference_Europe_Talks_2011|PostgreSQL Conference Europe 2011]]<br />
* [[Postgres_Open_Talks_2011|Postgres Open 2011]]<br />
* [[FOSDEM, Brussels 2010]]<br />
* [[PGDay.EU, Paris 2009]]<br />
* [[PGCon, Ottawa 2009]]<br />
* [[FOSDEM, Brussels 2009]]<br />
* [http://www.arpug.com.ar/trac/wiki/PgDay2008 PgDay 2008 Rio de la Plata (Argentina)]<br />
* [[European PGDay 2008]]<br />
* [[Netways Nagios Conference 2008]]<br />
* [[FrOSCon, St. Augustin (near Bonn, Germany) 2008]]<br />
* [[PostgreSQLConferenceWest2008]]<br />
* [[PG UK 2008]]<br />
* [[FOSDEM, Brussels 2008]]<br />
* [http://postgresql.org.br/Palestras_do_PGCon_Brasil_2008 PGCon Brazil 2008]<br />
* [http://postgresql.org.br/Palestras_do_PGCon_Brasil_2007 PGCon Brazil 2007]<br />
* [[OSCon 2005]]<br />
* [[OSCon 2004]]<br />
* [[:Image:NUUG2005.pdf|NUUG 2005]]<br />
* [http://momjian.us/main/writings/computer.html Bruce Momjian Presentations]<br />
* [[PUG_Presentations]]<br />
* [http://www.postgresql.org/developer/coding PostgreSQL Coding]<br />
<br />
[[Category:Community]]<br />
[[Category:PostgreSQL Events]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=JSON_pretty&diff=32724
JSON pretty
2018-11-14T12:58:39Z
<p>Cclavadetscher: </p>
<hr />
<div>{{SnippetInfo|JSON pretty|version=9.4+|lang=plpgsql}}<br />
<br />
Version 9.5 introduced JSONB and with it jsonb_pretty. So it is very easy to prettify a JSON document casting it first<br />
to JSONB and using the built-in function jsonb_pretty.<br />
<br />
However, if you need to keep the order of the keys in your document or if you have<br />
repeated keys you may want to use this function instead.<br />
<br />
<source lang="sql"><br />
CREATE OR REPLACE FUNCTION json_pretty(p_json JSON,<br />
p_indent_size INTEGER DEFAULT 4,<br />
p_step INTEGER DEFAULT 0)<br />
RETURNS TEXT<br />
AS $$<br />
DECLARE<br />
v_type TEXT;<br />
v_text TEXT := '';<br />
v_indent INTEGER;<br />
v_key TEXT;<br />
v_object JSON;<br />
v_count INTEGER;<br />
BEGIN<br />
v_indent := coalesce(p_indent_size, 4);<br />
p_step := coalesce(p_step, 0);<br />
-- Object or array?<br />
v_type := json_typeof(p_json);<br />
<br />
IF v_type = 'object' THEN<br />
-- Start object<br />
v_text := E'{\n';<br />
SELECT count(*) - 1 INTO v_count<br />
FROM json_object_keys(p_json);<br />
-- go through keys, add them and recurse over value<br />
FOR v_key IN (SELECT json_object_keys(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || to_json(v_key)::TEXT || ': ' || public.json_pretty(p_json->v_key, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close object<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || '}';<br />
ELSIF v_type = 'array' THEN<br />
-- Start array<br />
v_text := E'[\n';<br />
v_count := json_array_length(p_json) - 1;<br />
-- go through elements and add them through recursion<br />
FOR v_object IN (SELECT json_array_elements(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || public.json_pretty(v_object, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close array<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || ']';<br />
ELSE -- A simple value<br />
v_text := v_text || p_json::TEXT;<br />
END IF;<br />
RETURN v_text;<br />
END;<br />
$$ LANGUAGE plpgsql;<br />
<br />
COMMENT ON FUNCTION json_pretty(p_json JSON,<br />
p_indent_size INTEGER,<br />
p_step INTEGER)<br />
IS $$Return a JSON document as a formatted text suitable for better reading from humans.<br />
Parameters:<br />
* p_json: The JSON document to be formatted.<br />
* p_indent_size: Optional: The number of blanks to be used for indenting. Default is 4.<br />
* p_step: Optional: This parameter is used for recursion in the document structure. You are not supposed to use it. If you use it, your formatted document will be shifted to the right by an amount corresponding to p_indent_size * p_step.$$;<br />
</source><br />
<br />
=== Usage ===<br />
<source lang="sql"><br />
db=> select * from public.json_pretty('{"a":"2","c":{"b":2, "b":4, "F":{"U1":14,"U2":"Hallo Welt"}},"array":["a","c",2,{"F":"obj in array"}, [8, 9, 10, "undici"]],"m":7567,"N":{"xyz":"uid"}}');<br />
json_pretty<br />
---------------------------------<br />
{ +<br />
"a": "2", +<br />
"c": { +<br />
"b": 4, +<br />
"b": 4, +<br />
"F": { +<br />
"U1": 14, +<br />
"U2": "Hallo Welt" +<br />
} +<br />
}, +<br />
"array": [ +<br />
"a", +<br />
"c", +<br />
2, +<br />
{ +<br />
"F": "obj in array"+<br />
}, +<br />
[ +<br />
8, +<br />
9, +<br />
10, +<br />
"undici" +<br />
] +<br />
], +<br />
"m": 7567, +<br />
"N": { +<br />
"xyz": "uid" +<br />
} +<br />
}<br />
(1 row)<br />
</source><br />
<br />
You may want to set the output format to unaligned to remove the the table decoration.<br />
<br />
[[Category:{{{category|}}} Snippets]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=JSON_pretty&diff=32723
JSON pretty
2018-11-14T12:58:06Z
<p>Cclavadetscher: </p>
<hr />
<div>{{SnippetInfo|JSON pretty|version=9.4+|lang=plpgsql}}<br />
<br />
Version 9.5 introduced JSONB and with it jsonb_pretty. So it is very easy to prettify a JSON document casting it first<br />
to JSONB and using the built-in function jsonb_pretty.<br />
<br />
However, if you need to keep the order of the keys in your document or if you have<br />
repeated keys you may want to use this function instead.<br />
<br />
<source lang="sql"><br />
CREATE OR REPLACE FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER DEFAULT 4,<br />
p_step INTEGER DEFAULT 0)<br />
RETURNS TEXT<br />
AS $$<br />
DECLARE<br />
v_type TEXT;<br />
v_text TEXT := '';<br />
v_indent INTEGER;<br />
v_key TEXT;<br />
v_object JSON;<br />
v_count INTEGER;<br />
BEGIN<br />
v_indent := coalesce(p_indent_size, 4);<br />
p_step := coalesce(p_step, 0);<br />
-- Object or array?<br />
v_type := json_typeof(p_json);<br />
<br />
IF v_type = 'object' THEN<br />
-- Start object<br />
v_text := E'{\n';<br />
SELECT count(*) - 1 INTO v_count<br />
FROM json_object_keys(p_json);<br />
-- go through keys, add them and recurse over value<br />
FOR v_key IN (SELECT json_object_keys(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || to_json(v_key)::TEXT || ': ' || public.json_pretty(p_json->v_key, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close object<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || '}';<br />
ELSIF v_type = 'array' THEN<br />
-- Start array<br />
v_text := E'[\n';<br />
v_count := json_array_length(p_json) - 1;<br />
-- go through elements and add them through recursion<br />
FOR v_object IN (SELECT json_array_elements(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || public.json_pretty(v_object, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close array<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || ']';<br />
ELSE -- A simple value<br />
v_text := v_text || p_json::TEXT;<br />
END IF;<br />
RETURN v_text;<br />
END;<br />
$$ LANGUAGE plpgsql;<br />
<br />
COMMENT ON FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER,<br />
p_step INTEGER)<br />
IS $$Return a JSON document as a formatted text suitable for better reading from humans.<br />
Parameters:<br />
* p_json: The JSON document to be formatted.<br />
* p_indent_size: Optional: The number of blanks to be used for indenting. Default is 4.<br />
* p_step: Optional: This parameter is used for recursion in the document structure. You are not supposed to use it. If you use it, your formatted document will be shifted to the right by an amount corresponding to p_indent_size * p_step.$$;<br />
</source><br />
<br />
=== Usage ===<br />
<source lang="sql"><br />
db=> select * from public.json_pretty('{"a":"2","c":{"b":2, "b":4, "F":{"U1":14,"U2":"Hallo Welt"}},"array":["a","c",2,{"F":"obj in array"}, [8, 9, 10, "undici"]],"m":7567,"N":{"xyz":"uid"}}');<br />
json_pretty<br />
---------------------------------<br />
{ +<br />
"a": "2", +<br />
"c": { +<br />
"b": 4, +<br />
"b": 4, +<br />
"F": { +<br />
"U1": 14, +<br />
"U2": "Hallo Welt" +<br />
} +<br />
}, +<br />
"array": [ +<br />
"a", +<br />
"c", +<br />
2, +<br />
{ +<br />
"F": "obj in array"+<br />
}, +<br />
[ +<br />
8, +<br />
9, +<br />
10, +<br />
"undici" +<br />
] +<br />
], +<br />
"m": 7567, +<br />
"N": { +<br />
"xyz": "uid" +<br />
} +<br />
}<br />
(1 row)<br />
</source><br />
<br />
You may want to set the output format to unaligned to remove the the table decoration.<br />
<br />
[[Category:{{{category|}}} Snippets]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=JSON_pretty&diff=32722
JSON pretty
2018-11-14T12:57:46Z
<p>Cclavadetscher: </p>
<hr />
<div>{{SnippetInfo|JSON pretty|version=9.4+|lang=plpgsql}}<br />
<br />
Version 9.5 introduced JSONB and with it jsonb_pretty. So it is very easy to prettify a JSON document casting it first<br />
to JSONB and using the built-in function jsonb_pretty.<br />
<br />
However, if you need to keep the order of the keys in your document or if you have<br />
repeated keys you may want to use this function instead.<br />
<br />
<source lang="sql"><br />
CREATE OR REPLACE FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER DEFAULT 4,<br />
p_step INTEGER DEFAULT 0)<br />
RETURNS TEXT<br />
AS $$<br />
DECLARE<br />
v_type TEXT;<br />
v_text TEXT := '';<br />
v_indent INTEGER;<br />
v_key TEXT;<br />
v_object JSON;<br />
v_count INTEGER;<br />
BEGIN<br />
v_indent := coalesce(p_indent_size, 4);<br />
p_step := coalesce(p_step, 0);<br />
-- Object or array?<br />
v_type := json_typeof(p_json);<br />
<br />
IF v_type = 'object' THEN<br />
-- Start object<br />
v_text := E'{\n';<br />
SELECT count(*) - 1 INTO v_count<br />
FROM json_object_keys(p_json);<br />
-- go through keys, add them and recurse over value<br />
FOR v_key IN (SELECT json_object_keys(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || to_json(v_key)::TEXT || ': ' || public.json_pretty(p_json->v_key, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close object<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || '}';<br />
ELSIF v_type = 'array' THEN<br />
-- Start array<br />
v_text := E'[\n';<br />
v_count := json_array_length(p_json) - 1;<br />
-- go through elements and add them through recursion<br />
FOR v_object IN (SELECT json_array_elements(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || public.json_pretty(v_object, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close array<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || ']';<br />
ELSE -- A simple value<br />
v_text := v_text || p_json::TEXT;<br />
END IF;<br />
RETURN v_text;<br />
END;<br />
$$ LANGUAGE plpgsql;<br />
<br />
COMMENT ON FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER,<br />
p_step INTEGER)<br />
IS $$Return a JSON document as a formatted text suitable for better reading from humans.<br />
Parameters:<br />
* p_json: The JSON document to be formatted.<br />
* p_indent_size: Optional: The number of blanks to be used for indenting. Default is 4.<br />
* p_step: Optional: This parameter is used for recursion in the document structure. You are not supposed to use it. If you use it, your formatted document will be shifted to the right by an amount corresponding to p_indent_size * p_step.$$;<br />
</source><br />
<br />
=== Usage ===<br />
<source lang="sql"><br />
kofadmin@kofdb.localhost=> select * from public.json_pretty('{"a":"2","c":{"b":2, "b":4, "F":{"U1":14,"U2":"Hallo Welt"}},"array":["a","c",2,{"F":"obj in array"}, [8, 9, 10, "undici"]],"m":7567,"N":{"xyz":"uid"}}');<br />
json_pretty<br />
---------------------------------<br />
{ +<br />
"a": "2", +<br />
"c": { +<br />
"b": 4, +<br />
"b": 4, +<br />
"F": { +<br />
"U1": 14, +<br />
"U2": "Hallo Welt" +<br />
} +<br />
}, +<br />
"array": [ +<br />
"a", +<br />
"c", +<br />
2, +<br />
{ +<br />
"F": "obj in array"+<br />
}, +<br />
[ +<br />
8, +<br />
9, +<br />
10, +<br />
"undici" +<br />
] +<br />
], +<br />
"m": 7567, +<br />
"N": { +<br />
"xyz": "uid" +<br />
} +<br />
}<br />
(1 row)<br />
</source><br />
<br />
You may want to set the output format to unaligned to remove the the table decoration.<br />
<br />
[[Category:{{{category|}}} Snippets]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=JSON_pretty&diff=32721
JSON pretty
2018-11-14T12:46:51Z
<p>Cclavadetscher: </p>
<hr />
<div>{{SnippetInfo|JSON pretty|version=9.4+|lang=plpgsql}}<br />
<br />
Version 9.5 introduced JSONB and with it jsonb_pretty. So it is very easy to prettify a JSON document casting it first<br />
to JSONB and using the built-in function jsonb_pretty.<br />
<br />
However, if you need to keep the order of the keys in your document or if you have<br />
repeated keys you may want to use this function instead.<br />
<br />
<source lang="sql"><br />
CREATE OR REPLACE FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER DEFAULT 4,<br />
p_step INTEGER DEFAULT 0)<br />
RETURNS TEXT<br />
AS $$<br />
DECLARE<br />
v_type TEXT;<br />
v_text TEXT := '';<br />
v_indent INTEGER;<br />
v_key TEXT;<br />
v_object JSON;<br />
v_count INTEGER;<br />
BEGIN<br />
v_indent := coalesce(p_indent_size, 4);<br />
p_step := coalesce(p_step, 0);<br />
-- Object or array?<br />
v_type := json_typeof(p_json);<br />
<br />
IF v_type = 'object' THEN<br />
-- Start object<br />
v_text := E'{\n';<br />
SELECT count(*) - 1 INTO v_count<br />
FROM json_object_keys(p_json);<br />
-- go through keys, add them and recurse over value<br />
FOR v_key IN (SELECT json_object_keys(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || to_json(v_key)::TEXT || ': ' || public.json_pretty(p_json->v_key, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close object<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || '}';<br />
ELSIF v_type = 'array' THEN<br />
-- Start array<br />
v_text := E'[\n';<br />
v_count := json_array_length(p_json) - 1;<br />
-- go through elements, add them and recurse where an object or array<br />
FOR v_object IN (SELECT json_array_elements(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || public.json_pretty(v_object, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close array<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || ']';<br />
ELSE -- A simple value<br />
v_text := v_text || p_json::TEXT;<br />
END IF;<br />
RETURN v_text;<br />
END;<br />
$$ LANGUAGE plpgsql;<br />
<br />
COMMENT ON FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER,<br />
p_step INTEGER)<br />
IS $$Return a JSON document as a formatted text suitable for better reading from humans.<br />
Parameters:<br />
* p_json: The JSON document to be formatted.<br />
* p_indent_size: Optional: The number of blanks to be used for indenting. Default is 4.<br />
* p_step: Optional: This parameter is used for recursion in the document structure. You are not supposed to use it. If you use it, your formatted document will be shifted to the right by an amount corresponding to p_indent_size * p_step.$$;<br />
</source><br />
<br />
=== Usage ===<br />
<source lang="sql"><br />
db=> select * from public.json_pretty('{"a":"2","c":{"b":2, "b":4, "F":{"U1":14,"U2":"Hallo Welt"}},"array":["a","c",2,{"F":"obj in array"}, [8, 9, 10, "undici"]],"m":7567,"N":{"xyz":"uid"}}', 4, 2);<br />
json_pretty<br />
-----------------------------------------<br />
{ +<br />
"a": "2", +<br />
"c": { +<br />
"b": 4, +<br />
"b": 4, +<br />
"F": { +<br />
"U1": 14, +<br />
"U2": "Hallo Welt" +<br />
} +<br />
}, +<br />
"array": [ +<br />
"a", +<br />
"c", +<br />
2, +<br />
{ +<br />
"F": "obj in array"+<br />
}, +<br />
[ +<br />
8, +<br />
9, +<br />
10, +<br />
"undici" +<br />
] +<br />
], +<br />
"m": 7567, +<br />
"N": { +<br />
"xyz": "uid" +<br />
} +<br />
}<br />
(1 row)<br />
</source><br />
<br />
You may want to set the output format to unaligned to remove the the table decoration.<br />
<br />
[[Category:{{{category|}}} Snippets]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=JSON_pretty&diff=32720
JSON pretty
2018-11-14T12:46:13Z
<p>Cclavadetscher: Created page with "{{SnippetInfo|JSON pretty|version=9.4+|lang=plpgsql}} Version 9.5 introduced JSONB and with it jsonb_pretty. So it is very easy to prettify a JSON document casting it first t..."</p>
<hr />
<div>{{SnippetInfo|JSON pretty|version=9.4+|lang=plpgsql}}<br />
<br />
Version 9.5 introduced JSONB and with it jsonb_pretty. So it is very easy to prettify a JSON document casting it first<br />
to JSONB and using the built-in function jsonb_pretty.<br />
<br />
However, if you need to keep the order of the keys in your document or if you have<br />
repeated keys you may want to use this function instead of casting your JSON to JSONB in order to profit from the built-in function.<br />
<br />
<source lang="sql"><br />
CREATE OR REPLACE FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER DEFAULT 4,<br />
p_step INTEGER DEFAULT 0)<br />
RETURNS TEXT<br />
AS $$<br />
DECLARE<br />
v_type TEXT;<br />
v_text TEXT := '';<br />
v_indent INTEGER;<br />
v_key TEXT;<br />
v_object JSON;<br />
v_count INTEGER;<br />
BEGIN<br />
v_indent := coalesce(p_indent_size, 4);<br />
p_step := coalesce(p_step, 0);<br />
-- Object or array?<br />
v_type := json_typeof(p_json);<br />
<br />
IF v_type = 'object' THEN<br />
-- Start object<br />
v_text := E'{\n';<br />
SELECT count(*) - 1 INTO v_count<br />
FROM json_object_keys(p_json);<br />
-- go through keys, add them and recurse over value<br />
FOR v_key IN (SELECT json_object_keys(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || to_json(v_key)::TEXT || ': ' || public.json_pretty(p_json->v_key, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close object<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || '}';<br />
ELSIF v_type = 'array' THEN<br />
-- Start array<br />
v_text := E'[\n';<br />
v_count := json_array_length(p_json) - 1;<br />
-- go through elements, add them and recurse where an object or array<br />
FOR v_object IN (SELECT json_array_elements(p_json))<br />
LOOP<br />
v_text := v_text || repeat(' ', v_indent * (p_step + 1)) || public.json_pretty(v_object, p_indent_size, p_step + 1);<br />
IF v_count > 0 THEN<br />
v_text := v_text || ',';<br />
v_count := v_count - 1;<br />
END IF;<br />
v_text := v_text || E'\n';<br />
END LOOP;<br />
-- Close array<br />
v_text := v_text || repeat(' ', (v_indent * p_step)) || ']';<br />
ELSE -- A simple value<br />
v_text := v_text || p_json::TEXT;<br />
END IF;<br />
RETURN v_text;<br />
END;<br />
$$ LANGUAGE plpgsql;<br />
<br />
COMMENT ON FUNCTION public.json_pretty(p_json JSON,<br />
p_indent_size INTEGER,<br />
p_step INTEGER)<br />
IS $$Return a JSON document as a formatted text suitable for better reading from humans.<br />
Parameters:<br />
* p_json: The JSON document to be formatted.<br />
* p_indent_size: Optional: The number of blanks to be used for indenting. Default is 4.<br />
* p_step: Optional: This parameter is used for recursion in the document structure. You are not supposed to use it. If you use it, your formatted document will be shifted to the right by an amount corresponding to p_indent_size * p_step.$$;<br />
</source><br />
<br />
=== Usage ===<br />
<source lang="sql"><br />
db=> select * from public.json_pretty('{"a":"2","c":{"b":2, "b":4, "F":{"U1":14,"U2":"Hallo Welt"}},"array":["a","c",2,{"F":"obj in array"}, [8, 9, 10, "undici"]],"m":7567,"N":{"xyz":"uid"}}', 4, 2);<br />
json_pretty<br />
-----------------------------------------<br />
{ +<br />
"a": "2", +<br />
"c": { +<br />
"b": 4, +<br />
"b": 4, +<br />
"F": { +<br />
"U1": 14, +<br />
"U2": "Hallo Welt" +<br />
} +<br />
}, +<br />
"array": [ +<br />
"a", +<br />
"c", +<br />
2, +<br />
{ +<br />
"F": "obj in array"+<br />
}, +<br />
[ +<br />
8, +<br />
9, +<br />
10, +<br />
"undici" +<br />
] +<br />
], +<br />
"m": 7567, +<br />
"N": { +<br />
"xyz": "uid" +<br />
} +<br />
}<br />
(1 row)<br />
</source><br />
<br />
You may want to set the output format to unaligned to remove the the table decoration.<br />
<br />
[[Category:{{{category|}}} Snippets]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=IRC2RWNames&diff=32061
IRC2RWNames
2018-06-12T08:16:33Z
<p>Cclavadetscher: /* List of IRC nicks with their respective real world names */</p>
<hr />
<div>=== List of IRC nicks with their respective real world names ===<br />
<br />
You can find many PostgreSQL users and developers chatting in [irc://irc.freenode.net/postgresql #postgresql on freenode]. Here's more information about some of the regulars there. '''Note:''' people are on the list below only when they want to be. Do not (re-)add anyone without their express permission.<br />
<br />
{| border="1"<br />
|-<br />
!Nickname || Real Name<br />
|-<br />
|ads || Andreas Scherbaum<br />
|-<br />
|agliodbs, aglio2 (freenode), jberkus (oftc) || Josh Berkus<br />
|-<br />
|ahammond || Andrew Hammond<br />
|-<br />
|akretschmer || Andreas Kretschmer<br />
|-<br />
|alvherre || Alvaro Herrera<br />
|-<br />
|andres || Andres Freund<br />
|-<br />
|Assid || Satish Alwani<br />
|-<br />
|aurynn || Aurynn Shaw<br />
|-<br />
|beaud76 || Philippe Beaudoin<br />
|-<br />
|BlueAidan/BlueAidan_work || [[user:davidblewett | David Blewett]]<br />
|-<br />
|bmomjian || Bruce Momjian<br />
|-<br />
|cbbrowne || Christopher Browne<br />
|-<br />
|cce || Clark C. Evans<br />
|-<br />
|cclavadetscher || Charles Clavadetscher<br />
|-<br />
|chicagoben || Benjamin Johnson<br />
|-<br />
|crab || Abhijit Menon-Sen<br />
|-<br />
|Crad || Gavin M. Roy<br />
|- <br />
|daamien || Damien Clochard<br />
|-<br />
|DarcyB || Darcy Buskermolen<br />
|-<br />
|darkixion || Thom Brown<br />
|-<br />
|davidfetter || David Fetter<br />
|-<br />
|dbb || Brian M Hamlin / darkblue_b<br />
|-<br />
|dcolish || [http://www.unencrypted.org Dan Colish]<br />
|-<br />
|dcramer || Dave Cramer<br />
|-<br />
|DeciBull, TheCougar || Jim C. Nasby<br />
|-<br />
|dennisb || Dennis Bj&ouml;rklund<br />
|-<br />
|depesz || Hubert Lubaczewski<br />
|-<br />
|devrimgunduz || Devrim G&uuml;nd&uuml;z<br />
|-<br />
|digicon || [http://digicondev.blogspot.com Zach Conrad]<br />
|-<br />
|digitalknight || Atri Sharma<br />
|-<br />
|dim || [http://tapoueh.org Dimitri Fontaine]<br />
|-<br />
|direvus || Brendan Jurd<br />
|-<br />
|drbair || Ryan Bair<br />
|-<br />
|DrLou || Lou Picciano<br />
|-<br />
|duck_tape || Adi Alurkar<br />
|-<br />
|dvl || [http://langille.org/ Dan Langille]<br />
|-<br />
|eggyknap || Joshua Tolley<br />
|-<br />
|endpoint_david || David Christensen<br />
|-<br />
|eulerto || Euler Taveira<br />
|-<br />
|f3ew/devdas || Devdas Vasu Bhagat<br />
|-<br />
|feivel || Michael Meskes<br />
|-<br />
|frost242 || Thomas Reiss<br />
|-<br />
|elein || Elein Mustain<br />
|-<br />
|Gibheer || Stefan Radomski<br />
|-<br />
|gleu || Guillaume Lelarge<br />
|-<br />
|gorthx || [[User:Gabrielle|Gabrielle Roth]]<br />
|-<br />
|grzm || Michael Glaesemann<br />
|-<br />
|gsmet || Guillaume Smet<br />
|-<br />
|gregs1104 || Greg Smith<br />
|-<br />
|gurjeet || [[User:singh.gurjeet|Gurjeet Singh]]<br />
|-<br />
|G_SabinoMullane || Greg Sabino Mullane<br />
|-<br />
|HarrisonF || Harrison Fisk<br />
|-<br />
|ioguix || Jehan-Guillaume de Rorthais<br />
|-<br />
|indigo || Phil Frost<br />
|-<br />
|intgr || Marti Raudsepp<br />
|-<br />
|JanniCash || Jan Wieck<br />
|-<br />
|jconway || Joe Conway<br />
|-<br />
|jdavis, jdavis_ || Jeff Davis<br />
|-<br />
|jkatz05 || Jonathan S. Katz<br />
|-<br />
|johto || Marko Tiikkaja<br />
|-<br />
|jurka || Kris Jurka<br />
|-<br />
|justatheory || David Wheeler<br />
|-<br />
|jpa || Jean-Paul Argudo<br />
|-<br />
|jwp || James Pye<br />
|-<br />
|j_williams || Josh Williams<br />
|-<br />
|keithf4 || [http://www.keithf4.com Keith Fiske]<br />
|-<br />
|kgrittn || Kevin Grittner<br />
|-<br />
|klando || [[User:c2main|Cédric Villemain]]<br />
|-<br />
|larryrtx || Larry Rosenman<br />
|-<br />
|linuxpoet, postgresman || Joshua D. Drake<br />
|-<br />
|lluad || Steve Atkins<br />
|-<br />
|lsmith || Lukas Smith<br />
|-<br />
|macdice || Thomas Munro<br />
|-<br />
|mage_ || Julien Cigar<br />
|-<br />
|magnush || Magnus Hagander<br />
|-<br />
|maiku41 || Mike Blackwell<br />
|-<br />
|marco44 || Marc Cousin<br />
|-<br />
|markwkm || Mark Wong<br />
|-<br />
|mastermind || [[user:mastermind | Stefan Kaltenbrunner]]<br />
|-<br />
|mbalmer || [[user:mbalmer | Marc Balmer]]<br />
|-<br />
|merlin83 || Chua Khee Chin<br />
|-<br />
|merlinm || Merlin Moncure<br />
|-<br />
|metatrontech || Chris Travers<br />
|-<br />
|miracee || Susanne Ebrecht<br />
|-<br />
|Moosbert || Peter Eisentraut<br />
|-<br />
|Myon || [[user:Myon | Christoph Berg]]<br />
|-<br />
|neilc || Neil Conway<br />
|-<br />
|oicu || Andrew Dunstan<br />
|-<br />
|okbobcz || Pavel Stehule<br />
|-<br />
|patryk || Patryk Kordylewski<br />
|-<br />
|pasha_golub || [http://pgolub.wordpress.com/ Pavel Golub]<br />
|-<br />
|pg_docbot || [[IRCBotSyntax]]<br />
|-<br />
|pgSnake || Dave Page<br />
|-<br />
|PJMODOS || Petr Jel&iacute;nek<br />
|-<br />
|Possible || Robert Ivens<br />
|-<br />
|postwait || Theo Schlossnagle<br />
|-<br />
|prothid || R Brenton Strickler<br />
|-<br />
|psoo || Bernd Helmle<br />
|-<br />
|PSUdaemon || Phil Sorber<br />
|-<br />
|pyarra || Philip Yarra<br />
|-<br />
|raptelan || [[user:Cshobe|Casey Allen Shobe]]<br />
|-<br />
|RhodiumToad (formerly AndrewSN) || Andrew Gierth<br />
|-<br />
|rjuju || Julien Rouhaud<br />
|-<br />
|Robe || [[user:Robe | Michael Renner]]<br />
|-<br />
|rotellaro || Federico Campoli<br />
|-<br />
|russ960 || [[user:russ960|Russ Johnson]]<br />
|-<br />
|rz || Kirill Simonov<br />
|-<br />
|saper || Marcin Cieślak<br />
|-<br />
|SAS || Stéphane Schildknecht<br />
|-<br />
|schmiddy || Josh Kupershmidt<br />
|-<br />
|scrappy || Marc G. Fournier<br />
|-<br />
|sehrope || Sehrope Sarkuni<br />
|-<br />
|selenamarie || Selena Deckelmann<br />
|-<br />
|SkippyDigits || Sherri Kalm<br />
|-<br />
|Snow-Man || Stephen Frost<br />
|-<br />
|Spritz || Matteo Beccati<br />
|-<br />
|sternocera || Peter Geoghegan<br />
|-<br />
|StuckMojo, MojoWork || Jon Erdman<br />
|-<br />
|swm || Gavin Sherry<br />
|-<br />
|vy || Volkan YAZICI<br />
|-<br />
|wulczer || Jan Urbański<br />
|-<br />
|xaprb || Baron Schwartz<br />
|-<br />
|xocolatl, ififbetween || Vik Fearing<br />
|-<br />
|xzilla, xzi11a || [[User:Xzilla|Robert Treat]]<br />
|}<br />
<br />
[[Category:Community]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=Nordic_PGDay_2017&diff=29627
Nordic PGDay 2017
2017-03-23T12:29:00Z
<p>Cclavadetscher: /* Talks: Tuesday, March 21th, 2017 */</p>
<hr />
<div>==Schedule==<br />
<br />
Schedule is available at the following website: http://www.postgresql.eu/events/schedule/nordicpgday2017/<br />
<br />
== Talks: Tuesday, March 21th, 2017 ==<br />
<br />
* [https://wiki.postgresql.org/images/1/15/Time_related_range_types_revisited_pdfa.pdf Time Related Range Types Revisited], Charles Clavadetscher<br />
* Speeding up Query Execution through Just-In-Time-Compilation, Andres Freund<br />
* [https://www.hagander.net/talks/PostgreSQL_10.pdf A look at the Elephants trunk - PostgreSQL 10], Magnus Hagander<br />
* Why Uber Was (Mostly) Wrong, Christophe Pettus<br />
* [http://www.joeconway.com/presentations/plr-spatial.nordic.2017.pdf How Green Was My Valley - Advanced Spatial Analytics], Joe Conway<br />
* [http://hlinnaka.iki.fi/presentations/NordicPGDay2017-SCRAM.pdf SCRAM authentication in PostgreSQL], Heikki Linnakangas<br />
* Linux IO internals for database administrators, Ilya Kosmodemiansky</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=File:Time_related_range_types_revisited_pdfa.pdf&diff=29626
File:Time related range types revisited pdfa.pdf
2017-03-23T12:25:36Z
<p>Cclavadetscher: </p>
<hr />
<div></div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=Nordic_PGDay_2017&diff=29622
Nordic PGDay 2017
2017-03-23T10:02:15Z
<p>Cclavadetscher: /* Talks: Tuesday, March 21th, 2017 */</p>
<hr />
<div>==Schedule==<br />
<br />
Schedule is available at the following website: http://www.postgresql.eu/events/schedule/nordicpgday2017/<br />
<br />
== Talks: Tuesday, March 21th, 2017 ==<br />
<br />
* [http://www.artesano.ch/documents/04-publications/time_related_range_types_revisited_pdfa.pdf Time Related Range Types Revisited], Charles Clavadetscher<br />
* Speeding up Query Execution through Just-In-Time-Compilation, Andres Freund<br />
* [https://www.hagander.net/talks/PostgreSQL_10.pdf A look at the Elephants trunk - PostgreSQL 10], Magnus Hagander<br />
* Why Uber Was (Mostly) Wrong, Christophe Pettus<br />
* [http://www.joeconway.com/presentations/plr-spatial.nordic.2017.pdf How Green Was My Valley - Advanced Spatial Analytics], Joe Conway<br />
* [http://hlinnaka.iki.fi/presentations/NordicPGDay2017-SCRAM.pdf SCRAM authentication in PostgreSQL], Heikki Linnakangas<br />
* Linux IO internals for database administrators, Ilya Kosmodemiansky</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=Swiss_Postgres_Conference_2015&diff=23786
Swiss Postgres Conference 2015
2014-11-25T17:11:47Z
<p>Cclavadetscher: </p>
<hr />
<div>Swiss Postgres Conference 2015<br />
* Date: Do./Fr. 25./26. Juni 2015<br />
* Location: University of Applied Sciences Rapperswil (HSR Hochschule für Technik Rapperswil), Switzerland<br />
* Homepage: http://www.postgres-conference.ch/<br />
* Twitter/News: https://twitter.com/swiss_postgres<br />
<br />
== Ueber... ==<br />
Es ist dies die zweite Konferenz in der Schweiz zu PostgreSQL, dem besten Open Source Datenbanksystem. Die Konferenz ist ein zweitägiger Anlass an der HSR Hochschule für Technik Rapperswil (Schweiz). Angesprochen sind Datenbank-Spezialisten und Software-Entwickler wie auch Manager und Entscheidungsträger. <br />
<br />
Am ersten Tag gibt es ein interessantes Weiterbildungsangebot in Form von Workshops. Am zweiten Tag sind zwei parallele Konferenz-Tracks vorgesehen, einer ist technisch orientiert, der andere sit auf Endanwender und Entscheidungsträger ausgerichtet.<br />
<br />
Die Vortragsthemen decken eine breite Palette ab, von PostgreSQL im täglichen Einsatz, über Erweiterungen (wie PostGIS, Key-Values/hstore, Volltextsuche), NoSQL (JSON), Performance Tuning bis zur Migration zu PostgreSQL. Die Konferenzsprache ist vorwiegend deutsch mit Vorträgen und Workshops z.T. auch auf englisch. <br />
<br />
== Termine und Infos ==<br />
* CfP: Deadline 31. März 2015 <br />
* Registrierung: ab 1. März 2015; Early Bird: -15% bis 14. Mai 2015 (d.h. bis 6 Wochen vor Konferenzbeginn) <br />
* Workshops werden ab mind. 8 Personen durchgeführt<br />
<br />
== Call for Papers ==<br />
Themen:<br />
* Technical Track:<br />
** Performance Tuning<br />
** Die PostGIS-Erweiterung<br />
** Replikation mit PostgreSQL<br />
** Clustering und High Availability<br />
** Applikationsentwicklung mit PostgreSQL<br />
** PostgreSQL Hacking und Best Practices<br />
** NoSQL (JSON, Clustering, Column Stores)<br />
** Erweiterungen wie Key-Values/hstore, Volltextsuche (FTS) oder Foreign Data Wrappers (FDW)<br />
** "What's new in PostgreSQL 9.5" bzw. Übersicht über den Funktionsumfang von PostgreSQL ("PostgreSQL Feature Frenzie")<br />
* Business Track:<br />
** Success Stories und Case Studies<br />
** PostgreSQL im Einsatz<br />
** Migration zu PostgreSQL<br />
** Support- und Lizenzmodelle, PostgreSQL in der Cloud<br />
<br />
== Workshops ==<br />
Themen:<br />
* Extensions schreiben für PostgreSQL<br />
* PostGIS<br />
* PostgreSQL Backups, Replication & Disaster Recovery <br />
* Performance Tuning von PostgreSQL <br />
* Migration to PostgreSQL <br />
* NoSQL mit PostgreSQL <br />
* PostgreSQL Administration (Vorbereitung auf Zertifizierung)<br />
<br />
== Notizen ==<br />
<br />
Räume:<br />
* Do. 25. Juni 2015 (ganzer Tag) 4 Räume für Workshops, 1.267, ... <br />
* Fr. 26. Juni 2015 (ganzer Tag) Räume 5.001 und 5.002<br />
* Fr. 26. Juni 2015 (16:00-20:00h), 1.101 für Apéro <br />
<br />
Programm-Highlights:<br />
* Do. 25. Juni 2015: Social Event<br />
* Fr. 26. Juni 2015: Apéro<br />
* Announcement [http://www.swisspug.org Swiss PostgreSQL Users Group]<br />
* PostgreSQL Zertifizierung?<br />
<br />
Tickets:<br />
* Tages-Workshop: 350.-<br />
* Halbtages-Workshop: 250.-<br />
* Konferenz-Tag: Normalpreis 250.- (inkl. MWST), Studenten 100.- (inkl. MWST)<br />
* Social Event: 100.-<br />
<br />
Benefits für Referenten und Workshopleiter:<br />
* Referenten (Konferenz) erhalten freien Eintritt zur Konferenz.<br />
* Workshopleiter erhalten CHF 500.- (Halbtag) bzw. 1000.- (ganzer Tag) mit Hotel-/Reise-Spesen und freiem Eintritt zur Konferenz.<br />
<br />
[[Category:PostgreSQL Events]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=Swiss_Postgres_Conference_2015&diff=23780
Swiss Postgres Conference 2015
2014-11-23T16:21:22Z
<p>Cclavadetscher: /* Notizen */</p>
<hr />
<div>Swiss Postgres Conference 2015<br />
* Date: Do./Fr. 25./26. Juni 2015<br />
* Location: University of Applied Sciences Rapperswil (HSR Hochschule für Technik Rapperswil), Switzerland<br />
* Homepage: http://www.postgres-conference.ch/<br />
* Twitter/News: https://twitter.com/swiss_postgres<br />
<br />
== Ueber... ==<br />
Es ist dies die zweite Konferenz in der Schweiz zu PostgreSQL, dem besten Open Source Datenbanksystem. Die Konferenz ist ein zweitägiger Anlass an der HSR Hochschule für Technik Rapperswil (Schweiz). Angesprochen sind Datenbank-Spezialisten und Software-Entwickler wie auch Manager und Entscheidungsträger. <br />
<br />
Am ersten Tag gibt es ein interessantes Weiterbildungsangebot in Form von Workshops. Am zweiten Tag sind zwei parallele Konferenz-Tracks vorgesehen, einer ist technisch orientiert, der andere sit auf Endanwender und Entscheidungsträger ausgerichtet.<br />
<br />
Die Vortragsthemen decken eine breite Palette ab, von PostgreSQL im täglichen Einsatz, über Erweiterungen (wie PostGIS, Key-Values/hstore, Volltextsuche), NoSQL (JSON), Performance Tuning bis zur Migration zu PostgreSQL. Die Konferenzsprache ist vorwiegend deutsch mit Vorträgen und Workshops z.T. auch auf englisch. <br />
<br />
== Termine und Infos ==<br />
* CfP: Deadline 31. März 2015 <br />
* Registrierung: ab 1. März 2015; Early Bird: -15% bis 14. Mai 2015 (d.h. bis 6 Wochen vor Konferenzbeginn) <br />
* Workshops werden ab mind. 8 Personen durchgeführt<br />
<br />
== Call for Papers ==<br />
Themen:<br />
* Technical Track:<br />
** Performance Tuning<br />
** Die PostGIS-Erweiterung<br />
** Replikation mit PostgreSQL<br />
** Clustering und High Availability<br />
** Applikationsentwicklung mit PostgreSQL<br />
** PostgreSQL Hacking und Best Practices<br />
** NoSQL (JSON, Clustering, Column Stores)<br />
** Erweiterungen wie Key-Values/hstore, Volltextsuche (FTS) oder Foreign Data Wrappers (FDW)<br />
** "What's new in PostgreSQL 9.5" bzw. Übersicht über den Funktionsumfang von PostgreSQL ("PostgreSQL Feature Frenzie")<br />
* Business Track:<br />
** Success Stories und Case Studies<br />
** PostgreSQL im Einsatz<br />
** Migration zu PostgreSQL<br />
** Support- und Lizenzmodelle, PostgreSQL in der Cloud<br />
<br />
== Workshops ==<br />
Themen:<br />
* Extensions schreiben für PostgreSQL<br />
* PostGIS<br />
* PostgreSQL Backups, Replication & Disaster Recovery <br />
* Performance Tuning von PostgreSQL <br />
* Migration to PostgreSQL <br />
* NoSQL mit PostgreSQL <br />
* PostgreSQL Administration (Vorbereitung auf Zertifizierung)<br />
<br />
== Notizen ==<br />
<br />
Räume:<br />
* Do. 25. Juni 2015 (ganzer Tag) 4 Räume für Workshops, 1.267, ... <br />
* Fr. 26. Juni 2015 (ganzer Tag) Räume 5.001 und 5.002<br />
* Fr. 26. Juni 2015 (16:00-20:00h), 1.101 für Apéro <br />
<br />
Programm-Highlights:<br />
* Do. 25. Juni 2015: Social Event<br />
* Fr. 26. Juni 2015: Apéro<br />
* Announcement [http://www.pgug.ch PostgreSQL Users Group Switzerland]<br />
* PostgreSQL Zertifizierung?<br />
<br />
Tickets:<br />
* Tages-Workshop: 350.-<br />
* Halbtages-Workshop: 250.-<br />
* Konferenz-Tag: Normalpreis 250.- (inkl. MWST), Studenten 100.- (inkl. MWST)<br />
* Social Event: 100.-<br />
<br />
Benefits für Referenten und Workshopleiter:<br />
* Referenten (Konferenz) erhalten freien Eintritt zur Konferenz.<br />
* Workshopleiter erhalten CHF 500.- (Halbtag) bzw. 1000.- (ganzer Tag) mit Hotel-/Reise-Spesen und freiem Eintritt zur Konferenz.<br />
<br />
[[Category:PostgreSQL Events]]</div>
Cclavadetscher
https://wiki.postgresql.org/index.php?title=Swiss_Postgres_Conference_2015&diff=23776
Swiss Postgres Conference 2015
2014-11-21T05:04:21Z
<p>Cclavadetscher: /* Notizen */</p>
<hr />
<div>Swiss Postgres Conference 2015<br />
* Date: Do./Fr. 25./26. Juni 2015<br />
* Location: University of Applied Sciences Rapperswil (HSR Hochschule für Technik Rapperswil), Switzerland<br />
* Homepage: http://www.postgres-conference.ch/<br />
* Twitter/News: https://twitter.com/swiss_postgres<br />
<br />
== Ueber... ==<br />
Es ist dies die zweite Konferenz in der Schweiz zu PostgreSQL, dem besten Open Source Datenbanksystem. Die Konferenz ist ein zweitägiger Anlass an der HSR Hochschule für Technik Rapperswil (Schweiz). Angesprochen sind Datenbank-Spezialisten und Software-Entwickler wie auch Manager und Entscheidungsträger. <br />
<br />
Am ersten Tag gibt es ein interessantes Weiterbildungsangebot in Form von Workshops. Am zweiten Tag sind zwei parallele Konferenz-Tracks vorgesehen, einer ist technisch orientiert, der andere sit auf Endanwender und Entscheidungsträger ausgerichtet.<br />
<br />
Die Vortragsthemen decken eine breite Palette ab, von PostgreSQL im täglichen Einsatz, über Erweiterungen (wie PostGIS, Key-Values/hstore, Volltextsuche), NoSQL (JSON), Performance Tuning bis zur Migration zu PostgreSQL. Die Konferenzsprache ist vorwiegend deutsch mit Vorträgen und Workshops z.T. auch auf englisch. <br />
<br />
== Termine und Infos ==<br />
* CfP: Deadline 31. März 2015 <br />
* Registrierung: ab 1. März 2015; Early Bird: -15% bis 14. Mai 2015 (d.h. bis 6 Wochen vor Konferenzbeginn) <br />
* Workshops werden ab mind. 8 Personen durchgeführt<br />
<br />
== Call for Papers ==<br />
Themen:<br />
* Technical Track:<br />
** Performance Tuning<br />
** Die PostGIS-Erweiterung<br />
** Replikation mit PostgreSQL<br />
** Clustering und High Availability<br />
** Applikationsentwicklung mit PostgreSQL<br />
** PostgreSQL Hacking und Best Practices<br />
** NoSQL (JSON, Clustering, Column Stores)<br />
** Erweiterungen wie Key-Values/hstore, Volltextsuche (FTS) oder Foreign Data Wrappers (FDW)<br />
** "What's new in PostgreSQL 9.5" bzw. Übersicht über den Funktionsumfang von PostgreSQL ("PostgreSQL Feature Frenzie")<br />
* Business Track:<br />
** Success Stories und Case Studies<br />
** PostgreSQL im Einsatz<br />
** Migration zu PostgreSQL<br />
** Support- und Lizenzmodelle, PostgreSQL in der Cloud<br />
<br />
== Workshops ==<br />
Themen:<br />
* Extensions schreiben für PostgreSQL<br />
* PostGIS<br />
* PostgreSQL Backups, Replication & Disaster Recovery <br />
* Performance Tuning von PostgreSQL <br />
* Migration to PostgreSQL <br />
* NoSQL mit PostgreSQL <br />
* PostgreSQL Administration (Vorbereitung auf Zertifizierung)<br />
<br />
== Notizen ==<br />
<br />
Räume:<br />
* Do. 25. Juni 2015 (ganzer Tag) 4 Räume für Workshops, 1.267, ... <br />
* Fr. 26. Juni 2015 (ganzer Tag) Räume 5.001 und 5.002<br />
* Fr. 26. Juni 2015 (16:00-20:00h), 1.101 für Apéro <br />
<br />
Programm-Highlights:<br />
* Do. 25. Juni 2015: Social Event<br />
* Fr. 26. Juni 2015: Apéro<br />
* PostgreSQL Zertifizierung?<br />
* Gründung [http://www.pgug.ch PostgreSQL Users Group Switzerland]?<br />
<br />
Tickets:<br />
* Tages-Workshop: 350.-<br />
* Halbtages-Workshop: 250.-<br />
* Konferenz-Tag: Normalpreis 250.- (inkl. MWST), Studenten 100.- (inkl. MWST)<br />
* Social Event: 100.-<br />
<br />
Benefits für Referenten und Workshopleiter:<br />
* Referenten (Konferenz) erhalten freien Eintritt zur Konferenz.<br />
* Workshopleiter erhalten CHF 500.- (Halbtag) bzw. 1000.- (ganzer Tag) mit Hotel-/Reise-Spesen und freiem Eintritt zur Konferenz.<br />
<br />
[[Category:PostgreSQL Events]]</div>
Cclavadetscher