Project

General

Profile

hql-issue2.p

testcase for relational ops / unknown values - Ovidiu Maxiniuc, 04/22/2015 01:00 PM

Download (2.25 KB)

 
1
DEFINE TEMP-TABLE tt1
2
    FIELD f1 AS INT
3
    FIELD f2 AS DATE.
4

    
5
DEFINE TEMP-TABLE tt2
6
    FIELD f1 AS INT
7
    FIELD f2 AS DATE.
8

    
9
CREATE tt1. ASSIGN tt1.f1 = -1 tt1.f2 = ?.
10
CREATE tt2. ASSIGN tt2.f1 = -1 tt2.f2 = 01/01/01.
11

    
12
CREATE tt1. ASSIGN tt1.f1 = 2 tt1.f2 = TODAY.
13
CREATE tt2. ASSIGN tt2.f1 = 2 tt2.f2 = TODAY.
14

    
15
CREATE tt1. ASSIGN tt1.f1 = 3 tt1.f2 = ?.
16
CREATE tt2. ASSIGN tt2.f1 = 3 tt2.f2 = ?.
17

    
18
CREATE tt1. ASSIGN tt1.f1 = 0 tt1.f2 = ?.
19
CREATE tt2. ASSIGN tt2.f1 = 0 tt2.f2 = TODAY.
20

    
21
CREATE tt1. ASSIGN tt1.f1 = ? tt1.f2 = 10/10/10.
22
CREATE tt2. ASSIGN tt2.f1 = ? tt2.f2 = TODAY.
23

    
24
CREATE tt1. ASSIGN tt1.f1 = 5 tt1.f2 = 12/12/12.
25
CREATE tt2. ASSIGN tt2.f1 = 5 tt2.f2 = 12/12/12.
26

    
27
CREATE tt1. ASSIGN tt1.f1 = 7 tt1.f2 = 11/11/11.
28
CREATE tt2. ASSIGN tt2.f1 = 7 tt2.f2 = 11/11/11.
29

    
30
DEFINE QUERY qq FOR tt1, tt2.
31
DEFINE STREAM str.
32
OUTPUT STREAM str TO "hql-issue2.txt".
33

    
34
FUNCTION f-test RETURN INTEGER (op AS CHARACTER) :
35
   DEFINE VAR cnt AS INTEGER.
36
   DISPLAY op SKIP WITH NO-LABEL FRAME fr.
37
   DISPLAY STREAM str op WITH NO-LABEL. 
38
   GET FIRST qq. 
39
   cnt = 0.
40

    
41
   DO WHILE AVAILABLE tt1 WITH FRAME f-test DOWN:
42
      DISPLAY tt1 WITH FRAME fr.
43
      DISPLAY tt2 WITH FRAME fr.
44
      DISPLAY STREAM str tt1.f1 tt2.f1 "|" tt1.f2 tt2.f2 WITH NO-LABEL. 
45

    
46
      cnt = cnt + 1 + (IF tt1.f1 = ? THEN 100 ELSE 0) + (IF tt1.f2 = ? THEN 10000 ELSE 0).
47
      GET NEXT qq.
48
   END.
49

    
50
   DISPLAY STREAM str cnt SKIP. 
51
   RETURN cnt.
52
END FUNCTION.
53

    
54
DISPLAY  "                  EQ         NE         LT         GT        LTE        GTE" SKIP
55
         "Expected:     30,008    180,741        107        512     30,115     30,520" SKIP
56
         "Computed:".
57

    
58
OPEN QUERY qq PRESELECT EACH tt1, EACH tt2 WHERE tt2.f2 EQ tt1.f2.
59
DISPLAY f-test('EQ').
60
CLOSE QUERY qq.
61
OPEN QUERY qq PRESELECT EACH tt1, EACH tt2 WHERE tt2.f2 NE tt1.f2.
62
DISPLAY f-test('NE').
63
CLOSE QUERY qq.
64
OPEN QUERY qq PRESELECT EACH tt1, EACH tt2 WHERE tt2.f2 LT tt1.f2.
65
DISPLAY f-test('LT').
66
CLOSE QUERY qq.
67
OPEN QUERY qq PRESELECT EACH tt1, EACH tt2 WHERE tt2.f2 GT tt1.f2.
68
DISPLAY f-test('GT').
69
CLOSE QUERY qq.
70
OPEN QUERY qq PRESELECT EACH tt1, EACH tt2 WHERE tt2.f2 <= tt1.f2.
71
DISPLAY f-test('LTE').
72
CLOSE QUERY qq.
73
OPEN QUERY qq PRESELECT EACH tt1, EACH tt2 WHERE tt2.f2 >= tt1.f2.
74
DISPLAY f-test('GTE').
75
CLOSE QUERY qq.
76

    
77

    
78
OUTPUT STREAM str CLOSE.
79