Ce projet implémente un database engine compatible PostgreSQL développé en Go. Il fournit un RDBMS (Relational Database Management System) complet avec SQL parser, stockage, transactions, indexation et contraintes d'intégrité référentielle.
Astuce navigation : Utilisez la recherche par nom de fichier et ligne pour accéder rapidement à la logique souhaitée.
- Engine :
- NewPostgresEngine · Insert · Select · Update · Delete · CreateDatabase · CreateTable · CreateIndex · BeginTransaction · ExecuteSQL
- Parser :
- Lexer :
- Types :
- DataType · Column · Schema · Table · GetTypeInfo · IsNumericType
- Stockage :
- Index B-Tree :
- Transactions :
- Lexer complet avec tokenisation SQL ([internal/parser/lexer.go])
- Parser supportant DDL et DML ([internal/parser/parser.go])
- AST (Abstract Syntax Tree) ([internal/parser/ast.go])
- Gestion d'erreurs détaillée
- Création/suppression de bases ([internal/engine/engine.go])
- Gestion des schemas ([internal/types/types.go])
- Support multi-database
- Types supportés : voir [internal/types/types.go]
- DDL/DML : CREATE, INSERT, SELECT, UPDATE, DELETE ([main.go], [demo.go])
- Vues, contraintes, agrégats, jointures, sous-requêtes ([demo.go], [examples/sql-demo/main.go])
- Stockage binaire ([internal/storage/binary_storage.go])
- Index B-Tree ([internal/index/btree.go])
- Transactions ([internal/transaction/transaction.go])
- Contraintes référentielles, validation types, ACID ([demo.go])
PostgresInGo/
├── main.go # Entrée CLI principale (voir lignes 1-180)
├── demo.go # Démo guidée de toutes les features (voir lignes 1-900)
├── internal/
│ ├── engine/ # Moteur principal
│ │ └── engine.go # Initialisation, gestion bases
│ ├── parser/ # Sous-système SQL Parser
│ │ ├── tokens.go # Définition tokens SQL
│ │ ├── lexer.go # Analyseur lexical
│ │ ├── ast.go # AST
│ │ └── parser.go # Parser SQL
│ ├── execution/ # Exécution requêtes
│ │ └── execution.go # Opérateurs, plans
│ ├── storage/ # Stockage
│ │ ├── storage.go # Interface stockage
│ │ └── binary_storage.go # Stockage binaire
│ ├── index/ # Indexation
│ │ └── btree.go # B-Tree
│ ├── transaction/ # Transactions
│ │ └── transaction.go # Isolation, contrôle
│ └── types/ # Système de types
│ ├── types.go # Types SQL
│ └── types_test.go # Tests types
├── tests/ # Tests
│ ├── sql_parser_test.go # Tests parser SQL
│ ├── views_test.go # Tests vues
│ ├── aggregate_functions_test.go # Tests agrégats
│ └── ...
├── examples/
│ ├── sql-demo/main.go # Démo parser SQL
│ └── aggregate-demo/main.go # Démo agrégats
├── data/ # Données
└── demo_data/ # Données démo
- Go 1.24.1 ou supérieur
git clone <repository-url>
cd PostgresInGo
go mod tidygo run main.go- Démo complète :
go run demo.go([demo.go]) - Démo SQL Parser :
go run examples/sql-demo/main.go([examples/sql-demo/main.go]) - Démo Agrégats :
go run examples/aggregate-demo/main.go([examples/aggregate-demo/main.go])
- Tests parser SQL :
go test ./tests/sql_parser_test.go -v - Tests vues :
go test ./tests/views_test.go -v - Tests agrégats :
go test ./tests/aggregate_functions_test.go -v - Tous les tests :
go test ./...
- Consultez les fichiers référencés dans le tableau ci-dessus pour explorer chaque fonctionnalité.
- Les démos (
demo.go,examples/sql-demo/main.go,examples/aggregate-demo/main.go) montrent l'utilisation réelle du moteur, du parser, des contraintes, des index, des vues, etc. - Les tests dans
tests/couvrent tous les cas d'usage et edge cases.
- Modules : 7 modules principaux (+ SQL Parser)
- Types supportés : 50+ types PostgreSQL
- Tokens SQL : 100+ tokens supportés
- Commandes SQL : Support complet DDL/DML avec parser + Views
- Tests : 800+ lignes de tests pour le SQL parser et Views
- Fonctionnalités SQL : CREATE, INSERT, SELECT, UPDATE, DELETE, WHERE, INDEX, CREATE VIEW, DROP VIEW