Skip to content

Instantly share code, notes, and snippets.

View ringerc's full-sized avatar

Craig Ringer ringerc

View GitHub Profile
@ringerc
ringerc / gist:7413509
Last active December 28, 2015 00:29
PostgreSQL parse, rewrite, and plan trees for a `delete ... using statement` in Pg 9.3; see https://wiki.postgresql.org/wiki/Automatically_updatable_security_barrier_views#How_does_updating_a_join_work.3F
regress=> DELETE FROM t USING t2 WHERE t.id = t2.id;
LOG: parse tree:
DETAIL: {QUERY
:commandType 4
:querySource 0
:canSetTag true
:utilityStmt <>
:resultRelation 1
:hasAggs false
:hasWindowFuncs false
@ringerc
ringerc / gist:5742942
Created June 9, 2013 09:33
Backtrace of execution of simple PL/PgSQL array access
craig=> DO
$$
BEGIN
PERFORM (ARRAY[1])[1];
END;
$$ LANGUAGE plpgsql;
with a breakpoint set at ExecEvalArrayRef results in:
(gdb) bt
@ringerc
ringerc / jpegify.py
Last active December 10, 2015 04:13
#!python
# coding=utf-8
#
# usage: python jpegify.py *.pdf
#
# Written for Python 2 or python 3
from __future__ import print_function
import os
@ringerc
ringerc / disconnect.py
Created October 3, 2015 13:40
Compare disconnect/reconnect and pooled times
#!/usr/bin/env python
#
# Disconnect/reconnect each query
#
# Takes 0.45s to run here
#
import time
import psycopg2
start_t = time.time()
From 0319a7ecbab5c1e85e300d93f674087786be144a Mon Sep 17 00:00:00 2001
From: Craig Ringer <craig@2ndquadrant.com>
Date: Wed, 1 Apr 2015 10:46:29 +0800
Subject: [PATCH] pg_restore -t should select views, matviews, and foreign
tables
Currently pg_restore's '-t' option selects only tables, not other
relations. It should be able to match anything that behaves like
a relation in the relation namespace, anything that's interchangable
with a table, including:
CREATE SCHEMA myschema;
CREATE TABLE myschema.zzafter(id integer);
CREATE OR REPLACE FUNCTION myschema.aabefore()
RETURNS void
LANGUAGE plpgsql
AS $$
DECLARE
somefield myschema.zzafter.id%TYPE;