[HN Gopher] Show HN: GoSQL - A query engine in 319 LoC
       ___________________________________________________________________
        
       Show HN: GoSQL - A query engine in 319 LoC
        
       I've always been curious about how SQL engines actually work.  So I
       built a minimum viable SQL engine in Go.  - Supports CSV files as
       tables  - Supports SELECT, FROM, WHERE, LIMIT  It's very simple:
       1. Parses query string  2. Converts it into an AST representation
       3. Executes the query against the CSV  4. Returns the results
        
       Author : archiewood
       Score  : 56 points
       Date   : 2024-10-07 12:39 UTC (10 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | coredog64 wrote:
       | This is very handy given the recent _de-emphasizing_ of S3 Select
       | by AWS.
        
       | lainga wrote:
       | Try this talk about sqlite!
       | 
       | https://www.youtube.com/watch?v=ZSKLA81tBis
        
       | stevekemp wrote:
       | Nice job.
       | 
       | You can see this post for the start of a guide in implementing
       | something very similar "Writing a SQL database from scratch in
       | Go":
       | 
       | https://notes.eatonphil.com/database-basics.html
       | 
       | (Use the tag "sql" to find the later parts. Sadly not linked
       | directly from that first one.)
        
         | eatonphil wrote:
         | Thanks for mentioning! One of the most fun parts of this series
         | I think is handling indexes on INSERT and actually making use
         | of them based on (effectively) pattern matching on WHERE
         | clauses.
         | 
         | > (Use the tag "sql" to find the later parts. Sadly not linked
         | directly from that first one.)
         | 
         | There's a "Note" section right below that title that links to
         | the other posts. :) I guess it is UX feedback that this was not
         | obvious to spot.
        
           | archiewood wrote:
           | Wow this is much more complete than mine, kudos.
        
       | iamcreasy wrote:
       | Nice. I also wanted to know the details behind database engine
       | and ACID compliance. So, decided to follow Database Design and
       | Implementation by Edward Sciore, and re-implemented the database
       | in Python: https://github.com/quazi-irfan/pySimpleDB
       | 
       | This db treats file as raw disk and reads and writes in blocks.
       | In the book, your step 3 and 4 will be a start of a transaction
       | that uses recovery manager to log changes introduced by the
       | query, and buffer manager to page in and out file blocks in
       | memory. This book uses serializable isolation, so if buffer pool
       | is full and can't page in new block or if another transactions
       | are writing to that same block - the newer transaction will be
       | rolled back after a brief wait.
        
       | zh2408 wrote:
       | Feel like you can achieve something similar in duckdb? duckdb
       | allows you to query local csv, parquet, and even remote ones?
        
         | archiewood wrote:
         | Oh definitely, I love DuckDB.
         | 
         | This was a learning exercise for me as much as anything
        
       ___________________________________________________________________
       (page generated 2024-10-07 23:01 UTC)