/CTddSqlLite

Sql Lite Engine Created in C while TDD'ing

Primary LanguageC++

TODO

  1. The repl is not properly tested right now

Reason -> Who, Why, How, What

C# Project: Write In Memory Testable DB Project

  1. WHO: Developers (Testing View)
    1. WHY: Must be swappable for tests (Db Concepts)
      1. HOW: SQL input is the same as SQL server
      2. HOW: Can support multiple versions of SQL Server DB/Azure
  2. WHO: Me
    1. WHY: Learn SqlServer Database Concepts (swap for tests)
      1. HOW: Learn about the underlying types I need to support
      2. HOW: How the database takes input with various queries
      3. HOW: What are the typical queries?
      4. HOW: How to store/retrieve/construct the database
      5. HOW: Look at DB from an input/black box perspective

C Project: Write Performance C DB Project

  1. WHO: Developers (Performance View)
    1. WHY: Database must be performant
      1. HOW: manage memory properly for different requests
      2. HOW: store memory efficiently
      3. HOW: retrieve memory efficiently
      4. HOW: file storage
    2. WHY: Database must be well tested
      1. HOW: Proper Logging
      2. HOW: Proper Testing for correctness and performance
    3. WHY: Database must have minimal types
      1. HOW: Limit to varchar(255) and ints, maybe uuid?
  2. WHO: Me
    1. WHY: Learn About C Programming
      1. HOW: Use Pluralsight and Udemy
      2. HOW: Books - C Programming Language
      3. HOW: Mentoring - Doug

C Project: Write an Interpreter/Compiler in C for C#/Java?!

  1. WHO: Developers (Functional View)
    1. Build simplified tokenizer and parser
    2. Good testing for correctness
  2. WHO: Me
    1. WHY: Learn assembly and the underlying layer
    2. WHY: Learn how garbage collection works in a higher level language?

Why?

Learning new concepts and the underlying technology layer.

Description

Write a SQL Lite database engine to explore database concepts, TDD, and C programming.

Requirements

  1. CREATE TABLE STATEMENT
  2. INSERT INTO STATEMENT
  3. SELECT STATEMENT