2
2
* Routines for handling of 'SET var TO',
3
3
* 'SHOW var' and 'RESET var' statements.
4
4
*
5
- * $Id: variable.c,v 1.12 1998/09/01 04:28:07 momjian Exp $
5
+ * $Id: variable.c,v 1.13 1998/09/03 02:34:29 momjian Exp $
6
6
*
7
7
*/
8
8
@@ -24,6 +24,7 @@ extern Cost _cpu_index_page_wight_;
24
24
extern bool _use_geqo_ ;
25
25
extern int32 _use_geqo_rels_ ;
26
26
extern bool _use_right_sided_plans_ ;
27
+ extern bool _use_keyset_query_optimizer ;
27
28
28
29
/*-----------------------------------------------------------------------*/
29
30
static const char *
@@ -558,6 +559,9 @@ struct VariableParsers
558
559
"server_encoding" , parse_server_encoding , show_server_encoding , reset_server_encoding
559
560
},
560
561
#endif
562
+ {
563
+ "ksqo" , parse_ksqo , show_ksqo , reset_ksqo
564
+ },
561
565
{
562
566
NULL , NULL , NULL , NULL
563
567
}
@@ -613,3 +617,47 @@ ResetPGVariable(const char *name)
613
617
614
618
return TRUE;
615
619
}
620
+
621
+
622
+ /*-----------------------------------------------------------------------
623
+ KSQO code will one day be unnecessary when the optimizer makes use of
624
+ indexes when multiple ORs are specified in the where clause.
625
+ See optimizer/prep/prepkeyset.c for more on this.
626
+ daveh@insightdist.com 6/16/98
627
+ -----------------------------------------------------------------------*/
628
+ bool
629
+ parse_ksqo (const char * value )
630
+ {
631
+ if (value == NULL )
632
+ {
633
+ reset_ksqo ();
634
+ return TRUE;
635
+ }
636
+
637
+ if (strcasecmp (value , "on" ) == 0 )
638
+ _use_keyset_query_optimizer = true;
639
+ else if (strcasecmp (value , "off" ) == 0 )
640
+ _use_keyset_query_optimizer = false;
641
+ else
642
+ elog (ERROR , "Bad value for Key Set Query Optimizer (%s)" , value );
643
+
644
+ return TRUE;
645
+ }
646
+
647
+ bool
648
+ show_ksqo ()
649
+ {
650
+
651
+ if (_use_keyset_query_optimizer )
652
+ elog (NOTICE , "Key Set Query Optimizer is ON" );
653
+ else
654
+ elog (NOTICE , "Key Set Query Optimizer is OFF" );
655
+ return TRUE;
656
+ }
657
+
658
+ bool
659
+ reset_ksqo ()
660
+ {
661
+ _use_keyset_query_optimizer = false;
662
+ return TRUE;
663
+ }
0 commit comments