Coverage report: /home/ellis/comp/core/lib/q/engine.lisp

KindCoveredAll%
expression024 0.0
branch00nil
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 ;;; engine.lisp --- Query Engine Protocol
2
 
3
 ;; Query Engines
4
 
5
 ;;; Commentary:
6
 
7
 ;; A QUERY-ENGINE is a single object which provides top-level interfaces for
8
 ;; all levels of Query processing.
9
 
10
 ;;; Code:
11
 (in-package :q)
12
 
13
 ;;; Vars
14
 (defvar *query-engine*)
15
 (deftype query-dialect-designator () `(member :sql :dql :simple))
16
 (declaim (query-dialect-designator *query-dialect*))
17
 (defvar *query-dialect* :sql)
18
 
19
 ;;; Engine
20
 
21
 ;; (sb-mop:class-slots (find-class 'query-engine)) ;; service schema
22
 (defclass query-engine (query-planner execution-context data-source engine)
23
   ((sources :initarg :sources)
24
    (parser :initarg :parser :type query-parser)
25
    (optimizer :initarg :optimizer :type query-optimizer)))
26
 
27
 (defgeneric sql (self input)
28
   (:documentation "Process sql input and return a DATA-FRAME."))
29
 
30
 (defgeneric dql (self input)
31
   (:documentation "Process dql input and return a DATA-FRAME."))
32
 
33
 (defmethod execute* ((self query-engine) (plan data-frame))
34
   (declare (ignore self))
35
   (execute plan))
36
 
37
 (defmethod optimize-query ((self query-engine) (plan logical-plan))
38
   (optimize-query (slot-value self 'query-optimizer) plan))
39
 
40
 (defmethod execute* ((self query-engine) (plan logical-plan))
41
   (execute
42
    (make-physical-plan
43
     (optimize-query self plan))))