...

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

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

     1  package sqlserver
     2  
     3  import (
     4  	"github.com/doug-martin/goqu/v9"
     5  	"github.com/doug-martin/goqu/v9/exp"
     6  	"github.com/doug-martin/goqu/v9/sqlgen"
     7  )
     8  
     9  func DialectOptions() *goqu.SQLDialectOptions {
    10  	opts := goqu.DefaultDialectOptions()
    11  
    12  	opts.BooleanDataTypeSupported = false
    13  	opts.UseLiteralIsBools = false
    14  
    15  	opts.SupportsReturn = false
    16  	opts.SupportsOrderByOnUpdate = false
    17  	opts.SupportsLimitOnUpdate = false
    18  	opts.SupportsLimitOnDelete = false
    19  	opts.SupportsOrderByOnDelete = true
    20  	opts.SupportsConflictUpdateWhere = false
    21  	opts.SupportsInsertIgnoreSyntax = false
    22  	opts.SupportsConflictTarget = false
    23  	opts.SupportsWithCTE = false
    24  	opts.SupportsWithCTERecursive = false
    25  	opts.SupportsDistinctOn = false
    26  	opts.SupportsWindowFunction = false
    27  	opts.SurroundLimitWithParentheses = true
    28  
    29  	opts.PlaceHolderFragment = []byte("@p")
    30  	opts.LimitFragment = []byte(" TOP ")
    31  	opts.IncludePlaceholderNum = true
    32  	opts.DefaultValuesFragment = []byte("")
    33  	opts.True = []byte("1")
    34  	opts.False = []byte("0")
    35  	opts.TimeFormat = "2006-01-02 15:04:05"
    36  	opts.BooleanOperatorLookup = map[exp.BooleanOperation][]byte{
    37  		exp.EqOp:             []byte("="),
    38  		exp.NeqOp:            []byte("!="),
    39  		exp.GtOp:             []byte(">"),
    40  		exp.GteOp:            []byte(">="),
    41  		exp.LtOp:             []byte("<"),
    42  		exp.LteOp:            []byte("<="),
    43  		exp.InOp:             []byte("IN"),
    44  		exp.NotInOp:          []byte("NOT IN"),
    45  		exp.IsOp:             []byte("IS"),
    46  		exp.IsNotOp:          []byte("IS NOT"),
    47  		exp.LikeOp:           []byte("LIKE"),
    48  		exp.NotLikeOp:        []byte("NOT LIKE"),
    49  		exp.ILikeOp:          []byte("LIKE"),
    50  		exp.NotILikeOp:       []byte("NOT LIKE"),
    51  		exp.RegexpLikeOp:     []byte("REGEXP BINARY"),
    52  		exp.RegexpNotLikeOp:  []byte("NOT REGEXP BINARY"),
    53  		exp.RegexpILikeOp:    []byte("REGEXP"),
    54  		exp.RegexpNotILikeOp: []byte("NOT REGEXP"),
    55  	}
    56  	opts.BitwiseOperatorLookup = map[exp.BitwiseOperation][]byte{
    57  		exp.BitwiseInversionOp: []byte("~"),
    58  		exp.BitwiseOrOp:        []byte("|"),
    59  		exp.BitwiseAndOp:       []byte("&"),
    60  		exp.BitwiseXorOp:       []byte("^"),
    61  	}
    62  
    63  	opts.FetchFragment = []byte(" FETCH FIRST ")
    64  
    65  	opts.SelectSQLOrder = []sqlgen.SQLFragmentType{
    66  		sqlgen.CommonTableSQLFragment,
    67  		sqlgen.SelectWithLimitSQLFragment,
    68  		sqlgen.FromSQLFragment,
    69  		sqlgen.JoinSQLFragment,
    70  		sqlgen.WhereSQLFragment,
    71  		sqlgen.GroupBySQLFragment,
    72  		sqlgen.HavingSQLFragment,
    73  		sqlgen.WindowSQLFragment,
    74  		sqlgen.CompoundsSQLFragment,
    75  		sqlgen.OrderWithOffsetFetchSQLFragment,
    76  		sqlgen.ForSQLFragment,
    77  	}
    78  
    79  	opts.EscapedRunes = map[rune][]byte{
    80  		'\'': []byte("\\'"),
    81  		'"':  []byte("\\\""),
    82  		'\\': []byte("\\\\"),
    83  		'\n': []byte("\\n"),
    84  		'\r': []byte("\\r"),
    85  		0:    []byte("\\x00"),
    86  		0x1a: []byte("\\x1a"),
    87  	}
    88  
    89  	opts.OfFragment = []byte("")
    90  	opts.ConflictFragment = []byte("")
    91  	opts.ConflictDoUpdateFragment = []byte("")
    92  	opts.ConflictDoNothingFragment = []byte("")
    93  
    94  	return opts
    95  }
    96  
    97  func init() {
    98  	goqu.RegisterDialect("sqlserver", DialectOptions())
    99  }
   100  

View as plain text