...

Source file src/github.com/doug-martin/goqu/v9/dialect/mysql/mysql.go

Documentation: github.com/doug-martin/goqu/v9/dialect/mysql

     1  package mysql
     2  
     3  import (
     4  	"github.com/doug-martin/goqu/v9"
     5  	"github.com/doug-martin/goqu/v9/exp"
     6  )
     7  
     8  func DialectOptions() *goqu.SQLDialectOptions {
     9  	opts := goqu.DefaultDialectOptions()
    10  
    11  	opts.SupportsReturn = false
    12  	opts.SupportsOrderByOnUpdate = true
    13  	opts.SupportsLimitOnUpdate = true
    14  	opts.SupportsLimitOnDelete = true
    15  	opts.SupportsOrderByOnDelete = true
    16  	opts.SupportsConflictUpdateWhere = false
    17  	opts.SupportsInsertIgnoreSyntax = true
    18  	opts.SupportsConflictTarget = false
    19  	opts.SupportsWithCTE = false
    20  	opts.SupportsWithCTERecursive = false
    21  	opts.SupportsDistinctOn = false
    22  	opts.SupportsWindowFunction = false
    23  	opts.SupportsDeleteTableHint = true
    24  
    25  	opts.UseFromClauseForMultipleUpdateTables = false
    26  
    27  	opts.PlaceHolderFragment = []byte("?")
    28  	opts.IncludePlaceholderNum = false
    29  	opts.QuoteRune = '`'
    30  	opts.DefaultValuesFragment = []byte("")
    31  	opts.True = []byte("1")
    32  	opts.False = []byte("0")
    33  	opts.TimeFormat = "2006-01-02 15:04:05"
    34  	opts.BooleanOperatorLookup = map[exp.BooleanOperation][]byte{
    35  		exp.EqOp:             []byte("="),
    36  		exp.NeqOp:            []byte("!="),
    37  		exp.GtOp:             []byte(">"),
    38  		exp.GteOp:            []byte(">="),
    39  		exp.LtOp:             []byte("<"),
    40  		exp.LteOp:            []byte("<="),
    41  		exp.InOp:             []byte("IN"),
    42  		exp.NotInOp:          []byte("NOT IN"),
    43  		exp.IsOp:             []byte("IS"),
    44  		exp.IsNotOp:          []byte("IS NOT"),
    45  		exp.LikeOp:           []byte("LIKE BINARY"),
    46  		exp.NotLikeOp:        []byte("NOT LIKE BINARY"),
    47  		exp.ILikeOp:          []byte("LIKE"),
    48  		exp.NotILikeOp:       []byte("NOT LIKE"),
    49  		exp.RegexpLikeOp:     []byte("REGEXP BINARY"),
    50  		exp.RegexpNotLikeOp:  []byte("NOT REGEXP BINARY"),
    51  		exp.RegexpILikeOp:    []byte("REGEXP"),
    52  		exp.RegexpNotILikeOp: []byte("NOT REGEXP"),
    53  	}
    54  	opts.BitwiseOperatorLookup = map[exp.BitwiseOperation][]byte{
    55  		exp.BitwiseInversionOp:  []byte("~"),
    56  		exp.BitwiseOrOp:         []byte("|"),
    57  		exp.BitwiseAndOp:        []byte("&"),
    58  		exp.BitwiseXorOp:        []byte("^"),
    59  		exp.BitwiseLeftShiftOp:  []byte("<<"),
    60  		exp.BitwiseRightShiftOp: []byte(">>"),
    61  	}
    62  	opts.EscapedRunes = map[rune][]byte{
    63  		'\'': []byte("\\'"),
    64  		'"':  []byte("\\\""),
    65  		'\\': []byte("\\\\"),
    66  		'\n': []byte("\\n"),
    67  		'\r': []byte("\\r"),
    68  		0:    []byte("\\x00"),
    69  		0x1a: []byte("\\x1a"),
    70  	}
    71  	opts.InsertIgnoreClause = []byte("INSERT IGNORE INTO")
    72  	opts.ConflictFragment = []byte("")
    73  	opts.ConflictDoUpdateFragment = []byte(" ON DUPLICATE KEY UPDATE ")
    74  	opts.ConflictDoNothingFragment = []byte("")
    75  	return opts
    76  }
    77  
    78  func DialectOptionsV8() *goqu.SQLDialectOptions {
    79  	opts := DialectOptions()
    80  	opts.SupportsWindowFunction = true
    81  	return opts
    82  }
    83  
    84  func init() {
    85  	goqu.RegisterDialect("mysql", DialectOptions())
    86  	goqu.RegisterDialect("mysql8", DialectOptionsV8())
    87  }
    88  

View as plain text