AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-164870

laurent's questions

Martin Hope
laurent
Asked: 2024-11-25 16:50:09 +0800 CST

Como obter um instantâneo do pg_create_logical_replication_slot?

  • 5

Ao ler a documentação sobre o protocolo de replicação de streaming , vejo que posso obter o nome do snapshot. Isso parece ser útil para executar a sincronização antes de começar a transmitir as mensagens de replicação e garantir que tenho todos os dados. No entanto, não consigo obter o snapshot ao chamar a função sql pg_create_logical_replication_slot (e meu cliente não implementa o protocolo de replicação de streaming). Como posso obter esse nome de snapshot para executar a sincronização inicial?

Para o contexto, tenho uma tabela somente de anexação e quero usá-la como uma espécie de "produtor de eventos", usando replicação lógica para construir um mecanismo de assinatura.

postgresql
  • 1 respostas
  • 13 Views
Martin Hope
laurent
Asked: 2018-11-14 07:42:39 +0800 CST

Impor dependência funcional conhecida em uma cláusula group by

  • 1

Vamos considerar que tenho as seguintes tabelas:

    CREATE TABLE users(
        id serial PRIMARY KEY,
        age integer
    )

    CREATE TABLE products(
        id serial PRIMARY KEY,
        sku character varying(255),
        user_id integer REFERENCES users
    )

Então, basicamente, um produto pertenceria a um usuário e um usuário poderia ter muitos produtos.

Eu quero a capacidade de carregar usuários com seus produtos fazendo a agregação no nível do banco de dados (talvez erroneamente, mas suponho que seria mais fácil e provavelmente mais eficiente do que executar algum código de agregação na minha camada de aplicativo: Postgres vem com boas funções de agregação, por que não usando-os !)

Então eu executaria algo como

SELECT "users".*, json_agg("products".*) as "products" 
  FROM "users" LEFT JOIN "products" ON "users"."id" = "products"."user_id" 
  GROUP BY "users"."id"

Tudo bem, meu driver pode analisar estruturas JSON e não tenho nada para fazer no lado da camada do aplicativo.

O problema surge se eu quiser introduzir algum tipo de paginação:

WITH "users" AS (SELECT * FROM "users" ORDER BY "id" LIMIT 20)
SELECT "users".*, json_agg("products".*) as "products" 
FROM "users" LEFT JOIN "products" ON "users"."id" = "products"."user_id" 
GROUP BY "users"."id"

Eu tenho o erro conhecido

ERRO: a coluna "users.age" deve aparecer na cláusula GROUP BY ou ser usada em uma função agregada

Como o "users"."id" não é considerado a chave primária da tabela temporária criada pela minha subconsulta

Eu poderia corrigi-lo adicionando todas as colunas de usuários na cláusula group by. Mas acho isso problemático e uma pena, pois tenho certeza de que "users".."id" definirá de maneira única um item da minha subconsulta.

Então, eu gostaria de saber se existe uma maneira de dizer ao mecanismo de banco de dados "usuários".."id" é algum tipo de chave primária para minha subconsulta?

Se não, você vê uma maneira melhor?

EDIT: Esta pergunta é bastante semelhante (3 anos de idade)

Obrigado

postgresql group-by
  • 1 respostas
  • 435 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve