737
737
uint8_t dec_arg, bool zero_arg, bool unsigned_arg)
738
738
:Field(ptr_arg, len_arg, null_ptr_arg, null_bit_arg,
739
739
unireg_check_arg, field_name_arg),
740
dec(dec_arg),zerofill(zero_arg),unsigned_flag(unsigned_arg)
740
dec(dec_arg),decimal_precision(zero_arg),unsigned_flag(unsigned_arg)
743
flags|=ZEROFILL_FLAG;
744
742
if (unsigned_flag)
745
743
flags|=UNSIGNED_FLAG;
749
void Field_num::prepend_zeros(String *value)
752
if ((diff= (int) (field_length - value->length())) > 0)
754
bmove_upp((uchar*) value->ptr()+field_length,
755
(uchar*) value->ptr()+value->length(),
757
bfill((uchar*) value->ptr(),diff,'0');
758
value->length(field_length);
759
(void) value->c_ptr_quick(); // Avoid warnings in purify
764
748
Test if given number is a int.
2683
2662
return new Field_new_decimal(ptr,field_length,null_pos,null_bit,
2684
2663
unireg_check, field_name,
2685
2664
f_decimals(pack_flag),
2686
f_is_zerofill(pack_flag) != 0,
2665
f_is_decimal_precision(pack_flag) != 0,
2687
2666
f_is_dec(pack_flag) == 0);
2688
2667
case DRIZZLE_TYPE_DOUBLE:
2689
2668
return new Field_double(ptr,field_length,null_pos,null_bit,
2690
2669
unireg_check, field_name,
2691
2670
f_decimals(pack_flag),
2692
f_is_zerofill(pack_flag) != 0,
2693
2672
f_is_dec(pack_flag)== 0);
2694
2673
case DRIZZLE_TYPE_TINY:
2695
2674
return new Field_tiny(ptr,field_length,null_pos,null_bit,
2696
2675
unireg_check, field_name,
2697
f_is_zerofill(pack_flag) != 0,
2698
2677
f_is_dec(pack_flag) == 0);
2699
2678
case DRIZZLE_TYPE_SHORT:
2700
2679
return new Field_short(ptr,field_length,null_pos,null_bit,
2701
2680
unireg_check, field_name,
2702
f_is_zerofill(pack_flag) != 0,
2703
2682
f_is_dec(pack_flag) == 0);
2704
2683
case DRIZZLE_TYPE_LONG:
2705
2684
return new Field_long(ptr,field_length,null_pos,null_bit,
2706
2685
unireg_check, field_name,
2707
f_is_zerofill(pack_flag) != 0,
2708
2687
f_is_dec(pack_flag) == 0);
2709
2688
case DRIZZLE_TYPE_LONGLONG:
2710
2689
return new Field_int64_t(ptr,field_length,null_pos,null_bit,
2711
2690
unireg_check, field_name,
2712
f_is_zerofill(pack_flag) != 0,
2713
2692
f_is_dec(pack_flag) == 0);
2714
2693
case DRIZZLE_TYPE_TIMESTAMP:
2715
2694
return new Field_timestamp(ptr,field_length, null_pos, null_bit,