0000: 2f 2f 20 66 69 6c 74 65 72 6d 61 63 68 69 6e 65 // filtermachine
0010: 2e 68 0d 0a 23 70 72 61 67 6d 61 20 6f 6e 63 65 .h..#pragma once
0020: 0d 0a 0d 0a 65 6e 75 6d 20 4f 70 43 6f 64 65 73 ....enum OpCodes
0030: 0d 0a 7b 0d 0a 09 73 74 6f 70 2c 0d 0a 09 2f 2f ..{...stop,...//
0040: 20 d3 f1 f2 e0 ed ee e2 e8 f2 fc 20 ed f3 e6 ed .......... ....
0050: fb e9 20 e8 ed e4 e5 ea f1 0d 0a 09 73 65 6c 65 .. .........sele
0060: 63 74 49 64 78 2c 0d 0a 09 2f 2f 20 d7 f2 e5 ed ctIdx,...// ....
0070: e8 e5 20 e0 f0 e3 f3 ec e5 ed f2 ee e2 0d 0a 09 .. .............
0080: 67 65 74 41 72 67 54 65 78 74 2c 0d 0a 09 67 65 getArgText,...ge
0090: 74 41 72 67 4e 75 6d 65 72 69 63 2c 0d 0a 09 67 tArgNumeric,...g
00a0: 65 74 41 72 67 4c 6f 6e 67 2c 0d 0a 09 2f 2f 20 etArgLong,...//
00b0: d0 e0 e1 ee f2 e0 20 f1 20 f3 f1 eb ee e2 e8 ff ...... . .......
00c0: ec e8 20 3d 0d 0a 09 73 65 74 45 71 75 61 6c 53 .. =...setEqualS
00d0: 74 72 69 6e 67 2c 0d 0a 09 73 65 74 45 71 75 61 tring,...setEqua
00e0: 6c 4e 75 6d 65 72 69 63 2c 0d 0a 09 73 65 74 45 lNumeric,...setE
00f0: 71 75 61 6c 4c 6f 6e 67 2c 0d 0a 09 0d 0a 09 63 qualLong,......c
0100: 6d 70 53 74 72 69 6e 67 45 71 75 61 6c 5f 45 71 mpStringEqual_Eq
0110: 75 61 6c 2c 0d 0a 09 63 6d 70 4e 75 6d 65 72 69 ual,...cmpNumeri
0120: 63 45 71 75 61 6c 5f 45 71 75 61 6c 2c 0d 0a 09 cEqual_Equal,...
0130: 63 6d 70 4c 6f 6e 67 45 71 75 61 6c 5f 45 71 75 cmpLongEqual_Equ
0140: 61 6c 2c 0d 0a 0d 0a 09 2f 2f 20 d0 e0 e1 ee f2 al,.....// .....
0150: e0 20 f1 20 f3 f1 eb ee e2 e8 ff ec e8 20 3e 0d . . ......... >.
0160: 0a 09 63 6d 70 53 74 72 69 6e 67 5f 4d 69 6e 5f ..cmpString_Min_
0170: 45 71 75 61 6c 2c 0d 0a 09 63 6d 70 4e 75 6d 65 Equal,...cmpNume
0180: 72 69 63 5f 4d 69 6e 5f 45 71 75 61 6c 2c 0d 0a ric_Min_Equal,..
0190: 09 63 6d 70 4c 6f 6e 67 5f 4d 69 6e 5f 45 71 75 .cmpLong_Min_Equ
01a0: 61 6c 2c 0d 0a 09 0d 0a 09 73 65 74 4d 69 6e 53 al,......setMinS
01b0: 74 72 69 6e 67 2c 0d 0a 09 73 65 74 4d 69 6e 4e tring,...setMinN
01c0: 75 6d 65 72 69 63 2c 0d 0a 09 73 65 74 4d 69 6e umeric,...setMin
01d0: 4c 6f 6e 67 2c 0d 0a 09 0d 0a 09 73 65 6c 4d 69 Long,......selMi
01e0: 6e 53 74 72 69 6e 67 2c 0d 0a 09 73 65 6c 4d 69 nString,...selMi
01f0: 6e 4e 75 6d 65 72 69 63 2c 0d 0a 09 73 65 6c 4d nNumeric,...selM
0200: 69 6e 4c 6f 6e 67 2c 0d 0a 0d 0a 09 2f 2f 20 d0 inLong,.....// .
0210: e0 e1 ee f2 e0 20 f1 20 f3 f1 eb ee e2 e8 ff ec ..... . ........
0220: e8 20 3e 3d 0d 0a 09 63 6d 70 53 74 72 69 6e 67 . >=...cmpString
0230: 5f 4d 69 6e 45 71 5f 45 71 75 61 6c 2c 0d 0a 09 _MinEq_Equal,...
0240: 63 6d 70 4e 75 6d 65 72 69 63 5f 4d 69 6e 45 71 cmpNumeric_MinEq
0250: 5f 45 71 75 61 6c 2c 0d 0a 09 63 6d 70 4c 6f 6e _Equal,...cmpLon
0260: 67 5f 4d 69 6e 45 71 5f 45 71 75 61 6c 2c 0d 0a g_MinEq_Equal,..
0270: 09 0d 0a 09 73 65 74 4d 69 6e 45 71 53 74 72 69 ....setMinEqStri
0280: 6e 67 2c 0d 0a 09 73 65 74 4d 69 6e 45 71 4e 75 ng,...setMinEqNu
0290: 6d 65 72 69 63 2c 0d 0a 09 73 65 74 4d 69 6e 45 meric,...setMinE
02a0: 71 4c 6f 6e 67 2c 0d 0a 09 0d 0a 09 73 65 6c 4d qLong,......selM
02b0: 69 6e 45 71 53 74 72 69 6e 67 2c 0d 0a 09 73 65 inEqString,...se
02c0: 6c 4d 69 6e 45 71 4e 75 6d 65 72 69 63 2c 0d 0a lMinEqNumeric,..
02d0: 09 73 65 6c 4d 69 6e 45 71 4c 6f 6e 67 2c 0d 0a .selMinEqLong,..
02e0: 0d 0a 09 2f 2f 20 d0 e0 e1 ee f2 e0 20 f1 20 f3 ...// ...... . .
02f0: f1 eb ee e2 e8 ff ec e8 20 3c 0d 0a 09 63 6d 70 ........ <...cmp
0300: 53 74 72 69 6e 67 5f 4d 61 78 5f 45 71 75 61 6c String_Max_Equal
0310: 2c 0d 0a 09 63 6d 70 4e 75 6d 65 72 69 63 5f 4d ,...cmpNumeric_M
0320: 61 78 5f 45 71 75 61 6c 2c 0d 0a 09 63 6d 70 4c ax_Equal,...cmpL
0330: 6f 6e 67 5f 4d 61 78 5f 45 71 75 61 6c 2c 0d 0a ong_Max_Equal,..
0340: 0d 0a 09 63 6d 70 53 74 72 69 6e 67 5f 4d 61 78 ...cmpString_Max
0350: 5f 4d 69 6e 69 6d 75 6d 2c 0d 0a 09 63 6d 70 4e _Minimum,...cmpN
0360: 75 6d 65 72 69 63 5f 4d 61 78 5f 4d 69 6e 69 6d umeric_Max_Minim
0370: 75 6d 2c 0d 0a 09 63 6d 70 4c 6f 6e 67 5f 4d 61 um,...cmpLong_Ma
0380: 78 5f 4d 69 6e 69 6d 75 6d 2c 0d 0a 0d 0a 09 73 x_Minimum,.....s
0390: 65 74 4d 61 78 53 74 72 69 6e 67 2c 0d 0a 09 73 etMaxString,...s
03a0: 65 74 4d 61 78 4e 75 6d 65 72 69 63 2c 0d 0a 09 etMaxNumeric,...
03b0: 73 65 74 4d 61 78 4c 6f 6e 67 2c 0d 0a 0d 0a 09 setMaxLong,.....
03c0: 73 65 6c 4d 61 78 53 74 72 69 6e 67 2c 0d 0a 09 selMaxString,...
03d0: 73 65 6c 4d 61 78 4e 75 6d 65 72 69 63 2c 0d 0a selMaxNumeric,..
03e0: 09 73 65 6c 4d 61 78 4c 6f 6e 67 2c 0d 0a 0d 0a .selMaxLong,....
03f0: 09 2f 2f 20 d0 e0 e1 ee f2 e0 20 f1 20 f3 f1 eb .// ...... . ...
0400: ee e2 e8 ff ec e8 20 3c 3d 0d 0a 09 63 6d 70 53 ...... <=...cmpS
0410: 74 72 69 6e 67 5f 4d 61 78 45 71 5f 45 71 75 61 tring_MaxEq_Equa
0420: 6c 2c 0d 0a 09 63 6d 70 4e 75 6d 65 72 69 63 5f l,...cmpNumeric_
0430: 4d 61 78 45 71 5f 45 71 75 61 6c 2c 0d 0a 09 63 MaxEq_Equal,...c
0440: 6d 70 4c 6f 6e 67 5f 4d 61 78 45 71 5f 45 71 75 mpLong_MaxEq_Equ
0450: 61 6c 2c 0d 0a 0d 0a 09 63 6d 70 53 74 72 69 6e al,.....cmpStrin
0460: 67 5f 4d 61 78 45 71 5f 4d 69 6e 69 6d 75 6d 2c g_MaxEq_Minimum,
0470: 0d 0a 09 63 6d 70 4e 75 6d 65 72 69 63 5f 4d 61 ...cmpNumeric_Ma
0480: 78 45 71 5f 4d 69 6e 69 6d 75 6d 2c 0d 0a 09 63 xEq_Minimum,...c
0490: 6d 70 4c 6f 6e 67 5f 4d 61 78 45 71 5f 4d 69 6e mpLong_MaxEq_Min
04a0: 69 6d 75 6d 2c 0d 0a 0d 0a 09 73 65 74 4d 61 78 imum,.....setMax
04b0: 45 71 53 74 72 69 6e 67 2c 0d 0a 09 73 65 74 4d EqString,...setM
04c0: 61 78 45 71 4e 75 6d 65 72 69 63 2c 0d 0a 09 73 axEqNumeric,...s
04d0: 65 74 4d 61 78 45 71 4c 6f 6e 67 2c 0d 0a 0d 0a etMaxEqLong,....
04e0: 09 73 65 6c 4d 61 78 45 71 53 74 72 69 6e 67 2c .selMaxEqString,
04f0: 0d 0a 09 73 65 6c 4d 61 78 45 71 4e 75 6d 65 72 ...selMaxEqNumer
0500: 69 63 2c 0d 0a 09 73 65 6c 4d 61 78 45 71 4c 6f ic,...selMaxEqLo
0510: 6e 67 2c 0d 0a 09 0d 0a 09 2f 2f 20 ca ee e3 e4 ng,......// ....
0520: e0 20 ee e1 f0 e0 e1 ee f2 e0 ed fb 20 e2 f1 e5 . .......... ...
0530: 20 f3 f1 eb ee e2 e8 ff 20 e4 eb ff 20 ee e4 ed ....... ... ...
0540: ee e3 ee 20 ef ee eb ff 20 e8 ed e4 e5 ea f1 e0 ... .... .......
0550: 0d 0a 09 73 65 74 46 75 6c 6c 4b 65 79 45 71 75 ...setFullKeyEqu
0560: 61 6c 2c 0d 0a 09 73 65 74 46 75 6c 6c 4b 65 79 al,...setFullKey
0570: 4d 69 6e 69 6d 75 6d 2c 0d 0a 09 73 65 74 46 75 Minimum,...setFu
0580: 6c 6c 4b 65 79 4d 61 78 69 6d 75 6d 2c 0d 0a 0d llKeyMaximum,...
0590: 0a 09 73 65 74 50 61 72 74 4b 65 79 45 71 75 61 ..setPartKeyEqua
05a0: 6c 54 65 78 74 2c 0d 0a 09 73 65 74 50 61 72 74 lText,...setPart
05b0: 4b 65 79 45 71 75 61 6c 4e 75 6d 65 72 69 63 2c KeyEqualNumeric,
05c0: 0d 0a 09 73 65 74 50 61 72 74 4b 65 79 45 71 75 ...setPartKeyEqu
05d0: 61 6c 4c 6f 6e 67 2c 0d 0a 0d 0a 09 73 65 74 50 alLong,.....setP
05e0: 61 72 74 4b 65 79 4d 69 6e 69 6d 75 6d 54 65 78 artKeyMinimumTex
05f0: 74 2c 0d 0a 09 73 65 74 50 61 72 74 4b 65 79 4d t,...setPartKeyM
0600: 69 6e 69 6d 75 6d 4e 75 6d 65 72 69 63 2c 0d 0a inimumNumeric,..
0610: 09 73 65 74 50 61 72 74 4b 65 79 4d 69 6e 69 6d .setPartKeyMinim
0620: 75 6d 4c 6f 6e 67 2c 0d 0a 09 0d 0a 09 73 65 74 umLong,......set
0630: 50 61 72 74 4b 65 79 4d 61 78 69 6d 75 6d 54 65 PartKeyMaximumTe
0640: 78 74 2c 0d 0a 09 73 65 74 50 61 72 74 4b 65 79 xt,...setPartKey
0650: 4d 61 78 69 6d 75 6d 4e 75 6d 65 72 69 63 2c 0d MaximumNumeric,.
0660: 0a 09 73 65 74 50 61 72 74 4b 65 79 4d 61 78 69 ..setPartKeyMaxi
0670: 6d 75 6d 4c 6f 6e 67 2c 0d 0a 0d 0a 09 2f 2f 20 mumLong,.....//
0680: c7 e0 ef ee ec ed e8 f2 fc 20 ed ee ec e5 f0 20 ......... .....
0690: e7 e0 ef e8 f1 e8 20 ef f0 e8 20 ef e5 f0 e5 f5 ...... ... .....
06a0: ee e4 e5 20 ef ee 20 ed ee ec e5 f0 f3 20 e7 e0 ... .. ...... ..
06b0: ef e8 f1 e8 0d 0a 09 73 74 6f 72 65 52 65 63 4e .......storeRecN
06c0: 6f 2c 0d 0a 09 0d 0a 09 2f 2f 20 ca ee e3 e4 e0 o,......// .....
06d0: 20 ee e1 f0 e0 e1 ee f2 e0 ed fb 20 e2 f1 e5 20 .......... ...
06e0: f3 f1 eb ee e2 e8 ff 20 e4 eb ff 20 ee e4 ed ee ....... ... ....
06f0: e3 ee 20 ef ee eb ff 2c 20 ed e5 20 e2 f5 ee e4 .. ...., .. ....
0700: ff f9 e5 e3 ee 20 e2 20 e8 ed e4 e5 ea f1 0d 0a ..... . ........
0710: 09 61 64 64 54 65 73 74 45 71 75 61 6c 54 65 78 .addTestEqualTex
0720: 74 2c 0d 0a 09 61 64 64 54 65 73 74 45 71 75 61 t,...addTestEqua
0730: 6c 4e 75 6d 65 72 69 63 2c 0d 0a 09 61 64 64 54 lNumeric,...addT
0740: 65 73 74 45 71 75 61 6c 4c 6f 6e 67 2c 0d 0a 09 estEqualLong,...
0750: 61 64 64 54 65 73 74 45 71 75 61 6c 52 65 63 4e addTestEqualRecN
0760: 6f 2c 0d 0a 0d 0a 09 61 64 64 54 65 73 74 4d 69 o,.....addTestMi
0770: 6e 69 6d 75 6d 54 65 78 74 2c 0d 0a 09 61 64 64 nimumText,...add
0780: 54 65 73 74 4d 69 6e 69 6d 75 6d 4e 75 6d 65 72 TestMinimumNumer
0790: 69 63 2c 0d 0a 09 61 64 64 54 65 73 74 4d 69 6e ic,...addTestMin
07a0: 69 6d 75 6d 4c 6f 6e 67 2c 0d 0a 09 61 64 64 54 imumLong,...addT
07b0: 65 73 74 4d 69 6e 69 6d 75 6d 52 65 63 4e 6f 2c estMinimumRecNo,
07c0: 0d 0a 0d 0a 09 61 64 64 54 65 73 74 4d 61 78 69 .....addTestMaxi
07d0: 6d 75 6d 54 65 78 74 2c 0d 0a 09 61 64 64 54 65 mumText,...addTe
07e0: 73 74 4d 61 78 69 6d 75 6d 4e 75 6d 65 72 69 63 stMaximumNumeric
07f0: 2c 0d 0a 09 61 64 64 54 65 73 74 4d 61 78 69 6d ,...addTestMaxim
0800: 75 6d 4c 6f 6e 67 2c 0d 0a 09 61 64 64 54 65 73 umLong,...addTes
0810: 74 4d 61 78 69 6d 75 6d 52 65 63 4e 6f 2c 0d 0a tMaximumRecNo,..
0820: 0d 0a 0d 0a 0d 0a 2f 2f 2f 2f 20 c2 fb e1 ee f0 ......//// .....
0830: 20 f1 f2 e0 f0 f2 ee e2 ee e3 ee 20 e8 20 ea ee .......... . ..
0840: ed e5 f7 ed ee e3 ee 20 ea eb fe f7 e0 0d 0a 2f ....... ......./
0850: 2a 0d 0a c2 fb e1 ee f0 20 ed e0 e8 ec e5 ed fc *....... .......
0860: f8 e5 e3 ee 20 ea eb fe f7 e0 2e 0d 0a c2 ee e7 .... ...........
0870: ec ee e6 ed fb 20 e2 e0 f0 e8 e0 ed f2 fb 3a 0d ..... ........:.
0880: 0a c7 e0 e4 e0 ed 20 ec e8 ed 2d ef ee eb ed fb ...... ...-.....
0890: e9 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed 20 f1 f2 . ........... ..
08a0: f0 ee e3 e8 e9 20 ef ee eb ed fb e9 20 ea eb fe ..... ...... ...
08b0: f7 0d 0a c7 e0 e4 e0 ed 20 ec e8 ed 2d f7 e0 f1 ........ ...-...
08c0: f2 e8 f7 ed fb e9 20 ea eb fe f7 0d 0a c7 e0 e4 ...... .........
08d0: e0 ed 20 f1 f2 f0 ee e3 e8 e9 20 f7 e0 f1 f2 e8 .. ....... .....
08e0: f7 ed fb e9 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed .... ...........
08f0: 20 ec e8 ed 2d ef ee eb ed fb e9 20 ea eb fe f7 ...-...... ....
0900: 20 e8 20 ec e8 ed 2d f7 e0 f1 f2 e8 f7 ed fb e9 . ...-.........
0910: 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed 20 ec e8 ed ........... ...
0920: 2d ef ee eb ed fb e9 20 ea eb fe f7 20 e8 20 f1 -...... .... . .
0930: f2 f0 ee e3 e8 e9 20 f7 e0 f1 f2 e8 f7 ed fb e9 ...... .........
0940: 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed 20 f1 f2 f0 ........... ...
0950: ee e3 e8 e9 20 ef ee eb ed fb e9 20 ea eb fe f7 .... ...... ....
0960: 20 e8 20 ec e8 ed 2d f7 e0 f1 f2 e8 f7 ed fb e9 . ...-.........
0970: 20 ea eb fe f7 0d 0a c7 e0 e4 e0 ed 20 f1 f2 f0 ........... ...
0980: ee e3 e8 e9 20 ef ee eb ed fb e9 20 ea eb fe f7 .... ...... ....
0990: 20 e8 20 f1 f2 f0 ee e3 e8 e9 20 f7 e0 f1 f2 e8 . ....... .....
09a0: f7 ed fb e9 20 ea eb fe f7 2e 0d 0a cd f3 e6 ed .... ...........
09b0: ee 20 f1 f0 e0 e2 ed e5 ed e8 e5 ec 20 ea eb fe . .......... ...
09c0: f7 e5 e9 20 ee ef f0 e5 e4 e5 eb e8 f2 fc 2c 20 ... ..........,
09d0: f7 f2 ee 20 e8 e7 20 fd f2 ee e3 ee 20 e1 f3 e4 ... .. ..... ...
09e0: e5 f2 20 e8 f1 ef ee eb fc e7 ee e2 e0 f2 fc f1 .. .............
09f0: ff 20 ea e0 ea 20 ec e8 ed 2d ea eb fe f7 0d 0a . ... ...-......
0a00: c2 e0 f0 e8 e0 ed f2 fb 20 ee f2 e2 e5 f2 e0 20 ........ ......
0a10: 2d 20 ec e8 ed 2d ef ee eb ed fb e9 20 ea eb fe - ...-...... ...
0a20: f7 2c 20 f1 f2 f0 ee e3 e8 e9 2d ef ee eb ed fb ., .......-.....
0a30: e9 20 ea eb fe f7 2c 20 ec e8 ed 2d f7 e0 f1 f2 . ...., ...-....
0a40: e8 f7 ed fb e9 20 ea eb fe f7 2c 20 f1 f2 f0 ee ..... ...., ....
0a50: e3 e8 e9 20 f7 e0 f1 f2 e8 f7 ed fb e9 20 ea eb ... ......... ..
0a60: fe f7 2e 0d 0a 2a 2f 0d 0a 09 2f 2f 20 d3 f1 f2 .....*/...// ...
0a70: e0 ed ee e2 e8 f2 fc 20 ec e8 ed e8 ec e0 eb fc ....... ........
0a80: ed fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 ... .... ......
0a90: ed e0 e8 ec e5 ed fc f8 e5 ec f3 20 ef ee eb ed ........... ....
0aa0: ee ec f3 0d 0a 09 73 65 74 4d 69 6e 4b 65 79 5f ......setMinKey_
0ab0: 46 4b 4d 69 6e 2c 0d 0a 09 2f 2f 20 d3 f1 f2 e0 FKMin,...// ....
0ac0: ed ee e2 e8 f2 fc 20 ec e8 ed e8 ec e0 eb fc ed ...... .........
0ad0: fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 f1 .. .... ...... .
0ae0: f2 f0 ee e3 ee ec f3 20 ef ee eb ed ee ec f3 0d ....... ........
0af0: 0a 09 73 65 74 4d 69 6e 4b 65 79 5f 46 4b 45 71 ..setMinKey_FKEq
0b00: 75 61 6c 2c 0d 0a 09 2f 2f 20 d3 f1 f2 e0 ed ee ual,...// ......
0b10: e2 e8 f2 fc 20 ec e8 ed e8 ec e0 eb fc ed fb e9 .... ...........
0b20: 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 ed e0 e8 .... ...... ...
0b30: ec e5 ed fc f8 e5 ec f3 20 f7 e0 f1 f2 e8 f7 ed ........ .......
0b40: ee ec f3 0d 0a 09 73 65 74 4d 69 6e 4b 65 79 5f ......setMinKey_
0b50: 50 4b 4d 69 6e 2c 0d 0a 09 2f 2f 20 d3 f1 f2 e0 PKMin,...// ....
0b60: ed ee e2 e8 f2 fc 20 ec e8 ed e8 ec e0 eb fc ed ...... .........
0b70: fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 f1 .. .... ...... .
0b80: f2 f0 ee e3 ee ec f3 20 f7 e0 f1 f2 e8 f7 ed ee ....... ........
0b90: ec f3 0d 0a 09 73 65 74 4d 69 6e 4b 65 79 5f 50 .....setMinKey_P
0ba0: 4b 45 71 75 61 6c 2c 0d 0a 09 2f 2f 20 c2 fb e1 KEqual,...// ...
0bb0: f0 e0 f2 fc 20 ec e8 ed e8 ec e0 eb fc ed fb e9 .... ...........
0bc0: 20 ea eb fe f7 20 e8 e7 20 ed e0 e8 ec e5 ed fc .... .. .......
0bd0: f8 e5 e3 ee 20 ef ee eb ed ee e3 ee 20 e8 20 ed .... ....... . .
0be0: e0 e8 ec e5 ed fc f8 e5 e3 ee 20 f7 e0 f1 f2 e8 .......... .....
0bf0: f7 ed ee e3 ee 0d 0a 09 73 65 6c 4d 69 6e 4b 65 ........selMinKe
0c00: 79 5f 46 4b 4d 69 6e 5f 50 4b 4d 69 6e 2c 0d 0a y_FKMin_PKMin,..
0c10: 09 2f 2f 20 c2 fb e1 f0 e0 f2 fc 20 ec e8 ed e8 .// ....... ....
0c20: ec e0 eb fc ed fb e9 20 ea eb fe f7 20 e8 e7 20 ....... .... ..
0c30: ed e0 e8 ec e5 ed fc f8 e5 e3 ee 20 ef ee eb ed ........... ....
0c40: ee e3 ee 20 e8 20 f1 f2 f0 ee e3 ee e3 ee 20 f7 ... . ........ .
0c50: e0 f1 f2 e8 f7 ed ee e3 ee 0d 0a 09 73 65 6c 4d ............selM
0c60: 69 6e 4b 65 79 5f 46 4b 4d 69 6e 5f 50 4b 45 71 inKey_FKMin_PKEq
0c70: 75 61 6c 2c 0d 0a 09 2f 2f 20 c2 fb e1 f0 e0 f2 ual,...// ......
0c80: fc 20 ec e8 ed e8 ec e0 eb fc ed fb e9 20 ea eb . ........... ..
0c90: fe f7 20 e8 e7 20 f1 f2 f0 ee e3 ee e3 ee 20 ef .. .. ........ .
0ca0: ee eb ed ee e3 ee 20 e8 20 ed e0 e8 ec e5 ed fc ...... . .......
0cb0: f8 e5 e3 ee 20 f7 e0 f1 f2 e8 f7 ed ee e3 ee 0d .... ...........
0cc0: 0a 09 73 65 6c 4d 69 6e 4b 65 79 5f 46 4b 45 71 ..selMinKey_FKEq
0cd0: 75 61 6c 5f 50 4b 4d 69 6e 2c 0d 0a 09 2f 2f 20 ual_PKMin,...//
0ce0: c2 fb e1 f0 e0 f2 fc 20 ec e8 ed e8 ec e0 eb fc ....... ........
0cf0: ed fb e9 20 ea eb fe f7 20 e8 e7 20 f1 f2 f0 ee ... .... .. ....
0d00: e3 ee e3 ee 20 ef ee eb ed ee e3 ee 20 e8 20 f1 .... ....... . .
0d10: f2 f0 ee e3 ee e3 ee 20 f7 e0 f1 f2 e8 f7 ed ee ....... ........
0d20: e3 ee 0d 0a 09 73 65 6c 4d 69 6e 4b 65 79 5f 46 .....selMinKey_F
0d30: 4b 45 71 75 61 6c 5f 50 4b 45 71 75 61 6c 2c 0d KEqual_PKEqual,.
0d40: 0a 2f 2f 20 c2 fb e1 ee f0 20 ed e0 e8 e1 ee eb .// ..... ......
0d50: fc f8 e5 e3 ee 20 ea eb fe f7 e0 20 2d 20 e0 ed ..... ..... - ..
0d60: e0 eb ee e3 e8 f7 ed ee 20 ed e0 e8 ec e5 ed fc ........ .......
0d70: f8 e5 ec f3 2e 0d 0a 09 2f 2f 20 d3 f1 f2 e0 ed ........// .....
0d80: ee e2 e8 f2 fc 20 ec e0 ea f1 e8 ec e0 eb fc ed ..... ..........
0d90: fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 ec .. .... ...... .
0da0: e0 ea f1 e8 ec e0 eb fc ed ee ec f3 20 ef ee eb ............ ...
0db0: ed ee ec f3 0d 0a 09 73 65 74 4d 61 78 4b 65 79 .......setMaxKey
0dc0: 5f 46 4b 4d 61 78 2c 0d 0a 09 2f 2f 20 d3 f1 f2 _FKMax,...// ...
0dd0: e0 ed ee e2 e8 f2 fc 20 ec e0 ea f1 e8 ec e0 eb ....... ........
0de0: fc ed fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 .... .... ......
0df0: 20 f1 f2 f0 ee e3 ee ec f3 20 ef ee eb ed ee ec ........ ......
0e00: f3 0d 0a 09 73 65 74 4d 61 78 4b 65 79 5f 46 4b ....setMaxKey_FK
0e10: 45 71 75 61 6c 2c 0d 0a 09 2f 2f 20 d3 f1 f2 e0 Equal,...// ....
0e20: ed ee e2 e8 f2 fc 20 ec e0 ea f1 e8 ec e0 eb fc ...... .........
0e30: ed fb e9 20 ea eb fe f7 20 f0 e0 e2 ed fb e9 20 ... .... ......
0e40: ec e0 ea f1 e8 ec e0 eb fc ed ee ec f3 20 f7 e0 ............. ..
0e50: f1 f2 e8 f7 ed ee ec f3 0d 0a 09 73 65 74 4d 61 ...........setMa
0e60: 78 4b 65 79 5f 50 4b 4d 61 78 2c 0d 0a 09 2f 2f xKey_PKMax,...//
0e70: 20 d3 f1 f2 e0 ed ee e2 e8 f2 fc 20 ec e0 ea f1 .......... ....
0e80: e8 ec e0 eb fc ed fb e9 20 ea eb fe f7 20 f0 e0 ........ .... ..
0e90: e2 ed fb e9 20 f1 f2 f0 ee e3 ee ec f3 20 f7 e0 .... ........ ..
0ea0: f1 f2 e8 f7 ed ee ec f3 0d 0a 09 73 65 74 4d 61 ...........setMa
0eb0: 78 4b 65 79 5f 50 4b 45 71 75 61 6c 2c 0d 0a 09 xKey_PKEqual,...
0ec0: 2f 2f 20 c2 fb e1 f0 e0 f2 fc 20 ec e0 ea f1 e8 // ....... .....
0ed0: ec e0 eb fc ed fb e9 20 ea eb fe f7 20 e8 e7 20 ....... .... ..
0ee0: ed e0 e8 e1 ee eb fc f8 e5 e3 ee 20 ef ee eb ed ........... ....
0ef0: ee e3 ee 20 e8 20 ed e0 e8 e1 ee eb fc f8 e5 e3 ... . ..........
0f00: ee 20 f7 e0 f1 f2 e8 f7 ed ee e3 ee 0d 0a 09 73 . .............s
0f10: 65 6c 4d 61 78 4b 65 79 5f 46 4b 4d 61 78 5f 50 elMaxKey_FKMax_P
0f20: 4b 4d 61 78 2c 0d 0a 09 2f 2f 20 c2 fb e1 f0 e0 KMax,...// .....
0f30: f2 fc 20 ec e0 ea f1 e8 ec e0 eb fc ed fb e9 20 .. ............
0f40: ea eb fe f7 20 e8 e7 20 ed e0 e8 e1 ee eb fc f8 .... .. ........
0f50: e5 e3 ee 20 ef ee eb ed ee e3 ee 20 e8 20 f1 f2 ... ....... . ..
0f60: f0 ee e3 ee e3 ee 20 f7 e0 f1 f2 e8 f7 ed ee e3 ...... .........
0f70: ee 0d 0a 09 73 65 6c 4d 61 78 4b 65 79 5f 46 4b ....selMaxKey_FK
0f80: 4d 61 78 5f 50 4b 45 71 75 61 6c 2c 0d 0a 09 2f Max_PKEqual,.../
0f90: 2f 20 c2 fb e1 f0 e0 f2 fc 20 ec e0 ea f1 e8 ec / ....... ......
0fa0: e0 eb fc ed fb e9 20 ea eb fe f7 20 e8 e7 20 f1 ...... .... .. .
0fb0: f2 f0 ee e3 ee e3 ee 20 ef ee eb ed ee e3 ee 20 ....... .......
0fc0: e8 20 ed e0 e8 e1 ee eb fc f8 e5 e3 ee 20 f7 e0 . ........... ..
0fd0: f1 f2 e8 f7 ed ee e3 ee 0d 0a 09 73 65 6c 4d 61 ...........selMa
0fe0: 78 4b 65 79 5f 46 4b 45 71 75 61 6c 5f 50 4b 4d xKey_FKEqual_PKM
0ff0: 61 78 2c 0d 0a 09 2f 2f 20 c2 fb e1 f0 e0 f2 fc ax,...// .......
1000: 20 ec e0 ea f1 e8 ec e0 eb fc ed fb e9 20 ea eb ............ ..
1010: fe f7 20 e8 e7 20 f1 f2 f0 ee e3 ee e3 ee 20 ef .. .. ........ .
1020: ee eb ed ee e3 ee 20 e8 20 f1 f2 f0 ee e3 ee e3 ...... . .......
1030: ee 20 f7 e0 f1 f2 e8 f7 ed ee e3 ee 0d 0a 09 73 . .............s
1040: 65 6c 4d 61 78 4b 65 79 5f 46 4b 45 71 75 61 6c elMaxKey_FKEqual
1050: 5f 50 4b 45 71 75 61 6c 2c 0d 0a 0d 0a 2f 2f 20 _PKEqual,....//
1060: d1 f0 e0 e2 ed e5 ed e8 e5 20 ec e0 ea f1 20 e8 ......... .... .
1070: 20 ec e8 ed 20 ea eb fe f7 e5 e9 2e 0d 0a 2f 2f ... .........//
1080: 20 c5 f1 eb e8 20 e4 e8 e0 ef e0 e7 ee ed 20 ee .... ........ .
1090: e3 f0 e0 ed e8 f7 e5 ed 20 f1 20 ee e1 ee e8 f5 ........ . .....
10a0: 20 f1 f2 ee f0 ee ed 2c 20 e8 20 f5 ee f2 ff 20 ......, . ....
10b0: e1 fb 20 e4 eb ff 20 ee e4 ed ee e9 20 e3 f0 e0 .. ... ..... ...
10c0: ed e8 f6 fb 20 e1 fb eb 20 e2 fb e1 ee f0 20 e8 .... ... ..... .
10d0: e7 20 e4 e2 f3 f5 20 e2 e0 f0 e8 e0 ed f2 ee e2 . .... .........
10e0: 0d 0a 2f 2f 20 ea eb fe f7 e5 e9 2c 20 f2 ee 20 ..// ......, ..
10f0: ed e0 e4 ee 20 ef f0 ee e2 e5 f0 e8 f2 fc 20 f0 .... ......... .
1100: e5 e7 f3 eb fc f2 e8 f0 f3 fe f9 e8 e5 20 ea eb ............. ..
1110: fe f7 e8 2c 20 f7 f2 ee 20 ee ed e8 20 ed e5 20 ..., ... ... ..
1120: e4 e0 eb e8 20 ef f3 f1 f2 ee e9 20 e4 e8 e0 ef .... ...... ....
1130: e0 e7 ee ed 0d 0a 2f 2f 20 f2 e5 20 ec e8 ed 20 ......// .. ...
1140: ea eb fe f7 20 e4 ee eb e6 e5 ed 20 e1 fb f2 fc .... ...... ....
1150: 20 ed e5 20 e1 ee eb fc f8 e5 20 ec e0 ea f1 e8 .. ...... .....
1160: ec e0 eb fc ed ee e3 ee 2e 20 c5 f1 eb e8 20 f1 ......... .... .
1170: 20 ee e1 ee e8 f5 20 e3 f0 e0 ed e8 f6 20 e4 e8 ..... ...... ..
1180: e0 ef e0 e7 ee ed e0 20 e8 f1 ef ee eb fc e7 ee ....... ........
1190: e2 e0 eb e8 f1 fc 0d 0a 2f 2f 20 ea eb fe f7 e8 ........// .....
11a0: 20 ee e4 ed ee e3 ee 20 f2 e8 ef e0 2c 20 f2 ee ...... ...., ..
11b0: 20 f2 e0 ea f3 fe 20 ef f0 ee e2 e5 f0 ea f3 20 ..... ........
11c0: e4 e5 eb e0 f2 fc 20 ed e5 20 ed e0 e4 ee 2c 20 ...... .. ....,
11d0: f2 e0 ea 20 ea e0 ea 20 ee ed e0 20 e4 e5 eb e0 ... ... ... ....
11e0: eb e0 e5 f2 f1 ff 20 ef f0 e8 20 ef ee f1 f2 f0 ...... ... .....
11f0: ee e5 ed e8 e8 0d 0a 2f 2f 20 ea eb fe f7 e5 e9 .......// ......
1200: 2e 0d 0a 09 63 6d 70 4d 69 6e 4d 61 78 4b 65 79 ....cmpMinMaxKey
1210: 73 2c 0d 0a 0d 0a 2f 2f 2f 2f 20 c2 fb e1 ee f0 s,....//// .....
1220: ea e0 0d 0a 09 2f 2f 20 c8 e4 f2 e8 20 ee f2 20 .....// .... ..
1230: ed e0 f7 e0 eb e0 20 e4 ee 20 ea ee ed f6 e0 0d ...... .. ......
1240: 0a 09 67 6f 74 6f 46 69 72 73 74 54 6f 4c 61 73 ..gotoFirstToLas
1250: 74 2c 0d 0a 09 2f 2f 20 c8 e4 f2 e8 20 ee f2 20 t,...// .... ..
1260: ed e0 f7 e0 eb e0 20 e4 ee 20 ec e0 ea f1 e8 ec ...... .. ......
1270: e0 eb fc ed ee e3 ee 20 ea eb fe f7 e0 0d 0a 09 ....... ........
1280: 67 6f 74 6f 46 69 72 73 74 54 6f 4d 61 78 2c 0d gotoFirstToMax,.
1290: 0a 09 2f 2f 20 c8 e4 f2 e8 20 ee f2 20 ec e8 ed ..// .... .. ...
12a0: e8 ec e0 eb fc ed ee e3 ee 20 ea eb fe f7 e0 20 ......... .....
12b0: e4 ee 20 ea ee ed f6 e0 0d 0a 09 67 6f 74 6f 4d .. ........gotoM
12c0: 69 6e 54 6f 4c 61 73 74 2c 0d 0a 09 2f 2f 20 c8 inToLast,...// .
12d0: e4 f2 e8 20 ee f2 20 ec e8 ed e8 ec e0 eb fc ed ... .. .........
12e0: ee e3 ee 20 ea eb fe f7 e0 20 e4 ee 20 ea ee ed ... ..... .. ...
12f0: e5 f7 ed ee e3 ee 20 ea eb fe f7 e0 0d 0a 09 67 ...... ........g
1300: 6f 74 6f 4d 69 6e 54 6f 4d 61 78 2c 0d 0a 09 2f otoMinToMax,.../
1310: 2f 20 c8 e4 f2 e8 20 ee f2 20 ea ee ed f6 e0 20 / .... .. .....
1320: e4 ee 20 ed e0 f7 e0 eb e0 0d 0a 09 67 6f 74 6f .. .........goto
1330: 4c 61 73 74 54 6f 46 69 72 73 74 2c 0d 0a 09 2f LastToFirst,.../
1340: 2f 20 c8 e4 f2 e8 20 ee f2 20 ea ee ed e5 f7 ed / .... .. ......
1350: ee e3 ee 20 ea eb fe f7 e0 20 e4 ee 20 ed e0 f7 ... ..... .. ...
1360: e0 eb e0 0d 0a 09 67 6f 74 6f 4d 61 78 54 6f 46 ......gotoMaxToF
1370: 69 72 73 74 2c 0d 0a 09 2f 2f 20 c8 e4 f2 e8 20 irst,...// ....
1380: ee f2 20 ea ee ed f6 e0 20 e4 ee 20 ec e8 ed e8 .. ..... .. ....
1390: ec e0 eb fc ed ee e3 ee 20 ea eb fe f7 e0 0d 0a ........ .......
13a0: 09 67 6f 74 6f 4c 61 73 74 54 6f 4d 69 6e 2c 0d .gotoLastToMin,.
13b0: 0a 09 2f 2f 20 c8 e4 f2 e8 20 ee f2 20 ea ee ed ..// .... .. ...
13c0: e5 f7 ed ee e3 ee 20 ea eb fe f7 e0 20 e4 ee 20 ...... ..... ..
13d0: ec e8 ed e8 ec e0 eb fc ed ee e3 ee 20 ea eb fe ............ ...
13e0: f7 e0 0d 0a 09 67 6f 74 6f 4d 61 78 54 6f 4d 69 .....gotoMaxToMi
13f0: 6e 2c 0d 0a 09 2f 2f 20 cf e5 f0 e5 e9 f2 e8 20 n,...// .......
1400: ef ee 20 ed ee ec e5 f0 f3 20 e7 e0 ef e8 f1 e8 .. ...... ......
1410: 0d 0a 09 67 6f 74 6f 54 6f 52 6f 77 2c 0d 0a 0d ...gotoToRow,...
1420: 0a 09 6c 61 73 74 4f 70 43 6f 64 65 0d 0a 7d 3b ..lastOpCode..};
1430: 0d 0a 0d 0a 73 74 72 75 63 74 20 63 75 72 73 6f ....struct curso
1440: 72 5f 64 61 74 61 3b 0d 0a 63 6c 61 73 73 20 73 r_data;..class s
1450: 65 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 3b 0d elect_iterator;.
1460: 0a 63 6c 61 73 73 20 43 56 74 61 62 49 6e 66 6f .class CVtabInfo
1470: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 74 65 73 74 ;....struct test
1480: 43 6f 6e 73 74 72 61 69 6e 74 0d 0a 7b 0d 0a 09 Constraint..{...
1490: 76 69 72 74 75 61 6c 20 42 4f 4f 4c 20 74 65 73 virtual BOOL tes
14a0: 74 28 63 6f 6e 73 74 20 63 75 72 73 6f 72 5f 64 t(const cursor_d
14b0: 61 74 61 26 20 63 75 72 73 6f 72 29 20 3d 20 30 ata& cursor) = 0
14c0: 3b 0d 0a 09 76 69 72 74 75 61 6c 20 7e 74 65 73 ;...virtual ~tes
14d0: 74 43 6f 6e 73 74 72 61 69 6e 74 28 29 20 7b 20 tConstraint() {
14e0: 64 65 6c 65 74 65 20 6e 65 78 74 3b 20 7d 0d 0a delete next; }..
14f0: 0d 0a 09 73 74 61 74 69 63 20 42 4f 4f 4c 20 64 ...static BOOL d
1500: 6f 54 65 73 74 28 74 65 73 74 43 6f 6e 73 74 72 oTest(testConstr
1510: 61 69 6e 74 2a 20 70 74 72 2c 20 63 6f 6e 73 74 aint* ptr, const
1520: 20 63 75 72 73 6f 72 5f 64 61 74 61 26 20 63 75 cursor_data& cu
1530: 72 73 6f 72 29 0d 0a 09 7b 0d 0a 09 09 77 68 69 rsor)...{....whi
1540: 6c 65 28 70 74 72 29 0d 0a 09 09 7b 0d 0a 09 09 le(ptr)....{....
1550: 09 69 66 28 21 70 74 72 2d 3e 74 65 73 74 28 63 .if(!ptr->test(c
1560: 75 72 73 6f 72 29 29 0d 0a 09 09 09 09 72 65 74 ursor))......ret
1570: 75 72 6e 20 46 41 4c 53 45 3b 0d 0a 09 09 09 70 urn FALSE;.....p
1580: 74 72 20 3d 20 70 74 72 2d 3e 6e 65 78 74 3b 0d tr = ptr->next;.
1590: 0a 09 09 7d 0d 0a 09 09 72 65 74 75 72 6e 20 54 ...}....return T
15a0: 52 55 45 3b 0d 0a 09 7d 0d 0a 09 74 65 73 74 43 RUE;...}...testC
15b0: 6f 6e 73 74 72 61 69 6e 74 28 74 65 73 74 43 6f onstraint(testCo
15c0: 6e 73 74 72 61 69 6e 74 2a 26 20 70 29 20 3a 20 nstraint*& p) :
15d0: 6e 65 78 74 28 70 29 20 7b 70 20 3d 20 74 68 69 next(p) {p = thi
15e0: 73 3b 7d 0d 0a 09 73 74 61 74 69 63 20 76 6f 69 s;}...static voi
15f0: 64 20 61 70 70 65 6e 64 28 74 65 73 74 43 6f 6e d append(testCon
1600: 73 74 72 61 69 6e 74 2a 26 20 72 65 74 2c 20 74 straint*& ret, t
1610: 65 73 74 43 6f 6e 73 74 72 61 69 6e 74 2a 26 20 estConstraint*&
1620: 6e 31 2c 20 74 65 73 74 43 6f 6e 73 74 72 61 69 n1, testConstrai
1630: 6e 74 2a 26 20 6e 32 29 0d 0a 09 7b 0d 0a 09 09 nt*& n2)...{....
1640: 72 65 74 20 3d 20 6e 31 3b 0d 0a 09 09 6e 31 2d ret = n1;....n1-
1650: 3e 6e 65 78 74 20 3d 20 6e 32 3b 0d 0a 09 09 6e >next = n2;....n
1660: 32 20 3d 20 4e 55 4c 4c 3b 0d 0a 09 09 6e 31 20 2 = NULL;....n1
1670: 3d 20 4e 55 4c 4c 3b 0d 0a 09 7d 0d 0a 70 72 6f = NULL;...}..pro
1680: 74 65 63 74 65 64 3a 0d 0a 09 74 65 73 74 43 6f tected:...testCo
1690: 6e 73 74 72 61 69 6e 74 2a 20 6e 65 78 74 3b 0d nstraint* next;.
16a0: 0a 7d 3b 0d 0a 0d 0a 0d 0a 63 6c 61 73 73 20 46 .};......class F
16b0: 69 6c 74 65 72 4d 61 63 68 69 6e 65 0d 0a 7b 0d ilterMachine..{.
16c0: 0a 70 75 62 6c 69 63 3a 0d 0a 09 46 69 6c 74 65 .public:...Filte
16d0: 72 4d 61 63 68 69 6e 65 28 63 6f 6e 73 74 20 43 rMachine(const C
16e0: 56 74 61 62 49 6e 66 6f 26 20 74 2c 20 63 75 72 VtabInfo& t, cur
16f0: 73 6f 72 5f 64 61 74 61 26 20 63 29 0d 0a 09 09 sor_data& c)....
1700: 3a 20 6d 5f 70 50 4b 45 71 43 6f 6e 73 74 72 28 : m_pPKEqConstr(
1710: 4e 55 4c 4c 29 2c 20 6d 5f 70 50 4b 4d 69 6e 43 NULL), m_pPKMinC
1720: 6f 6e 73 74 72 28 4e 55 4c 4c 29 2c 20 6d 5f 70 onstr(NULL), m_p
1730: 50 4b 4d 61 78 43 6f 6e 73 74 72 28 4e 55 4c 4c PKMaxConstr(NULL
1740: 29 2c 20 6d 5f 70 41 64 64 69 74 69 6f 6e 61 6c ), m_pAdditional
1750: 54 65 73 74 73 28 4e 55 4c 4c 29 2c 0d 0a 09 09 Tests(NULL),....
1760: 6d 5f 74 61 62 6c 65 28 74 29 2c 20 6d 5f 63 75 m_table(t), m_cu
1770: 72 73 6f 72 28 63 29 0d 0a 09 7b 0d 0a 09 09 6d rsor(c)...{....m
1780: 5f 68 61 72 64 43 75 72 4d 69 6e 20 3d 0d 0a 09 _hardCurMin =...
1790: 09 6d 5f 68 61 72 64 43 75 72 4d 61 78 20 3d 0d .m_hardCurMax =.
17a0: 0a 09 09 6d 5f 68 61 72 64 46 4b 4d 69 6e 20 20 ...m_hardFKMin
17b0: 3d 0d 0a 09 09 6d 5f 68 61 72 64 46 4b 4d 61 78 =....m_hardFKMax
17c0: 20 20 3d 0d 0a 09 09 6d 5f 68 61 72 64 50 4b 4d =....m_hardPKM
17d0: 69 6e 20 20 3d 0d 0a 09 09 6d 5f 68 61 72 64 50 in =....m_hardP
17e0: 4b 4d 61 78 20 20 3d 0d 0a 09 09 6d 5f 68 61 72 KMax =....m_har
17f0: 64 54 53 4d 69 6e 20 20 3d 0d 0a 09 09 6d 5f 68 dTSMin =....m_h
1800: 61 72 64 54 53 4d 61 78 20 20 3d 0d 0a 09 09 6d ardTSMax =....m
1810: 5f 6d 69 6e 4b 54 79 70 65 20 20 20 3d 0d 0a 09 _minKType =...
1820: 09 6d 5f 6d 61 78 4b 54 79 70 65 20 20 20 3d 20 .m_maxKType =
1830: 30 3b 0d 0a 09 7d 0d 0a 09 7e 46 69 6c 74 65 72 0;...}...~Filter
1840: 4d 61 63 68 69 6e 65 28 29 0d 0a 09 7b 0d 0a 09 Machine()...{...
1850: 09 64 65 6c 65 74 65 20 6d 5f 70 50 4b 45 71 43 .delete m_pPKEqC
1860: 6f 6e 73 74 72 3b 0d 0a 09 09 64 65 6c 65 74 65 onstr;....delete
1870: 20 6d 5f 70 50 4b 4d 69 6e 43 6f 6e 73 74 72 3b m_pPKMinConstr;
1880: 0d 0a 09 09 64 65 6c 65 74 65 20 6d 5f 70 50 4b ....delete m_pPK
1890: 4d 61 78 43 6f 6e 73 74 72 3b 0d 0a 09 09 64 65 MaxConstr;....de
18a0: 6c 65 74 65 20 6d 5f 70 41 64 64 69 74 69 6f 6e lete m_pAddition
18b0: 61 6c 54 65 73 74 73 3b 0d 0a 09 7d 0d 0a 09 0d alTests;...}....
18c0: 0a 09 73 65 6c 65 63 74 5f 69 74 65 72 61 74 6f ..select_iterato
18d0: 72 2a 20 70 72 6f 63 65 73 73 28 63 6f 6e 73 74 r* process(const
18e0: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 2a 20 unsigned char*
18f0: 70 42 79 74 65 43 6f 64 65 2c 20 73 71 6c 69 74 pByteCode, sqlit
1900: 65 33 5f 76 61 6c 75 65 2a 2a 20 61 72 67 73 29 e3_value** args)
1910: 3b 0d 0a 0d 0a 09 73 74 61 74 69 63 20 76 6f 69 ;.....static voi
1920: 64 20 62 75 69 6c 64 28 63 6f 6e 73 74 20 63 6c d build(const cl
1930: 61 73 73 20 43 56 74 61 62 49 6e 66 6f 26 20 74 ass CVtabInfo& t
1940: 61 62 6c 65 2c 20 73 71 6c 69 74 65 33 5f 69 6e able, sqlite3_in
1950: 64 65 78 5f 69 6e 66 6f 2a 20 70 49 64 78 2c 20 dex_info* pIdx,
1960: 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 64 78 const struct idx
1970: 5f 6e 6f 64 65 2a 20 70 42 65 73 74 29 3b 0d 0a _node* pBest);..
1980: 09 73 74 61 74 69 63 20 63 6c 61 73 73 20 73 65 .static class se
1990: 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 2a 20 70 lect_iterator* p
19a0: 61 72 73 65 46 69 6c 74 65 72 28 73 74 72 75 63 arseFilter(struc
19b0: 74 20 63 75 72 73 6f 72 5f 64 61 74 61 26 2c 20 t cursor_data&,
19c0: 63 6f 6e 73 74 20 63 6c 61 73 73 20 43 56 74 61 const class CVta
19d0: 62 49 6e 66 6f 26 2c 20 63 6f 6e 73 74 20 63 68 bInfo&, const ch
19e0: 61 72 2a 2c 20 73 71 6c 69 74 65 33 5f 76 61 6c ar*, sqlite3_val
19f0: 75 65 2a 2a 29 3b 0d 0a 70 72 6f 74 65 63 74 65 ue**);..protecte
1a00: 64 3a 0d 0a 0d 0a 09 65 6e 75 6d 20 6b 65 79 53 d:.....enum keyS
1a10: 72 63 20 7b 6b 65 79 46 4b 45 71 2c 20 6b 65 79 rc {keyFKEq, key
1a20: 46 4b 6e 45 71 2c 20 6b 65 79 50 4b 45 71 2c 20 FKnEq, keyPKEq,
1a30: 6b 65 79 50 4b 6e 45 71 7d 3b 0d 0a 0d 0a 09 73 keyPKnEq};.....s
1a40: 65 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 2a 20 elect_iterator*
1a50: 47 6f 74 6f 46 69 72 73 74 54 6f 4c 61 73 74 28 GotoFirstToLast(
1a60: 29 3b 0d 0a 09 73 65 6c 65 63 74 5f 69 74 65 72 );...select_iter
1a70: 61 74 6f 72 2a 20 47 6f 74 6f 46 69 72 73 74 54 ator* GotoFirstT
1a80: 6f 4d 61 78 28 29 3b 0d 0a 09 73 65 6c 65 63 74 oMax();...select
1a90: 5f 69 74 65 72 61 74 6f 72 2a 20 47 6f 74 6f 4d _iterator* GotoM
1aa0: 69 6e 54 6f 4c 61 73 74 28 29 3b 0d 0a 09 73 65 inToLast();...se
1ab0: 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 2a 20 47 lect_iterator* G
1ac0: 6f 74 6f 4d 69 6e 54 6f 4d 61 78 28 29 3b 0d 0a otoMinToMax();..
1ad0: 09 73 65 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 .select_iterator
1ae0: 2a 20 47 6f 74 6f 4c 61 73 74 54 6f 46 69 72 73 * GotoLastToFirs
1af0: 74 28 29 3b 0d 0a 09 73 65 6c 65 63 74 5f 69 74 t();...select_it
1b00: 65 72 61 74 6f 72 2a 20 47 6f 74 6f 4d 61 78 54 erator* GotoMaxT
1b10: 6f 46 69 72 73 74 28 29 3b 0d 0a 09 73 65 6c 65 oFirst();...sele
1b20: 63 74 5f 69 74 65 72 61 74 6f 72 2a 20 47 6f 74 ct_iterator* Got
1b30: 6f 4c 61 73 74 54 6f 4d 69 6e 28 29 3b 0d 0a 09 oLastToMin();...
1b40: 73 65 6c 65 63 74 5f 69 74 65 72 61 74 6f 72 2a select_iterator*
1b50: 20 47 6f 74 6f 4d 61 78 54 6f 4d 69 6e 28 29 3b GotoMaxToMin();
1b60: 0d 0a 09 73 65 6c 65 63 74 5f 69 74 65 72 61 74 ...select_iterat
1b70: 6f 72 2a 20 47 6f 74 6f 54 6f 52 6f 77 28 29 3b or* GotoToRow();
1b80: 0d 0a 0d 0a 09 43 53 74 72 69 6e 67 20 6d 5f 63 .....CString m_c
1b90: 72 6e 74 45 71 75 61 6c 54 65 78 74 3b 0d 0a 09 rntEqualText;...
1ba0: 43 53 74 72 69 6e 67 20 6d 5f 63 72 6e 74 4d 69 CString m_crntMi
1bb0: 6e 69 6d 75 6d 54 65 78 74 3b 0d 0a 09 43 53 74 nimumText;...CSt
1bc0: 72 69 6e 67 20 6d 5f 63 72 6e 74 4d 61 78 69 6d ring m_crntMaxim
1bd0: 75 6d 54 65 78 74 3b 0d 0a 0d 0a 09 64 6f 75 62 umText;.....doub
1be0: 6c 65 20 6d 5f 63 72 6e 74 45 71 75 61 6c 4e 75 le m_crntEqualNu
1bf0: 6d 3b 0d 0a 09 64 6f 75 62 6c 65 20 6d 5f 63 72 m;...double m_cr
1c00: 6e 74 4d 69 6e 69 6d 75 6d 4e 75 6d 3b 0d 0a 09 ntMinimumNum;...
1c10: 64 6f 75 62 6c 65 20 6d 5f 63 72 6e 74 4d 61 78 double m_crntMax
1c20: 69 6d 75 6d 4e 75 6d 3b 0d 0a 0d 0a 09 5f 5f 69 imumNum;.....__i
1c30: 6e 74 36 34 20 6d 5f 63 72 6e 74 45 71 75 61 6c nt64 m_crntEqual
1c40: 4c 6f 6e 67 3b 0d 0a 09 5f 5f 69 6e 74 36 34 20 Long;...__int64
1c50: 6d 5f 63 72 6e 74 4d 69 6e 69 6d 75 6d 4c 6f 6e m_crntMinimumLon
1c60: 67 3b 0d 0a 09 5f 5f 69 6e 74 36 34 20 6d 5f 63 g;...__int64 m_c
1c70: 72 6e 74 4d 61 78 69 6d 75 6d 4c 6f 6e 67 3b 0d rntMaximumLong;.
1c80: 0a 0d 0a 09 6c 6f 6e 67 20 6d 5f 72 65 63 4e 6f ....long m_recNo
1c90: 3b 0d 0a 09 0d 0a 09 43 53 74 72 69 6e 67 20 6d ;......CString m
1ca0: 5f 66 75 6c 6c 4b 65 79 4d 69 6e 3b 0d 0a 09 43 _fullKeyMin;...C
1cb0: 53 74 72 69 6e 67 20 6d 5f 66 75 6c 6c 4b 65 79 String m_fullKey
1cc0: 45 71 3b 0d 0a 09 43 53 74 72 69 6e 67 20 6d 5f Eq;...CString m_
1cd0: 66 75 6c 6c 4b 65 79 4d 61 78 3b 0d 0a 09 43 53 fullKeyMax;...CS
1ce0: 74 72 69 6e 67 20 6d 5f 70 61 72 74 4b 65 79 4d tring m_partKeyM
1cf0: 69 6e 3b 0d 0a 09 43 53 74 72 69 6e 67 20 6d 5f in;...CString m_
1d00: 70 61 72 74 4b 65 79 45 71 3b 0d 0a 09 43 53 74 partKeyEq;...CSt
1d10: 72 69 6e 67 20 6d 5f 70 61 72 74 4b 65 79 4d 61 ring m_partKeyMa
1d20: 78 3b 0d 0a 09 0d 0a 09 74 65 73 74 43 6f 6e 73 x;......testCons
1d30: 74 72 61 69 6e 74 2a 20 6d 5f 70 50 4b 45 71 43 traint* m_pPKEqC
1d40: 6f 6e 73 74 72 3b 0d 0a 09 74 65 73 74 43 6f 6e onstr;...testCon
1d50: 73 74 72 61 69 6e 74 2a 20 6d 5f 70 50 4b 4d 69 straint* m_pPKMi
1d60: 6e 43 6f 6e 73 74 72 3b 0d 0a 09 74 65 73 74 43 nConstr;...testC
1d70: 6f 6e 73 74 72 61 69 6e 74 2a 20 6d 5f 70 50 4b onstraint* m_pPK
1d80: 4d 61 78 43 6f 6e 73 74 72 3b 0d 0a 09 74 65 73 MaxConstr;...tes
1d90: 74 43 6f 6e 73 74 72 61 69 6e 74 2a 20 6d 5f 70 tConstraint* m_p
1da0: 41 64 64 69 74 69 6f 6e 61 6c 54 65 73 74 73 3b AdditionalTests;
1db0: 0d 0a 0d 0a 09 63 6f 6e 73 74 20 43 56 74 61 62 .....const CVtab
1dc0: 49 6e 66 6f 26 20 6d 5f 74 61 62 6c 65 3b 0d 0a Info& m_table;..
1dd0: 09 63 75 72 73 6f 72 5f 64 61 74 61 26 20 6d 5f .cursor_data& m_
1de0: 63 75 72 73 6f 72 3b 0d 0a 0d 0a 09 44 57 4f 52 cursor;.....DWOR
1df0: 44 20 6d 5f 68 61 72 64 43 75 72 4d 69 6e 3a 20 D m_hardCurMin:
1e00: 31 3b 0d 0a 09 44 57 4f 52 44 20 6d 5f 68 61 72 1;...DWORD m_har
1e10: 64 43 75 72 4d 61 78 3a 20 31 3b 0d 0a 09 44 57 dCurMax: 1;...DW
1e20: 4f 52 44 20 6d 5f 68 61 72 64 46 4b 4d 69 6e 20 ORD m_hardFKMin
1e30: 3a 20 31 3b 0d 0a 09 44 57 4f 52 44 20 6d 5f 68 : 1;...DWORD m_h
1e40: 61 72 64 46 4b 4d 61 78 20 3a 20 31 3b 0d 0a 09 ardFKMax : 1;...
1e50: 44 57 4f 52 44 20 6d 5f 68 61 72 64 50 4b 4d 69 DWORD m_hardPKMi
1e60: 6e 20 3a 20 31 3b 0d 0a 09 44 57 4f 52 44 20 6d n : 1;...DWORD m
1e70: 5f 68 61 72 64 50 4b 4d 61 78 20 3a 20 31 3b 0d _hardPKMax : 1;.
1e80: 0a 09 44 57 4f 52 44 20 6d 5f 68 61 72 64 54 53 ..DWORD m_hardTS
1e90: 4d 69 6e 20 3a 20 31 3b 0d 0a 09 44 57 4f 52 44 Min : 1;...DWORD
1ea0: 20 6d 5f 68 61 72 64 54 53 4d 61 78 20 3a 20 31 m_hardTSMax : 1
1eb0: 3b 0d 0a 09 44 57 4f 52 44 20 6d 5f 6d 69 6e 4b ;...DWORD m_minK
1ec0: 54 79 70 65 20 20 3a 20 32 3b 0d 0a 09 44 57 4f Type : 2;...DWO
1ed0: 52 44 20 6d 5f 6d 61 78 4b 54 79 70 65 20 20 3a RD m_maxKType :
1ee0: 20 32 3b 0d 0a 0d 0a 09 63 6f 6e 73 74 20 73 74 2;.....const st
1ef0: 72 75 63 74 20 69 6e 64 65 78 5f 69 6e 66 6f 2a ruct index_info*
1f00: 20 6d 5f 70 49 6e 64 65 78 49 6e 66 6f 3b 0d 0a m_pIndexInfo;..
1f10: 09 63 6f 6e 73 74 20 73 74 72 75 63 74 20 69 64 .const struct id
1f20: 78 5f 66 69 65 6c 64 5f 69 6e 66 6f 2a 20 6d 5f x_field_info* m_
1f30: 70 46 69 65 6c 64 73 3b 0d 0a 09 44 57 4f 52 44 pFields;...DWORD
1f40: 20 6d 5f 64 77 43 75 72 49 64 78 3b 0d 0a 7d 3b m_dwCurIdx;..};
1f50: 0d 0a ..