MCPcopy
hub / github.com/pingcap/tidb / getColDefaultValueFromNil

Function getColDefaultValueFromNil

pkg/table/column.go:668–707  ·  view source on GitHub ↗
(ctx expression.BuildContext, col *model.ColumnInfo, args *getColOriginDefaultValue)

Source from the content-addressed store, hash-verified

666}
667
668func getColDefaultValueFromNil(ctx expression.BuildContext, col *model.ColumnInfo, args *getColOriginDefaultValue) (types.Datum, error) {
669 if !mysql.HasNotNullFlag(col.GetFlag()) {
670 return types.Datum{}, nil
671 }
672 if col.GetType() == mysql.TypeEnum {
673 // For enum type, if no default value and not null is set,
674 // the default value is the first element of the enum list
675 defEnum, err := types.ParseEnumValue(col.FieldType.GetElems(), 1)
676 if err != nil {
677 return types.Datum{}, err
678 }
679 return types.NewCollateMysqlEnumDatum(defEnum, col.GetCollate()), nil
680 }
681 if mysql.HasAutoIncrementFlag(col.GetFlag()) {
682 // Auto increment column doesn't have default value and we should not return error.
683 return GetZeroValue(col), nil
684 }
685 evalCtx := ctx.GetEvalCtx()
686 var strictSQLMode bool
687 if args != nil {
688 strictSQLMode = args.StrictSQLMode
689 } else {
690 strictSQLMode = evalCtx.SQLMode().HasStrictMode()
691 }
692 if !strictSQLMode {
693 evalCtx.AppendWarning(ErrNoDefaultValue.FastGenByArgs(col.Name))
694 return GetZeroValue(col), nil
695 }
696 ec := evalCtx.ErrCtx()
697 var err error
698 if mysql.HasNoDefaultValueFlag(col.GetFlag()) {
699 err = ErrNoDefaultValue.FastGenByArgs(col.Name)
700 } else {
701 err = ErrColumnCantNull.FastGenByArgs(col.Name)
702 }
703 if ec.HandleError(err) == nil {
704 return GetZeroValue(col), nil
705 }
706 return types.Datum{}, ErrNoDefaultValue.GenWithStackByArgs(col.Name)
707}
708
709// GetZeroValue gets zero value for given column type.
710func GetZeroValue(col *model.ColumnInfo) types.Datum {

Callers 1

getColDefaultValueFunction · 0.85

Calls 15

HasNotNullFlagFunction · 0.92
ParseEnumValueFunction · 0.92
NewCollateMysqlEnumDatumFunction · 0.92
HasAutoIncrementFlagFunction · 0.92
HasNoDefaultValueFlagFunction · 0.92
GetZeroValueFunction · 0.85
HasStrictModeMethod · 0.80
GetFlagMethod · 0.65
GetTypeMethod · 0.65
GetEvalCtxMethod · 0.65
SQLModeMethod · 0.65
AppendWarningMethod · 0.65

Tested by

no test coverage detected