@@ -60,6 +60,7 @@ PlannedStmt *sr_planner(Query *parse,
6060bool find_ok = false;
6161LOCKMODE heap_lock = AccessShareLock ;
6262Oid query_index_rel_oid ;
63+ Oid sr_plans_oid ;
6364IndexScanDesc query_index_scan ;
6465ScanKeyData key ;
6566
@@ -81,11 +82,21 @@ PlannedStmt *sr_planner(Query *parse,
8182sr_query_walker ((Query * )parse ,NULL );
8283
8384sr_plans_table_rv = makeRangeVar ("public" ,"sr_plans" ,-1 );
84- sr_plans_heap = heap_openrv (sr_plans_table_rv ,heap_lock );
85+ /* First check existance of "sr_plans" table */
86+ sr_plans_oid = RangeVarGetRelid (sr_plans_table_rv ,heap_lock , true);
87+ if (!OidIsValid (sr_plans_oid ))
88+ {
89+ elog (WARNING ,"Not found sr_plans table" );
90+ return standard_planner (parse ,cursorOptions ,boundParams );
91+ }
92+
93+ /* Table "sr_plans" exists */
94+ sr_plans_heap = heap_open (sr_plans_oid ,NoLock );
8595
8696query_index_rel_oid = DatumGetObjectId (DirectFunctionCall1 (to_regclass ,PointerGetDatum (cstring_to_text ("sr_plans_query_hash_idx" ))));
8797if (query_index_rel_oid == InvalidOid )
8898{
99+ heap_close (sr_plans_heap ,heap_lock );
89100elog (WARNING ,"Not found sr_plans_query_hash_idx index" );
90101return standard_planner (parse ,cursorOptions ,boundParams );
91102}