Re: Conditional column filtering with pglogical replication

2020-10-23 Thread PALAYRET Jacques



The " row_filter " filters the rows and I don’t want to filter the row but only 
one (or several) column(s). 

Actually, I want a column value on the provider to be filtered on subcribers 
when replicating. 




For example, on provider : 

a | b | c | d 

-+--++-- 

123 | 45.6 | 15 | abc 

111 | 55.5 | 66 | def 




on subscriber : 

a | b | c | d 

-+--++-- 

123 | 45.6 | 15 | abc 

111 | | 66 | def 
-> b NULL on subscriber but the others columns are replicated. 


De: "Fabrízio de Royes Mello"  
À: "PALAYRET Jacques"  
Cc: "Postgres General"  
Envoyé: Vendredi 23 Octobre 2020 16:23:19 
Objet: Re: Conditional column filtering with pglogical replication 

Em sex., 23 de out. de 2020 às 10:35, PALAYRET Jacques < [ 
mailto:jacques.palay...@meteo.fr | jacques.palay...@meteo.fr ] > escreveu: 
> 
> With PgLogical extension, I have tested the possibility of column filtering 
> (columns) and row filtering (row_filter). 
> But is there a way to do a conditional column filtering ? 
> I mean a way to filter a column based on a predicate, with pglogical (so the 
> filtered values won’t arrive on subscribers). 
> For example, with a replicated table t(a integer as Primary Key, b numeric, c 
> integer, d text), I would like to filter the column b when c between 10 and 
> 20. 
> 

Hello, 

According to the documentation [1] the row_filter is a normal PostgreSQL 
expression with the same limitations of CHECK constraints, so you can do 
something like: row_filter := 'c between 10 and 20 and b = ?' 

Regards, 

[1] [ https://github.com/2ndQuadrant/pglogical#row-filtering | 
https://github.com/2ndQuadrant/pglogical#row-filtering ] 

-- 
Fabrízio de Royes Mello Timbira - [ http://www.timbira.com.br/ | 
http://www.timbira.com.br/ ] 
PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento 



Re: Conditional column filtering with pglogical replication

2020-10-23 Thread Fabrízio de Royes Mello
Em sex., 23 de out. de 2020 às 10:35, PALAYRET Jacques <
jacques.palay...@meteo.fr> escreveu:
>
> With PgLogical extension, I have tested the possibility of column
filtering (columns) and row filtering (row_filter).
> But is there a way to do a conditional column filtering ?
> I mean a way to filter a column based on a predicate, with pglogical (so
the filtered values won’t arrive on subscribers).
> For example, with a replicated table t(a integer as Primary Key, b
numeric, c integer, d text), I would like to filter the column b when c
between 10 and 20.
>

Hello,

According to the documentation [1] the row_filter is a normal PostgreSQL
expression with the same limitations of CHECK constraints, so you can do
something like: row_filter := 'c between 10 and 20 and b = ?'

Regards,

[1] https://github.com/2ndQuadrant/pglogical#row-filtering

--
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento


Conditional column filtering with pglogical replication

2020-10-23 Thread PALAYRET Jacques
Hello, 

With PgLogical extension, I have tested the possibility of column filtering 
(columns) and row filtering (row_filter). 
But is there a way to do a conditional column filtering ? 
I mean a way to filter a column based on a predicate, with pglogical (so the 
filtered values won’t arrive on subscribers). 
For example, with a replicated table t(a integer as Primary Key, b numeric, c 
integer, d text), I would like to filter the column b when c between 10 and 20. 

Regards 
- Météo-France - 
PALAYRET JACQUES 
DCSC/MBD 
jacques.palay...@meteo.fr 
Fixe : +33 561078319