Parsers de banco de dados
Estado atual
Os validadores de sintaxe de banco (mysql-parser, postgresql-parser, mariadb-parser, sqlite-parser, mongodb-parser e redis-parser) não estão no catálogo. A API recusa essas linguagens com E006.
Eles vêm de uma versão anterior do projeto e não foram reconstruídos sobre a libkrun. O que existe no repositório:
- o executor do guest (
internal/guest/executor.go) ainda tem as entradas, que chamam/usr/local/bin/nodecom um script de validação (/usr/local/bin/mysql-run,psql-run,mariadb-run,sqlite-run,mongodb-run,redis-run), e, nos parsers SQL,NODE_PATH=/opt/sql-parser/node_modules; - os scripts e Dockerfiles de cada parser estão em
docker/<parser>/na raiz do repositório; os SQL usamnode-sql-parser.
A SQLite executável (sqlite) continua no catálogo; ver SQLite.
O que é preciso para reativar um parser
Cada parser precisa de duas coisas: uma imagem própria e uma entrada nova no languages.yaml.
1. Imagem própria
O build de imagens baixa a imagem OCI de um registry com go-containerregistry; não usa Docker local. Portanto a imagem do parser precisa:
- conter o Node.js em
/usr/local/bin/node; - conter o script do parser no caminho que o executor espera (por exemplo
/usr/local/bin/mysql-run); - para os parsers SQL, conter
node-sql-parserem/opt/sql-parser/node_modules; - ser publicada num registry acessível pelo host que roda o build.
O Dockerfile em docker/<parser>/ descreve esse conteúdo e pode servir de ponto de partida para gerar e publicar a imagem.
2. Entrada no languages.yaml
O catálogo fica embutido no binário, em internal/adapters/catalog/languages.yaml. Uma entrada nova tem o formato:
- name: mysql-parser
image: <registry>/<imagem do parser>:<tag>
cpus: 1
memory_mib: 256
warmup: ""
nameprecisa ser exatamente o nome usado no executor do guest.cpusememory_mibsão teto contra abuso; escolha-os medindo o parser.warmuppode ficar vazio se a imagem já traz tudo.
Depois:
task build
task image:build -- --stack mysql-parser
rc run --stack mysql-parser --code 'SELECT 1;'
3. Teste
Cada parser reativado precisa entrar no teste ponta a ponta com uma consulta válida e uma inválida, para provar que a validação reprova o que deve.
Não verificado
Nenhum parser foi reconstruído sobre a libkrun até a data desta documentação. Os passos acima descrevem o que o código atual exige; não foram executados de ponta a ponta.