#include <item_sum.h>
Inheritance diagram for Item_variance_field:


Public Member Functions | |
| Item_variance_field (Item_sum_variance *item) | |
| enum Type | type () const |
| double | val_real () |
| longlong | val_int () |
| String * | val_str (String *) |
| my_decimal * | val_decimal (my_decimal *) |
| bool | is_null () |
| enum_field_types | field_type () const |
| void | fix_length_and_dec () |
| enum Item_result | result_type () const |
Public Attributes | |
| Field * | field |
| Item_result | hybrid_type |
| uint | f_precision0 |
| uint | f_scale0 |
| uint | f_precision1 |
| uint | f_scale1 |
| uint | dec_bin_size0 |
| uint | dec_bin_size1 |
| uint | sample |
| uint | prec_increment |
Definition at line 617 of file item_sum.h.
| Item_variance_field::Item_variance_field | ( | Item_sum_variance * | item | ) |
Definition at line 2337 of file item_sum.cc.
References Item_sum_variance::dec_bin_size0, dec_bin_size0, Item_sum_variance::dec_bin_size1, dec_bin_size1, DECIMAL_RESULT, Item::decimals, Item_sum_variance::f_precision0, f_precision0, Item_sum_variance::f_precision1, f_precision1, Item_sum_variance::f_scale0, f_scale0, Item_sum_variance::f_scale1, f_scale1, field, Item_sum_variance::hybrid_type, hybrid_type, Item::max_length, Item::maybe_null, Item::name, Item_sum_variance::prec_increment, prec_increment, Item_result_field::result_field, Item_sum_variance::sample, sample, and Item::unsigned_flag.
02338 { 02339 name=item->name; 02340 decimals=item->decimals; 02341 max_length=item->max_length; 02342 unsigned_flag= item->unsigned_flag; 02343 field=item->result_field; 02344 maybe_null=1; 02345 sample= item->sample; 02346 prec_increment= item->prec_increment; 02347 if ((hybrid_type= item->hybrid_type) == DECIMAL_RESULT) 02348 { 02349 f_scale0= item->f_scale0; 02350 f_precision0= item->f_precision0; 02351 dec_bin_size0= item->dec_bin_size0; 02352 f_scale1= item->f_scale1; 02353 f_precision1= item->f_precision1; 02354 dec_bin_size1= item->dec_bin_size1; 02355 } 02356 }
| enum_field_types Item_variance_field::field_type | ( | ) | const [inline, virtual] |
Reimplemented from Item.
Reimplemented in Item_std_field.
Definition at line 635 of file item_sum.h.
References DECIMAL_RESULT, hybrid_type, MYSQL_TYPE_DOUBLE, and MYSQL_TYPE_NEWDECIMAL.
00636 { 00637 return hybrid_type == DECIMAL_RESULT ? 00638 MYSQL_TYPE_NEWDECIMAL : MYSQL_TYPE_DOUBLE; 00639 }
| void Item_variance_field::fix_length_and_dec | ( | ) | [inline, virtual] |
| bool Item_variance_field::is_null | ( | ) | [inline, virtual] |
Reimplemented from Item.
Definition at line 634 of file item_sum.h.
References Item::null_value, and val_int().
00634 { (void) val_int(); return null_value; }
Here is the call graph for this function:

