On this page:
Plisqin
8.12

Plisqin🔗ℹ

    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