1 Read Me First
1.1 What is Plisqin?
1.2 Installation
1.3 Motivation
1.4 Project Scope
1.5 Variants
1.6 Usage Patterns
1.7 What Should I Read Next?
2 Using define-schema
2.1 Teaser
2.2 Getting Started
2.3 The Tasks
2.3.1 Task 1: Subcategories & Categories
2.3.2 Task 2: Products & Subcategories & Categories
2.3.3 Task 3: Products with Non-Zero Sales
2.3.4 Task 4: Sales by Product
2.3.5 Task 5: Sales by Subcategory
2.3.6 Task 6: Sales by Anything
2.3.7 Task 7: Sales by Anything with Date Range
2.3.7.1 Extra Credit 1
2.3.7.2 Extra Credit 2 (More Challenging)
2.4 Appendix A: Generating the Initial Schema Definition
3 Aggregates
3.1 Grouping
3.2 Traditional Aggregation
3.3 Illegal vs Quasi-Legal Selects
3.4 Grouped Join Aggregation
3.5 Summary
4 Nullability
4.1 Introduction to Nullability
4.2 Avoiding Three-Valued Logic
4.2.1 An Example
4.2.2 Fallback Meanings
4.2.3 Truth Table
5 Refactoring Recipes
5.1 Elemental Recipes
5.1.1 Join -> Expression
5.1.2 Expression -> Procedure
5.1.3 Procedure -> define-schema
5.1.4 Join <-> Define
5.2 Compound Recipes
5.2.1 Singular Join -> Schema Definition
5.2.2 Grouped Join -> Schema Definition
5.2.3 Scalar -> Schema Definition
5.2.4 Scalar Flattening
5.2.5 Inline Join
5.2.6 Name Clarification
6 Reference
6.1 plisqin-lib
6.1.1 Nullability
6.1.2 Token Types
6.1.3 Dialects
6.2 plisqin-lib/unsafe
6.2.1 Clauses
6.2.2 Aggregates
6.2.3 Misc
6.2.4 Date Math
6.2.5 Operators
6.3 plisqin-lib/loose
6.4 plisqin-lib/strict
6.4.1 Clauses
6.4.2 Aggregates
6.4.3 Misc
6.4.4 Date Math
6.4.5 Operators
6.5 plisqin-examples/adventure-works
7 Plisqin as a Research Language
7.1 My Ideal Query Language
7.1.1 Rule of Power
7.1.2 Rule of Uniformity
7.1.3 Rule of Polymorphism
7.2 Plisqin Desugared
7.3 Open Questions and Shortcomings
7.3.1 The Limit/Offset Problem
7.3.2 Nominal vs Structural Typing
7.3.2.1 Basic Structural Typing is not Good Enough
7.3.2.2 A Hybrid Approach?
7.3.3 Lateral Joins
7.3.4 Nullability and exists
7.4 Other Random Thoughts
7.4.1 Cardinality
7.4.2 Separating Specification from Implementation