| enum Item_result Item_variance_field::result_type | ( | ) | const [inline, virtual] |
Reimplemented from Item.
Reimplemented in Item_std_field.
Definition at line 641 of file item_sum.h.
References hybrid_type.
00641 { return hybrid_type; }
| enum Type Item_variance_field::type | ( | ) | const [inline, virtual] |
Implements Item.
Reimplemented in Item_std_field.
Definition at line 628 of file item_sum.h.
References Item::FIELD_VARIANCE_ITEM.
00628 {return FIELD_VARIANCE_ITEM; }
| my_decimal * Item_variance_field::val_decimal | ( | my_decimal * | ) | [virtual] |
Implements Item.
Reimplemented in Item_std_field.
Definition at line 2388 of file item_sum.cc.
References binary2my_decimal(), count, dec_bin_size0, dec_bin_size1, E_DEC_FATAL_ERROR, f_precision0, f_precision1, f_scale0, f_scale1, field, hybrid_type, int2my_decimal(), my_decimal_div(), my_decimal_mul(), my_decimal_sub(), Item::null_value, prec_increment, Field::ptr, REAL_RESULT, sample, sint8korr, and Item::val_decimal_from_real().
Referenced by Item_std_field::val_decimal(), and Item_std_field::val_real().
02389 { 02390 // fix_fields() never calls for this Item 02391 if (hybrid_type == REAL_RESULT) 02392 return val_decimal_from_real(dec_buf); 02393 02394 longlong count= sint8korr(field->ptr+dec_bin_size0+dec_bin_size1); 02395 if ((null_value= (count <= sample))) 02396 return 0; 02397 02398 my_decimal dec_count, dec1_count, dec_sum, dec_sqr, tmp; 02399 int2my_decimal(E_DEC_FATAL_ERROR, count, 0, &dec_count); 02400 int2my_decimal(E_DEC_FATAL_ERROR, count-sample, 0, &dec1_count); 02401 binary2my_decimal(E_DEC_FATAL_ERROR, field->ptr, 02402 &dec_sum, f_precision0, f_scale0); 02403 binary2my_decimal(E_DEC_FATAL_ERROR, field->ptr+dec_bin_size0, 02404 &dec_sqr, f_precision1, f_scale1); 02405 my_decimal_mul(E_DEC_FATAL_ERROR, &tmp, &dec_sum, &dec_sum); 02406 my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, &tmp, &dec_count, prec_increment); 02407 my_decimal_sub(E_DEC_FATAL_ERROR, &dec_sum, &dec_sqr, dec_buf); 02408 my_decimal_div(E_DEC_FATAL_ERROR, dec_buf, 02409 &dec_sum, &dec1_count, prec_increment); 02410 return dec_buf; 02411 }
Here is the call graph for this function:

Here is the caller graph for this function:

| longlong Item_variance_field::val_int | ( | void | ) | [inline, virtual] |
Implements Item.
Definition at line 630 of file item_sum.h.
References rint, and val_real().
Referenced by is_null().
Here is the call graph for this function:

Here is the caller graph for this function:

| double Item_variance_field::val_real | ( | ) | [virtual] |
Implements Item.
Reimplemented in Item_std_field.
Definition at line 2359 of file item_sum.cc.
References count, DECIMAL_RESULT, field, float8get, hybrid_type, Item::null_value, Field::ptr, sample, sint8korr, and Item::val_real_from_decimal().
Referenced by val_int(), and Item_std_field::val_real().
02360 { 02361 // fix_fields() never calls for this Item 02362 if (hybrid_type == DECIMAL_RESULT) 02363 return val_real_from_decimal(); 02364 02365 double sum,sum_sqr; 02366 longlong count; 02367 float8get(sum,field->ptr); 02368 float8get(sum_sqr,(field->ptr+sizeof(double))); 02369 count=sint8korr(field->ptr+sizeof(double)*2); 02370 02371 if ((null_value= (count <= sample))) 02372 return 0.0; 02373 02374 double tmp= (double) count; 02375 double tmp2= (sum_sqr - sum*sum/tmp)/(tmp - (double)sample); 02376 return tmp2 <= 0.0 ? 0.0 : tmp2; 02377 }
Here is the call graph for this function:

Here is the caller graph for this function:

Implements Item.
Definition at line 2380 of file item_sum.cc.
References DECIMAL_RESULT, hybrid_type, Item::val_string_from_decimal(), and Item::val_string_from_real().
02381 { 02382 if (hybrid_type == DECIMAL_RESULT) 02383 return val_string_from_decimal(str); 02384 return val_string_from_real(str); 02385 }
Here is the call graph for this function:

Definition at line 620 of file item_sum.h.
Referenced by Item_variance_field(), val_decimal(), and val_real().
Definition at line 621 of file item_sum.h.
Referenced by field_type(), Item_variance_field(), result_type(), val_decimal(), Item_std_field::val_decimal(), val_real(), Item_std_field::val_real(), and val_str().
Definition at line 625 of file item_sum.h.
Referenced by Item_variance_field(), val_decimal(), and val_real().
1.4.7

