1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

Changeset 11052

Show
Ignore:
Timestamp:
05/20/13 20:21:49 (11 months ago)
Author:
cubridengine
Message:

[CUBRIDSUS-10709][CR] 'CREATE INDEX' query updates only statistics for its B-tree

Location:
cubridengine/trunk/src
Files:
13 modified

Legend:

Unmodified
Added
Removed
  • cubridengine/trunk/src/base/xserver_interface.h

    r10851 r11052  
    315315                                                int *length); 
    316316extern int xstats_update_class_statistics (THREAD_ENTRY * thread_p, 
    317                                            OID * classoid); 
     317                                           OID * classoid, BTID * btid); 
    318318extern int xstats_update_statistics (THREAD_ENTRY * thread_p); 
    319319 
  • cubridengine/trunk/src/communication/network_interface_cl.c

    r10934 r11052  
    64636463 */ 
    64646464int 
    6465 stats_update_class_statistics (OID * classoid, int do_now) 
     6465stats_update_class_statistics (OID * classoid, BTID * btid, int do_now) 
    64666466{ 
    64676467#if defined(CS_MODE) 
    64686468  int error = ER_NET_CLIENT_DATA_RECEIVE; 
    64696469  int req_error; 
    6470   OR_ALIGNED_BUF (OR_OID_SIZE + OR_INT_SIZE) a_request; 
     6470  OR_ALIGNED_BUF (OR_OID_SIZE + OR_INT_SIZE + OR_BTID_SIZE) a_request; 
    64716471  char *request; 
    64726472  OR_ALIGNED_BUF (OR_INT_SIZE) a_reply; 
     
    64796479  ptr = or_pack_oid (request, classoid); 
    64806480  ptr = or_pack_int (ptr, do_now); 
     6481  if (btid == NULL) 
     6482    { 
     6483      BTID id; 
     6484 
     6485      BTID_SET_NULL (&id); 
     6486      ptr = or_pack_btid (ptr, &id); 
     6487    } 
     6488  else 
     6489    { 
     6490      ptr = or_pack_btid (ptr, btid); 
     6491    } 
    64816492 
    64826493  req_error = net_client_request (NET_SERVER_QST_UPDATE_CLASS_STATISTICS, 
     
    64966507  ENTER_SERVER (); 
    64976508 
    6498   success = xstats_update_class_statistics (NULL, classoid); 
     6509  success = xstats_update_class_statistics (NULL, classoid, btid); 
    64996510 
    65006511  EXIT_SERVER (); 
  • cubridengine/trunk/src/communication/network_interface_cl.h

    r10851 r11052  
    275275                                               unsigned int timestamp, 
    276276                                               int *length_ptr); 
    277 extern int stats_update_class_statistics (OID * classoid, int do_now); 
     277extern int stats_update_class_statistics (OID * classoid, BTID * btid, 
     278                                          int do_now); 
    278279extern int stats_update_statistics (void); 
    279280 
  • cubridengine/trunk/src/communication/network_interface_sr.c

    r11020 r11052  
    45384538  int error, do_now; 
    45394539  OID classoid; 
     4540  BTID btid; 
    45404541  char *ptr; 
    45414542  OR_ALIGNED_BUF (OR_INT_SIZE) a_reply; 
     
    45444545  ptr = or_unpack_oid (request, &classoid); 
    45454546  ptr = or_unpack_int (ptr, &do_now); 
     4547  ptr = or_unpack_btid (ptr, &btid); 
    45464548 
    45474549  if (do_now) 
    45484550    { 
    4549       error = xstats_update_class_statistics (thread_p, &classoid); 
     4551      error = xstats_update_class_statistics (thread_p, &classoid, &btid); 
    45504552      if (error != NO_ERROR) 
    45514553        { 
  • cubridengine/trunk/src/executables/loader.c

    r10688 r11052  
    60266026              fflush (stdout); 
    60276027            } 
    6028           err = sm_update_statistics (table->class_, true); 
     6028          err = sm_update_class_statistics (table->class_, true); 
    60296029        } 
    60306030    } 
  • cubridengine/trunk/src/executables/loader_old.c

    r8790 r11052  
    17921792              fflush (stdout); 
    17931793            } 
    1794           error = sm_update_statistics (table->class_, true); 
     1794          error = sm_update_class_statistics (table->class_, true); 
    17951795        } 
    17961796    } 
  • cubridengine/trunk/src/executables/util_sa.c

    r10716 r11052  
    13701370    { 
    13711371      if ((class_mop = db_find_class (class_name)) == NULL 
    1372           || sm_update_statistics (class_mop, true) != NO_ERROR) 
     1372          || sm_update_class_statistics (class_mop, true) != NO_ERROR) 
    13731373        { 
    13741374          fprintf (stderr, "%s\n", db_error_string (3)); 
  • cubridengine/trunk/src/object/schema_manager.c

    r10949 r11052  
    480480                                         const char **att_names, 
    481481                                         const int *asc_desc); 
     482static int sm_update_statistics (MOP classop, BTID * btid, bool do_now); 
    482483 
    483484static const char *sm_locate_method_file (SM_CLASS * class_, 
     
    38373838 
    38383839/* 
    3839  * sm_update_statistics() - Update class statistics on the server for a 
    3840  *    particular class. When finished, fetch the new statistics and 
     3840 * sm_update_statistics() - Update statistics on the server for the 
     3841 *    particular class or index. When finished, fetch the new statistics and 
    38413842 *    cache them with the class. 
    38423843 *   return: NO_ERROR on success, non-zero for ERROR 
    38433844 *   classop(in): class object 
     3845 *   btid(in): btree id 
    38443846 *   do_now(in): update statistics right now or 
    38453847 *               delay it until a transaction is committed 
     
    38493851 *       "alter table ..." or "create index ...". 
    38503852 */ 
    3851  
    3852 int 
    3853 sm_update_statistics (MOP classop, bool do_now) 
     3853static int 
     3854sm_update_statistics (MOP classop, BTID * btid, bool do_now) 
    38543855{ 
    38553856  int error = NO_ERROR; 
     
    38753876        } 
    38763877 
    3877       error = 
    3878         stats_update_class_statistics (WS_OID (classop), do_now ? 1 : 0); 
     3878      error = stats_update_class_statistics (WS_OID (classop), btid, 
     3879                                            do_now ? 1 : 0); 
    38793880      if (error == NO_ERROR) 
    38803881        { 
     
    39083909 
    39093910  return error; 
     3911} 
     3912 
     3913/* 
     3914 * sm_update_index_statistics() - 
     3915 *   return: NO_ERROR on success, non-zero for ERROR 
     3916 *   classop(in): class object 
     3917 *   btid(in): btree id 
     3918 *   do_now(in): update statistics right now or 
     3919 *               delay it until a transaction is committed 
     3920 */ 
     3921int 
     3922sm_update_index_statistics (MOP classop, BTID * btid, bool do_now) 
     3923{ 
     3924  return sm_update_statistics (classop, btid, do_now); 
     3925} 
     3926 
     3927/* 
     3928 * sm_update_class_statistics() - 
     3929 *   return: NO_ERROR on success, non-zero for ERROR 
     3930 *   classop(in): class object 
     3931 *   do_now(in): update statistics right now or 
     3932 *               delay it until a transaction is committed 
     3933 */ 
     3934int 
     3935sm_update_class_statistics (MOP classop, bool do_now) 
     3936{ 
     3937  return sm_update_statistics (classop, NULL, do_now); 
    39103938} 
    39113939 
     
    40014029  if (obj != NULL) 
    40024030    { 
    4003       error = sm_update_statistics (obj, true); 
     4031      error = sm_update_class_statistics (obj, true); 
    40044032    } 
    40054033  else 
     
    1109411122    } 
    1109511123 
    11096   if (sm_update_statistics (classop, false)) 
     11124  if (sm_update_class_statistics (classop, false)) 
    1109711125    { 
    1109811126      goto structure_error; 
     
    1279712825              if (error == NO_ERROR) 
    1279812826                { 
    12799                   error = sm_update_statistics (newop, false); 
     12827                  error = sm_update_class_statistics (newop, false); 
    1280012828                } 
    1280112829            } 
     
    1370113729           * looks at the statistics structures, not the schema structures. 
    1370213730           */ 
    13703           if (sm_update_statistics (classop, false)) 
     13731          if (sm_update_index_statistics (classop, &index, true)) 
    1370413732            { 
    1370513733              goto severe_error; 
     
    1392213950            } 
    1392313951 
    13924           if (sm_update_statistics (classop, false)) 
     13952          if (sm_update_class_statistics (classop, false)) 
    1392513953            { 
    1392613954              goto severe_error; 
  • cubridengine/trunk/src/object/schema_manager.h

    r10667 r11052  
    207207extern SM_CLASS *sm_get_class_with_statistics (MOP classop); 
    208208extern CLASS_STATS *sm_get_statistics_force (MOP classop); 
    209 extern int sm_update_statistics (MOP classop, bool do_now); 
     209extern int sm_update_class_statistics (MOP classop, bool do_now); 
     210extern int sm_update_index_statistics (MOP classop, BTID * btid, bool do_now); 
    210211extern int sm_update_all_statistics (void); 
    211212 
  • cubridengine/trunk/src/query/execute_schema.c

    r10846 r11052  
    14001400          /* update statistics here */ 
    14011401          sm_Disable_updating_statistics = old_disable_stats; 
    1402           error = sm_update_statistics (pinfo.root_op, false); 
     1402          error = sm_update_class_statistics (pinfo.root_op, false); 
    14031403        } 
    14041404      break; 
     
    65446544        { 
    65456545          assert (name->info.name.db_object != NULL); 
    6546           error = sm_update_statistics (name->info.name.db_object, false); 
     6546          error = sm_update_class_statistics (name->info.name.db_object, 
     6547                                              false); 
    65476548          if (error != NO_ERROR) 
    65486549            { 
     
    65636564          return error; 
    65646565        } 
    6565       error = sm_update_statistics (pinfo->root_op, false); 
     6566      error = sm_update_class_statistics (pinfo->root_op, false); 
    65666567      if (error != NO_ERROR) 
    65676568        { 
     
    65846585            } 
    65856586 
    6586           error = sm_update_statistics (obj->op, false); 
     6587          error = sm_update_class_statistics (obj->op, false); 
    65876588          if (error != NO_ERROR) 
    65886589            { 
  • cubridengine/trunk/src/query/execute_statement.c

    r10934 r11052  
    35443544            } 
    35453545 
    3546           error = sm_update_statistics (obj, true); 
     3546          error = sm_update_class_statistics (obj, true); 
    35473547          error = sm_partitioned_class_type (obj, &is_partition, NULL, 
    35483548                                             &sub_partitions); 
     
    35573557              for (i = 0; sub_partitions[i]; i++) 
    35583558                { 
    3559                   error = sm_update_statistics (sub_partitions[i], true); 
     3559                  error = sm_update_class_statistics (sub_partitions[i], 
     3560                                                      true); 
    35603561                  if (error != NO_ERROR) 
    35613562                    break; 
  • cubridengine/trunk/src/storage/statistics_sr.c

    r10890 r11052  
    103103 *   return: 
    104104 *   class_id(in): Identifier of the class 
     105 *   btid(in): 
    105106 * 
    106107 * Note: It first retrieves the whole catalog information about this class, 
     
    126127 */ 
    127128int 
    128 xstats_update_class_statistics (THREAD_ENTRY * thread_p, OID * class_id_p) 
     129xstats_update_class_statistics (THREAD_ENTRY * thread_p, OID * class_id_p, 
     130                                BTID * btid) 
    129131{ 
    130132  CLS_INFO *cls_info_p = NULL; 
     
    343345          assert_release (!BTID_IS_NULL (&btree_stats_p->btid)); 
    344346          assert_release (btree_stats_p->key_size > 0); 
     347          if (btid != NULL && !BTID_IS_NULL (btid)) 
     348            { 
     349              if (!BTID_IS_EQUAL (btid, &btree_stats_p->btid)) 
     350                { 
     351                  continue; 
     352                } 
     353            } 
    345354          if (btree_get_stats (thread_p, btree_stats_p) != NO_ERROR) 
    346355            { 
     
    442451      class_id.slotid = class_id_item_p->class_id.slotid; 
    443452 
    444       error = xstats_update_class_statistics (thread_p, &class_id); 
     453      error = xstats_update_class_statistics (thread_p, &class_id, NULL); 
    445454      if (error != NO_ERROR) 
    446455        { 
     
    13271336  for (i = 0; i < partitions_count; i++) 
    13281337    { 
    1329       error = xstats_update_class_statistics (thread_p, &partitions[i]); 
     1338      error = xstats_update_class_statistics (thread_p, &partitions[i], NULL); 
    13301339      if (error != NO_ERROR) 
    13311340        { 
  • cubridengine/trunk/src/transaction/log_manager.c

    r10603 r11052  
    52095209  if (class->need_update_stats) 
    52105210    { 
    5211       (void) xstats_update_class_statistics (thread_p, &class->class_oid); 
     5211      (void) xstats_update_class_statistics (thread_p, &class->class_oid, 
     5212                                             NULL); 
    52125213    } 
    52135214}