Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gQFeH-0007MI-Er for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Nov 2018 17:53:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gQFeG-00058x-6I for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Nov 2018 17:53:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gQFeF-00058q-PC for pgsql-hackers@lists.postgresql.org; Fri, 23 Nov 2018 17:53:47 +0000 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gQFeC-0004GO-Sl for pgsql-hackers@postgresql.org; Fri, 23 Nov 2018 17:53:47 +0000 Received: by mail-wr1-x431.google.com with SMTP id r10so13084737wrs.10 for ; Fri, 23 Nov 2018 09:53:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=2ndquadrant-com.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:openpgp:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=/jp1RgQNfChKH9RTVMZ2b2VfyRDC8+PP910/GZxjzfQ=; b=YYutBbhk847MkxtPQOtTNsNteA2zVVTum2SPm+Bgqlt07gInlTNdJXRunvl9NyIlVT O16CjRQjZCPc5gutBdds0p5tex/Yaz9SM/qv/h2qR89xYaUOCX7oilr9wlm90xyb7llU 1sglK1Qh+tFP0DzdcoToNb3gyFCpgUQ1rmTvkhntOb/Ye+zMVZK+ZiUa80KUjoY/igP3 lRH3eVQTEf2bnALT9bLsShh9m7ZQGbvm/yW2h3hSXx1P3fEjEx4pmbTuCqBXOYKcW1Pp JbdpYfKnwtZhxpsl8xcjzlS8FClisGUnnE7cbYNx7SgktObWOd/sItOVWSZ1prSLxBw7 //2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:openpgp:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=/jp1RgQNfChKH9RTVMZ2b2VfyRDC8+PP910/GZxjzfQ=; b=CXKKPCmEG4uAd+cSB523WfpBAkSQzZYYM2e02m4szrTK9wEs2hD4bdzKCwucW4yN1E HieCbIyOEbo6AVtX+qEfC3y+iZCXEoy3exid/StvSO3C5KSntA92UxjXxdpS0O8kJj7b DW5PixSwv/LzeYzG9lqr+GEStHcfE/kTHVREF1yMoFwixyBaqSiPXqPD9UP7KGrLoGbl 4D5+lLzwYk6/MgZp0GQNln7CwxPUBEDVmbnmRH9QApNT2OJ1N38wNABzuP+EW/02RcZV HRMHOi6jCyN43q/4kQkRhP95Py8pWha9R/CKStFPpY/bFFbDtcOx9wm0wyDxcBs7VhfZ qFFA== X-Gm-Message-State: AA+aEWY9YqrFkXYoLIRK3cPKsuhxy+HeSjcORjsg/Q+5VExX7/NDg1QN /JYmrViL6f0T9y99WACX6AmFng== X-Google-Smtp-Source: AFSGD/Vd+Mbv6kSg+FMf6TJ7tFXMYwhKcWqa6SIuQsTr1sgHcq4o7P4FZ+w97la3ANwXboKVNKWiVg== X-Received: by 2002:a5d:4c8a:: with SMTP id z10mr10876798wrs.75.1542995623673; Fri, 23 Nov 2018 09:53:43 -0800 (PST) Received: from [192.168.0.99] (150.123.broadband11.iol.cz. [90.178.123.150]) by smtp.gmail.com with ESMTPSA id d4sm54120990wrp.89.2018.11.23.09.53.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Nov 2018 09:53:43 -0800 (PST) Subject: Re: row filtering for logical replication To: David Fetter Cc: Euler Taveira , pgsql-hackers , Suzuki Hironobu References: <7106a0fc-8017-c0fe-a407-9466c9407ff8@2ndquadrant.com> <20181123163913.GK958@fetter.org> From: Petr Jelinek Openpgp: preference=signencrypt Autocrypt: addr=petr.jelinek@2ndquadrant.com; prefer-encrypt=mutual; keydata= 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 9RNiPYs/hmRxYg== Message-ID: <0cbcf83b-2cb3-ad3b-8df4-8bf594051c97@2ndquadrant.com> Date: Fri, 23 Nov 2018 18:53:42 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <20181123163913.GK958@fetter.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 23/11/2018 17:39, David Fetter wrote: > On Fri, Nov 23, 2018 at 12:03:27AM +0100, Petr Jelinek wrote: >> On 01/11/2018 01:29, Euler Taveira wrote: >>> Em qua, 28 de fev de 2018 às 20:03, Euler Taveira >>> escreveu: >>>> The attached patches add support for filtering rows in the publisher. >>>> >>> I rebased the patch. I added row filtering for initial >>> synchronization, pg_dump support and psql support. 0001 removes unused >>> code. 0002 reduces memory use. 0003 passes only structure member that >>> is used in create_estate_for_relation. 0004 reuses a parser node for >>> row filtering. 0005 is the feature. 0006 prints WHERE expression in >>> psql. 0007 adds pg_dump support. 0008 is only for debug purposes (I'm >>> not sure some of these messages will be part of the final patch). >>> 0001, 0002, 0003 and 0008 are not mandatory for this feature. >> >> Hi, >> >> I think there are two main topics that still need to be discussed about >> this patch. >> >> Firstly, I am not sure if it's wise to allow UDFs in the filter clause >> for the table. The reason for that is that we can't record all necessary >> dependencies there because the functions are black box for parser. > > Some UDFs are not a black box for the parser, namely ones written in > SQL. Would it make sense at least not to foreclose the non-(black box) > option? > Yeah inlinable SQL functions should be fine, we just need the ability to extract dependencies. -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services