Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

SqlCatalog table operations should filter on `iceberg_type`

Aberta
#3,337 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

  • #3525 de @GayathriSrividya — fechado sem integrar
  • #3846 de @hedger9487 — fechado sem integrar

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
68/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
python, sql
Domínio
databases

Direção de pesquisa

Comece pelos métodos de operação de tabelas de SqlCatalog, compare seus predicados com o tratamento existente de iceberg_type em list_tables de #3263 e reproduza o problema usando a configuração SQLite e a linha de view fornecidas. O trabalho estará concluído quando load_table, drop_table, rename_table e commit_table não tratarem mais linhas com iceberg_type VIEW como tabelas, enquanto as linhas TABLE e NULL continuarem funcionando.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Feature Request / Improvement

In #3263, the iceberg_type column was added to the SQLCatalog and filters it in list_tables, but the other table operations (i.e. load_table, drop_table, rename_table, commit_table) don't check it yet. That means a view row written by iceberg java or iceberg-rust can bleed in pythons SQLCatalog table operations.

Java's V1 catalog applies WHERE (iceberg_type = 'TABLE' OR iceberg_type IS NULL) everywhere (JdbcUtil.java#L168). We should do the same.

Probably worth extracting a small helper since the predicate would now appear in ~5+ places.

Repro steps:

catalog = SqlCatalog("test", uri="sqlite:///...", warehouse="...")
catalog.create_namespace("ns")

# bypass and sim java/rust writing a view row
with catalog.engine.connect() as conn:
    conn.execute(text(
        "INSERT INTO iceberg_tables VALUES "
        "('test', 'ns', 'a_view', 's3://fake/m.json', NULL, 'VIEW')"
    ))
    conn.commit()

catalog.drop_table(("ns", "a_view"))  # Silently deletes the view row :/
Linguagem predominante
Python
Estrelas
1.1k
Forks
606
Merge médio
1d 11h
PRs com merge (30d)
75

Preparar o ambiente

  • Sem Dockerfile nem arquivo Docker Compose
  • Tem um modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de apache/iceberg-python

Todas as issues de apache/iceberg-python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.