Add support for PostgreSQL interval column
This commit is contained in:
parent
641c62098c
commit
3013dc3647
30 changed files with 1038 additions and 255 deletions
|
|
@ -71,6 +71,152 @@ func TestAllTypesInsertQuery(t *testing.T) {
|
|||
assert.DeepEqual(t, dest[1], allTypesRow1)
|
||||
}
|
||||
|
||||
func TestAllTypesFromSubQuery(t *testing.T) {
|
||||
|
||||
subQuery := SELECT(AllTypes.AllColumns).
|
||||
FROM(AllTypes).
|
||||
AsTable("allTypesSubQuery")
|
||||
|
||||
mainQuery := SELECT(subQuery.AllColumns()).
|
||||
FROM(subQuery).
|
||||
LIMIT(2)
|
||||
|
||||
assert.Equal(t, mainQuery.DebugSql(), `
|
||||
SELECT "allTypesSubQuery"."all_types.small_int_ptr" AS "all_types.small_int_ptr",
|
||||
"allTypesSubQuery"."all_types.small_int" AS "all_types.small_int",
|
||||
"allTypesSubQuery"."all_types.integer_ptr" AS "all_types.integer_ptr",
|
||||
"allTypesSubQuery"."all_types.integer" AS "all_types.integer",
|
||||
"allTypesSubQuery"."all_types.big_int_ptr" AS "all_types.big_int_ptr",
|
||||
"allTypesSubQuery"."all_types.big_int" AS "all_types.big_int",
|
||||
"allTypesSubQuery"."all_types.decimal_ptr" AS "all_types.decimal_ptr",
|
||||
"allTypesSubQuery"."all_types.decimal" AS "all_types.decimal",
|
||||
"allTypesSubQuery"."all_types.numeric_ptr" AS "all_types.numeric_ptr",
|
||||
"allTypesSubQuery"."all_types.numeric" AS "all_types.numeric",
|
||||
"allTypesSubQuery"."all_types.real_ptr" AS "all_types.real_ptr",
|
||||
"allTypesSubQuery"."all_types.real" AS "all_types.real",
|
||||
"allTypesSubQuery"."all_types.double_precision_ptr" AS "all_types.double_precision_ptr",
|
||||
"allTypesSubQuery"."all_types.double_precision" AS "all_types.double_precision",
|
||||
"allTypesSubQuery"."all_types.smallserial" AS "all_types.smallserial",
|
||||
"allTypesSubQuery"."all_types.serial" AS "all_types.serial",
|
||||
"allTypesSubQuery"."all_types.bigserial" AS "all_types.bigserial",
|
||||
"allTypesSubQuery"."all_types.var_char_ptr" AS "all_types.var_char_ptr",
|
||||
"allTypesSubQuery"."all_types.var_char" AS "all_types.var_char",
|
||||
"allTypesSubQuery"."all_types.char_ptr" AS "all_types.char_ptr",
|
||||
"allTypesSubQuery"."all_types.char" AS "all_types.char",
|
||||
"allTypesSubQuery"."all_types.text_ptr" AS "all_types.text_ptr",
|
||||
"allTypesSubQuery"."all_types.text" AS "all_types.text",
|
||||
"allTypesSubQuery"."all_types.bytea_ptr" AS "all_types.bytea_ptr",
|
||||
"allTypesSubQuery"."all_types.bytea" AS "all_types.bytea",
|
||||
"allTypesSubQuery"."all_types.timestampz_ptr" AS "all_types.timestampz_ptr",
|
||||
"allTypesSubQuery"."all_types.timestampz" AS "all_types.timestampz",
|
||||
"allTypesSubQuery"."all_types.timestamp_ptr" AS "all_types.timestamp_ptr",
|
||||
"allTypesSubQuery"."all_types.timestamp" AS "all_types.timestamp",
|
||||
"allTypesSubQuery"."all_types.date_ptr" AS "all_types.date_ptr",
|
||||
"allTypesSubQuery"."all_types.date" AS "all_types.date",
|
||||
"allTypesSubQuery"."all_types.timez_ptr" AS "all_types.timez_ptr",
|
||||
"allTypesSubQuery"."all_types.timez" AS "all_types.timez",
|
||||
"allTypesSubQuery"."all_types.time_ptr" AS "all_types.time_ptr",
|
||||
"allTypesSubQuery"."all_types.time" AS "all_types.time",
|
||||
"allTypesSubQuery"."all_types.interval_ptr" AS "all_types.interval_ptr",
|
||||
"allTypesSubQuery"."all_types.interval" AS "all_types.interval",
|
||||
"allTypesSubQuery"."all_types.boolean_ptr" AS "all_types.boolean_ptr",
|
||||
"allTypesSubQuery"."all_types.boolean" AS "all_types.boolean",
|
||||
"allTypesSubQuery"."all_types.point_ptr" AS "all_types.point_ptr",
|
||||
"allTypesSubQuery"."all_types.bit_ptr" AS "all_types.bit_ptr",
|
||||
"allTypesSubQuery"."all_types.bit" AS "all_types.bit",
|
||||
"allTypesSubQuery"."all_types.bit_varying_ptr" AS "all_types.bit_varying_ptr",
|
||||
"allTypesSubQuery"."all_types.bit_varying" AS "all_types.bit_varying",
|
||||
"allTypesSubQuery"."all_types.tsvector_ptr" AS "all_types.tsvector_ptr",
|
||||
"allTypesSubQuery"."all_types.tsvector" AS "all_types.tsvector",
|
||||
"allTypesSubQuery"."all_types.uuid_ptr" AS "all_types.uuid_ptr",
|
||||
"allTypesSubQuery"."all_types.uuid" AS "all_types.uuid",
|
||||
"allTypesSubQuery"."all_types.xml_ptr" AS "all_types.xml_ptr",
|
||||
"allTypesSubQuery"."all_types.xml" AS "all_types.xml",
|
||||
"allTypesSubQuery"."all_types.json_ptr" AS "all_types.json_ptr",
|
||||
"allTypesSubQuery"."all_types.json" AS "all_types.json",
|
||||
"allTypesSubQuery"."all_types.jsonb_ptr" AS "all_types.jsonb_ptr",
|
||||
"allTypesSubQuery"."all_types.jsonb" AS "all_types.jsonb",
|
||||
"allTypesSubQuery"."all_types.integer_array_ptr" AS "all_types.integer_array_ptr",
|
||||
"allTypesSubQuery"."all_types.integer_array" AS "all_types.integer_array",
|
||||
"allTypesSubQuery"."all_types.text_array_ptr" AS "all_types.text_array_ptr",
|
||||
"allTypesSubQuery"."all_types.text_array" AS "all_types.text_array",
|
||||
"allTypesSubQuery"."all_types.jsonb_array" AS "all_types.jsonb_array",
|
||||
"allTypesSubQuery"."all_types.text_multi_dim_array_ptr" AS "all_types.text_multi_dim_array_ptr",
|
||||
"allTypesSubQuery"."all_types.text_multi_dim_array" AS "all_types.text_multi_dim_array"
|
||||
FROM (
|
||||
SELECT all_types.small_int_ptr AS "all_types.small_int_ptr",
|
||||
all_types.small_int AS "all_types.small_int",
|
||||
all_types.integer_ptr AS "all_types.integer_ptr",
|
||||
all_types.integer AS "all_types.integer",
|
||||
all_types.big_int_ptr AS "all_types.big_int_ptr",
|
||||
all_types.big_int AS "all_types.big_int",
|
||||
all_types.decimal_ptr AS "all_types.decimal_ptr",
|
||||
all_types.decimal AS "all_types.decimal",
|
||||
all_types.numeric_ptr AS "all_types.numeric_ptr",
|
||||
all_types.numeric AS "all_types.numeric",
|
||||
all_types.real_ptr AS "all_types.real_ptr",
|
||||
all_types.real AS "all_types.real",
|
||||
all_types.double_precision_ptr AS "all_types.double_precision_ptr",
|
||||
all_types.double_precision AS "all_types.double_precision",
|
||||
all_types.smallserial AS "all_types.smallserial",
|
||||
all_types.serial AS "all_types.serial",
|
||||
all_types.bigserial AS "all_types.bigserial",
|
||||
all_types.var_char_ptr AS "all_types.var_char_ptr",
|
||||
all_types.var_char AS "all_types.var_char",
|
||||
all_types.char_ptr AS "all_types.char_ptr",
|
||||
all_types.char AS "all_types.char",
|
||||
all_types.text_ptr AS "all_types.text_ptr",
|
||||
all_types.text AS "all_types.text",
|
||||
all_types.bytea_ptr AS "all_types.bytea_ptr",
|
||||
all_types.bytea AS "all_types.bytea",
|
||||
all_types.timestampz_ptr AS "all_types.timestampz_ptr",
|
||||
all_types.timestampz AS "all_types.timestampz",
|
||||
all_types.timestamp_ptr AS "all_types.timestamp_ptr",
|
||||
all_types.timestamp AS "all_types.timestamp",
|
||||
all_types.date_ptr AS "all_types.date_ptr",
|
||||
all_types.date AS "all_types.date",
|
||||
all_types.timez_ptr AS "all_types.timez_ptr",
|
||||
all_types.timez AS "all_types.timez",
|
||||
all_types.time_ptr AS "all_types.time_ptr",
|
||||
all_types.time AS "all_types.time",
|
||||
all_types.interval_ptr AS "all_types.interval_ptr",
|
||||
all_types.interval AS "all_types.interval",
|
||||
all_types.boolean_ptr AS "all_types.boolean_ptr",
|
||||
all_types.boolean AS "all_types.boolean",
|
||||
all_types.point_ptr AS "all_types.point_ptr",
|
||||
all_types.bit_ptr AS "all_types.bit_ptr",
|
||||
all_types.bit AS "all_types.bit",
|
||||
all_types.bit_varying_ptr AS "all_types.bit_varying_ptr",
|
||||
all_types.bit_varying AS "all_types.bit_varying",
|
||||
all_types.tsvector_ptr AS "all_types.tsvector_ptr",
|
||||
all_types.tsvector AS "all_types.tsvector",
|
||||
all_types.uuid_ptr AS "all_types.uuid_ptr",
|
||||
all_types.uuid AS "all_types.uuid",
|
||||
all_types.xml_ptr AS "all_types.xml_ptr",
|
||||
all_types.xml AS "all_types.xml",
|
||||
all_types.json_ptr AS "all_types.json_ptr",
|
||||
all_types.json AS "all_types.json",
|
||||
all_types.jsonb_ptr AS "all_types.jsonb_ptr",
|
||||
all_types.jsonb AS "all_types.jsonb",
|
||||
all_types.integer_array_ptr AS "all_types.integer_array_ptr",
|
||||
all_types.integer_array AS "all_types.integer_array",
|
||||
all_types.text_array_ptr AS "all_types.text_array_ptr",
|
||||
all_types.text_array AS "all_types.text_array",
|
||||
all_types.jsonb_array AS "all_types.jsonb_array",
|
||||
all_types.text_multi_dim_array_ptr AS "all_types.text_multi_dim_array_ptr",
|
||||
all_types.text_multi_dim_array AS "all_types.text_multi_dim_array"
|
||||
FROM test_sample.all_types
|
||||
) AS "allTypesSubQuery"
|
||||
LIMIT 2;
|
||||
`)
|
||||
|
||||
dest := []model.AllTypes{}
|
||||
err := mainQuery.Query(db, &dest)
|
||||
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, len(dest), 2)
|
||||
}
|
||||
|
||||
func TestExpressionOperators(t *testing.T) {
|
||||
query := AllTypes.SELECT(
|
||||
AllTypes.Integer.IS_NULL().AS("result.is_null"),
|
||||
|
|
@ -671,7 +817,20 @@ func TestInterval(t *testing.T) {
|
|||
INTERVALd(1*time.Hour),
|
||||
INTERVALd(24*time.Hour),
|
||||
INTERVALd(24*time.Hour+2*time.Hour+3*time.Minute+4*time.Second+5*time.Microsecond),
|
||||
)
|
||||
|
||||
AllTypes.Interval.EQ(INTERVAL(2, HOUR, 20, MINUTE)).EQ(Bool(true)),
|
||||
AllTypes.IntervalPtr.NOT_EQ(INTERVAL(2, HOUR, 20, MINUTE)).EQ(Bool(false)),
|
||||
AllTypes.Interval.IS_DISTINCT_FROM(INTERVAL(2, HOUR, 20, MINUTE)).EQ(AllTypes.Boolean),
|
||||
AllTypes.IntervalPtr.IS_NOT_DISTINCT_FROM(INTERVALd(10*time.Microsecond)).EQ(AllTypes.Boolean),
|
||||
AllTypes.Interval.LT(AllTypes.IntervalPtr).EQ(AllTypes.BooleanPtr),
|
||||
AllTypes.Interval.LT_EQ(AllTypes.IntervalPtr).EQ(AllTypes.BooleanPtr),
|
||||
AllTypes.Interval.GT(AllTypes.IntervalPtr).EQ(AllTypes.BooleanPtr),
|
||||
AllTypes.Interval.GT_EQ(AllTypes.IntervalPtr).EQ(AllTypes.BooleanPtr),
|
||||
AllTypes.Interval.ADD(AllTypes.IntervalPtr).EQ(INTERVALd(17*time.Second)),
|
||||
AllTypes.Interval.SUB(AllTypes.IntervalPtr).EQ(INTERVAL(100, MICROSECOND)),
|
||||
AllTypes.IntervalPtr.MUL(Int(11)).EQ(AllTypes.Interval),
|
||||
AllTypes.IntervalPtr.DIV(Float(22.222)).EQ(AllTypes.IntervalPtr),
|
||||
).FROM(AllTypes)
|
||||
|
||||
//fmt.Println(stmt.DebugSql())
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ import (
|
|||
)
|
||||
|
||||
func TestGeneratedModel(t *testing.T) {
|
||||
|
||||
actor := model.Actor{}
|
||||
|
||||
assert.Equal(t, reflect.TypeOf(actor.ActorID).String(), "int32")
|
||||
|
|
@ -275,3 +274,345 @@ func newActorInfoTable() *ActorInfoTable {
|
|||
}
|
||||
}
|
||||
`
|
||||
|
||||
func TestGeneratedAllTypesSQLBuilderFiles(t *testing.T) {
|
||||
enumDir := testRoot + ".gentestdata/jetdb/test_sample/enum/"
|
||||
modelDir := testRoot + ".gentestdata/jetdb/test_sample/model/"
|
||||
tableDir := testRoot + ".gentestdata/jetdb/test_sample/table/"
|
||||
|
||||
enumFiles, err := ioutil.ReadDir(enumDir)
|
||||
assert.NilError(t, err)
|
||||
|
||||
testutils.AssertFileNamesEqual(t, enumFiles, "mood.go")
|
||||
testutils.AssertFileContent(t, enumDir+"mood.go", "\npackage enum", moodEnumContent)
|
||||
|
||||
modelFiles, err := ioutil.ReadDir(modelDir)
|
||||
assert.NilError(t, err)
|
||||
|
||||
testutils.AssertFileNamesEqual(t, modelFiles, "all_types.go", "all_types_view.go", "employee.go", "link.go",
|
||||
"mood.go", "person.go", "person_phone.go", "weird_names_table.go")
|
||||
|
||||
testutils.AssertFileContent(t, modelDir+"all_types.go", "\npackage model", allTypesModelContent)
|
||||
|
||||
tableFiles, err := ioutil.ReadDir(tableDir)
|
||||
assert.NilError(t, err)
|
||||
|
||||
testutils.AssertFileNamesEqual(t, tableFiles, "all_types.go", "employee.go", "link.go",
|
||||
"person.go", "person_phone.go", "weird_names_table.go")
|
||||
|
||||
testutils.AssertFileContent(t, tableDir+"all_types.go", "\npackage table", allTypesTableContent)
|
||||
}
|
||||
|
||||
var moodEnumContent = `
|
||||
package enum
|
||||
|
||||
import "github.com/go-jet/jet/postgres"
|
||||
|
||||
var Mood = &struct {
|
||||
Sad postgres.StringExpression
|
||||
Ok postgres.StringExpression
|
||||
Happy postgres.StringExpression
|
||||
}{
|
||||
Sad: postgres.NewEnumValue("sad"),
|
||||
Ok: postgres.NewEnumValue("ok"),
|
||||
Happy: postgres.NewEnumValue("happy"),
|
||||
}
|
||||
`
|
||||
|
||||
var allTypesModelContent = `
|
||||
package model
|
||||
|
||||
import (
|
||||
"github.com/google/uuid"
|
||||
"time"
|
||||
)
|
||||
|
||||
type AllTypes struct {
|
||||
SmallIntPtr *int16
|
||||
SmallInt int16
|
||||
IntegerPtr *int32
|
||||
Integer int32
|
||||
BigIntPtr *int64
|
||||
BigInt int64
|
||||
DecimalPtr *float64
|
||||
Decimal float64
|
||||
NumericPtr *float64
|
||||
Numeric float64
|
||||
RealPtr *float32
|
||||
Real float32
|
||||
DoublePrecisionPtr *float64
|
||||
DoublePrecision float64
|
||||
Smallserial int16
|
||||
Serial int32
|
||||
Bigserial int64
|
||||
VarCharPtr *string
|
||||
VarChar string
|
||||
CharPtr *string
|
||||
Char string
|
||||
TextPtr *string
|
||||
Text string
|
||||
ByteaPtr *[]byte
|
||||
Bytea []byte
|
||||
TimestampzPtr *time.Time
|
||||
Timestampz time.Time
|
||||
TimestampPtr *time.Time
|
||||
Timestamp time.Time
|
||||
DatePtr *time.Time
|
||||
Date time.Time
|
||||
TimezPtr *time.Time
|
||||
Timez time.Time
|
||||
TimePtr *time.Time
|
||||
Time time.Time
|
||||
IntervalPtr *string
|
||||
Interval string
|
||||
BooleanPtr *bool
|
||||
Boolean bool
|
||||
PointPtr *string
|
||||
BitPtr *string
|
||||
Bit string
|
||||
BitVaryingPtr *string
|
||||
BitVarying string
|
||||
TsvectorPtr *string
|
||||
Tsvector string
|
||||
UUIDPtr *uuid.UUID
|
||||
UUID uuid.UUID
|
||||
XMLPtr *string
|
||||
XML string
|
||||
JSONPtr *string
|
||||
JSON string
|
||||
JsonbPtr *string
|
||||
Jsonb string
|
||||
IntegerArrayPtr *string
|
||||
IntegerArray string
|
||||
TextArrayPtr *string
|
||||
TextArray string
|
||||
JsonbArray string
|
||||
TextMultiDimArrayPtr *string
|
||||
TextMultiDimArray string
|
||||
}
|
||||
`
|
||||
|
||||
var allTypesTableContent = `
|
||||
package table
|
||||
|
||||
import (
|
||||
"github.com/go-jet/jet/postgres"
|
||||
)
|
||||
|
||||
var AllTypes = newAllTypesTable()
|
||||
|
||||
type AllTypesTable struct {
|
||||
postgres.Table
|
||||
|
||||
//Columns
|
||||
SmallIntPtr postgres.ColumnInteger
|
||||
SmallInt postgres.ColumnInteger
|
||||
IntegerPtr postgres.ColumnInteger
|
||||
Integer postgres.ColumnInteger
|
||||
BigIntPtr postgres.ColumnInteger
|
||||
BigInt postgres.ColumnInteger
|
||||
DecimalPtr postgres.ColumnFloat
|
||||
Decimal postgres.ColumnFloat
|
||||
NumericPtr postgres.ColumnFloat
|
||||
Numeric postgres.ColumnFloat
|
||||
RealPtr postgres.ColumnFloat
|
||||
Real postgres.ColumnFloat
|
||||
DoublePrecisionPtr postgres.ColumnFloat
|
||||
DoublePrecision postgres.ColumnFloat
|
||||
Smallserial postgres.ColumnInteger
|
||||
Serial postgres.ColumnInteger
|
||||
Bigserial postgres.ColumnInteger
|
||||
VarCharPtr postgres.ColumnString
|
||||
VarChar postgres.ColumnString
|
||||
CharPtr postgres.ColumnString
|
||||
Char postgres.ColumnString
|
||||
TextPtr postgres.ColumnString
|
||||
Text postgres.ColumnString
|
||||
ByteaPtr postgres.ColumnString
|
||||
Bytea postgres.ColumnString
|
||||
TimestampzPtr postgres.ColumnTimestampz
|
||||
Timestampz postgres.ColumnTimestampz
|
||||
TimestampPtr postgres.ColumnTimestamp
|
||||
Timestamp postgres.ColumnTimestamp
|
||||
DatePtr postgres.ColumnDate
|
||||
Date postgres.ColumnDate
|
||||
TimezPtr postgres.ColumnTimez
|
||||
Timez postgres.ColumnTimez
|
||||
TimePtr postgres.ColumnTime
|
||||
Time postgres.ColumnTime
|
||||
IntervalPtr postgres.ColumnInterval
|
||||
Interval postgres.ColumnInterval
|
||||
BooleanPtr postgres.ColumnBool
|
||||
Boolean postgres.ColumnBool
|
||||
PointPtr postgres.ColumnString
|
||||
BitPtr postgres.ColumnString
|
||||
Bit postgres.ColumnString
|
||||
BitVaryingPtr postgres.ColumnString
|
||||
BitVarying postgres.ColumnString
|
||||
TsvectorPtr postgres.ColumnString
|
||||
Tsvector postgres.ColumnString
|
||||
UUIDPtr postgres.ColumnString
|
||||
UUID postgres.ColumnString
|
||||
XMLPtr postgres.ColumnString
|
||||
XML postgres.ColumnString
|
||||
JSONPtr postgres.ColumnString
|
||||
JSON postgres.ColumnString
|
||||
JsonbPtr postgres.ColumnString
|
||||
Jsonb postgres.ColumnString
|
||||
IntegerArrayPtr postgres.ColumnString
|
||||
IntegerArray postgres.ColumnString
|
||||
TextArrayPtr postgres.ColumnString
|
||||
TextArray postgres.ColumnString
|
||||
JsonbArray postgres.ColumnString
|
||||
TextMultiDimArrayPtr postgres.ColumnString
|
||||
TextMultiDimArray postgres.ColumnString
|
||||
|
||||
AllColumns postgres.ColumnList
|
||||
MutableColumns postgres.ColumnList
|
||||
}
|
||||
|
||||
// creates new AllTypesTable with assigned alias
|
||||
func (a *AllTypesTable) AS(alias string) *AllTypesTable {
|
||||
aliasTable := newAllTypesTable()
|
||||
|
||||
aliasTable.Table.AS(alias)
|
||||
|
||||
return aliasTable
|
||||
}
|
||||
|
||||
func newAllTypesTable() *AllTypesTable {
|
||||
var (
|
||||
SmallIntPtrColumn = postgres.IntegerColumn("small_int_ptr")
|
||||
SmallIntColumn = postgres.IntegerColumn("small_int")
|
||||
IntegerPtrColumn = postgres.IntegerColumn("integer_ptr")
|
||||
IntegerColumn = postgres.IntegerColumn("integer")
|
||||
BigIntPtrColumn = postgres.IntegerColumn("big_int_ptr")
|
||||
BigIntColumn = postgres.IntegerColumn("big_int")
|
||||
DecimalPtrColumn = postgres.FloatColumn("decimal_ptr")
|
||||
DecimalColumn = postgres.FloatColumn("decimal")
|
||||
NumericPtrColumn = postgres.FloatColumn("numeric_ptr")
|
||||
NumericColumn = postgres.FloatColumn("numeric")
|
||||
RealPtrColumn = postgres.FloatColumn("real_ptr")
|
||||
RealColumn = postgres.FloatColumn("real")
|
||||
DoublePrecisionPtrColumn = postgres.FloatColumn("double_precision_ptr")
|
||||
DoublePrecisionColumn = postgres.FloatColumn("double_precision")
|
||||
SmallserialColumn = postgres.IntegerColumn("smallserial")
|
||||
SerialColumn = postgres.IntegerColumn("serial")
|
||||
BigserialColumn = postgres.IntegerColumn("bigserial")
|
||||
VarCharPtrColumn = postgres.StringColumn("var_char_ptr")
|
||||
VarCharColumn = postgres.StringColumn("var_char")
|
||||
CharPtrColumn = postgres.StringColumn("char_ptr")
|
||||
CharColumn = postgres.StringColumn("char")
|
||||
TextPtrColumn = postgres.StringColumn("text_ptr")
|
||||
TextColumn = postgres.StringColumn("text")
|
||||
ByteaPtrColumn = postgres.StringColumn("bytea_ptr")
|
||||
ByteaColumn = postgres.StringColumn("bytea")
|
||||
TimestampzPtrColumn = postgres.TimestampzColumn("timestampz_ptr")
|
||||
TimestampzColumn = postgres.TimestampzColumn("timestampz")
|
||||
TimestampPtrColumn = postgres.TimestampColumn("timestamp_ptr")
|
||||
TimestampColumn = postgres.TimestampColumn("timestamp")
|
||||
DatePtrColumn = postgres.DateColumn("date_ptr")
|
||||
DateColumn = postgres.DateColumn("date")
|
||||
TimezPtrColumn = postgres.TimezColumn("timez_ptr")
|
||||
TimezColumn = postgres.TimezColumn("timez")
|
||||
TimePtrColumn = postgres.TimeColumn("time_ptr")
|
||||
TimeColumn = postgres.TimeColumn("time")
|
||||
IntervalPtrColumn = postgres.IntervalColumn("interval_ptr")
|
||||
IntervalColumn = postgres.IntervalColumn("interval")
|
||||
BooleanPtrColumn = postgres.BoolColumn("boolean_ptr")
|
||||
BooleanColumn = postgres.BoolColumn("boolean")
|
||||
PointPtrColumn = postgres.StringColumn("point_ptr")
|
||||
BitPtrColumn = postgres.StringColumn("bit_ptr")
|
||||
BitColumn = postgres.StringColumn("bit")
|
||||
BitVaryingPtrColumn = postgres.StringColumn("bit_varying_ptr")
|
||||
BitVaryingColumn = postgres.StringColumn("bit_varying")
|
||||
TsvectorPtrColumn = postgres.StringColumn("tsvector_ptr")
|
||||
TsvectorColumn = postgres.StringColumn("tsvector")
|
||||
UUIDPtrColumn = postgres.StringColumn("uuid_ptr")
|
||||
UUIDColumn = postgres.StringColumn("uuid")
|
||||
XMLPtrColumn = postgres.StringColumn("xml_ptr")
|
||||
XMLColumn = postgres.StringColumn("xml")
|
||||
JSONPtrColumn = postgres.StringColumn("json_ptr")
|
||||
JSONColumn = postgres.StringColumn("json")
|
||||
JsonbPtrColumn = postgres.StringColumn("jsonb_ptr")
|
||||
JsonbColumn = postgres.StringColumn("jsonb")
|
||||
IntegerArrayPtrColumn = postgres.StringColumn("integer_array_ptr")
|
||||
IntegerArrayColumn = postgres.StringColumn("integer_array")
|
||||
TextArrayPtrColumn = postgres.StringColumn("text_array_ptr")
|
||||
TextArrayColumn = postgres.StringColumn("text_array")
|
||||
JsonbArrayColumn = postgres.StringColumn("jsonb_array")
|
||||
TextMultiDimArrayPtrColumn = postgres.StringColumn("text_multi_dim_array_ptr")
|
||||
TextMultiDimArrayColumn = postgres.StringColumn("text_multi_dim_array")
|
||||
)
|
||||
|
||||
return &AllTypesTable{
|
||||
Table: postgres.NewTable("test_sample", "all_types", SmallIntPtrColumn, SmallIntColumn, IntegerPtrColumn, IntegerColumn, BigIntPtrColumn, BigIntColumn, DecimalPtrColumn, DecimalColumn, NumericPtrColumn, NumericColumn, RealPtrColumn, RealColumn, DoublePrecisionPtrColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharPtrColumn, VarCharColumn, CharPtrColumn, CharColumn, TextPtrColumn, TextColumn, ByteaPtrColumn, ByteaColumn, TimestampzPtrColumn, TimestampzColumn, TimestampPtrColumn, TimestampColumn, DatePtrColumn, DateColumn, TimezPtrColumn, TimezColumn, TimePtrColumn, TimeColumn, IntervalPtrColumn, IntervalColumn, BooleanPtrColumn, BooleanColumn, PointPtrColumn, BitPtrColumn, BitColumn, BitVaryingPtrColumn, BitVaryingColumn, TsvectorPtrColumn, TsvectorColumn, UUIDPtrColumn, UUIDColumn, XMLPtrColumn, XMLColumn, JSONPtrColumn, JSONColumn, JsonbPtrColumn, JsonbColumn, IntegerArrayPtrColumn, IntegerArrayColumn, TextArrayPtrColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayPtrColumn, TextMultiDimArrayColumn),
|
||||
|
||||
//Columns
|
||||
SmallIntPtr: SmallIntPtrColumn,
|
||||
SmallInt: SmallIntColumn,
|
||||
IntegerPtr: IntegerPtrColumn,
|
||||
Integer: IntegerColumn,
|
||||
BigIntPtr: BigIntPtrColumn,
|
||||
BigInt: BigIntColumn,
|
||||
DecimalPtr: DecimalPtrColumn,
|
||||
Decimal: DecimalColumn,
|
||||
NumericPtr: NumericPtrColumn,
|
||||
Numeric: NumericColumn,
|
||||
RealPtr: RealPtrColumn,
|
||||
Real: RealColumn,
|
||||
DoublePrecisionPtr: DoublePrecisionPtrColumn,
|
||||
DoublePrecision: DoublePrecisionColumn,
|
||||
Smallserial: SmallserialColumn,
|
||||
Serial: SerialColumn,
|
||||
Bigserial: BigserialColumn,
|
||||
VarCharPtr: VarCharPtrColumn,
|
||||
VarChar: VarCharColumn,
|
||||
CharPtr: CharPtrColumn,
|
||||
Char: CharColumn,
|
||||
TextPtr: TextPtrColumn,
|
||||
Text: TextColumn,
|
||||
ByteaPtr: ByteaPtrColumn,
|
||||
Bytea: ByteaColumn,
|
||||
TimestampzPtr: TimestampzPtrColumn,
|
||||
Timestampz: TimestampzColumn,
|
||||
TimestampPtr: TimestampPtrColumn,
|
||||
Timestamp: TimestampColumn,
|
||||
DatePtr: DatePtrColumn,
|
||||
Date: DateColumn,
|
||||
TimezPtr: TimezPtrColumn,
|
||||
Timez: TimezColumn,
|
||||
TimePtr: TimePtrColumn,
|
||||
Time: TimeColumn,
|
||||
IntervalPtr: IntervalPtrColumn,
|
||||
Interval: IntervalColumn,
|
||||
BooleanPtr: BooleanPtrColumn,
|
||||
Boolean: BooleanColumn,
|
||||
PointPtr: PointPtrColumn,
|
||||
BitPtr: BitPtrColumn,
|
||||
Bit: BitColumn,
|
||||
BitVaryingPtr: BitVaryingPtrColumn,
|
||||
BitVarying: BitVaryingColumn,
|
||||
TsvectorPtr: TsvectorPtrColumn,
|
||||
Tsvector: TsvectorColumn,
|
||||
UUIDPtr: UUIDPtrColumn,
|
||||
UUID: UUIDColumn,
|
||||
XMLPtr: XMLPtrColumn,
|
||||
XML: XMLColumn,
|
||||
JSONPtr: JSONPtrColumn,
|
||||
JSON: JSONColumn,
|
||||
JsonbPtr: JsonbPtrColumn,
|
||||
Jsonb: JsonbColumn,
|
||||
IntegerArrayPtr: IntegerArrayPtrColumn,
|
||||
IntegerArray: IntegerArrayColumn,
|
||||
TextArrayPtr: TextArrayPtrColumn,
|
||||
TextArray: TextArrayColumn,
|
||||
JsonbArray: JsonbArrayColumn,
|
||||
TextMultiDimArrayPtr: TextMultiDimArrayPtrColumn,
|
||||
TextMultiDimArray: TextMultiDimArrayColumn,
|
||||
|
||||
AllColumns: postgres.ColumnList{SmallIntPtrColumn, SmallIntColumn, IntegerPtrColumn, IntegerColumn, BigIntPtrColumn, BigIntColumn, DecimalPtrColumn, DecimalColumn, NumericPtrColumn, NumericColumn, RealPtrColumn, RealColumn, DoublePrecisionPtrColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharPtrColumn, VarCharColumn, CharPtrColumn, CharColumn, TextPtrColumn, TextColumn, ByteaPtrColumn, ByteaColumn, TimestampzPtrColumn, TimestampzColumn, TimestampPtrColumn, TimestampColumn, DatePtrColumn, DateColumn, TimezPtrColumn, TimezColumn, TimePtrColumn, TimeColumn, IntervalPtrColumn, IntervalColumn, BooleanPtrColumn, BooleanColumn, PointPtrColumn, BitPtrColumn, BitColumn, BitVaryingPtrColumn, BitVaryingColumn, TsvectorPtrColumn, TsvectorColumn, UUIDPtrColumn, UUIDColumn, XMLPtrColumn, XMLColumn, JSONPtrColumn, JSONColumn, JsonbPtrColumn, JsonbColumn, IntegerArrayPtrColumn, IntegerArrayColumn, TextArrayPtrColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayPtrColumn, TextMultiDimArrayColumn},
|
||||
MutableColumns: postgres.ColumnList{SmallIntPtrColumn, SmallIntColumn, IntegerPtrColumn, IntegerColumn, BigIntPtrColumn, BigIntColumn, DecimalPtrColumn, DecimalColumn, NumericPtrColumn, NumericColumn, RealPtrColumn, RealColumn, DoublePrecisionPtrColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharPtrColumn, VarCharColumn, CharPtrColumn, CharColumn, TextPtrColumn, TextColumn, ByteaPtrColumn, ByteaColumn, TimestampzPtrColumn, TimestampzColumn, TimestampPtrColumn, TimestampColumn, DatePtrColumn, DateColumn, TimezPtrColumn, TimezColumn, TimePtrColumn, TimeColumn, IntervalPtrColumn, IntervalColumn, BooleanPtrColumn, BooleanColumn, PointPtrColumn, BitPtrColumn, BitColumn, BitVaryingPtrColumn, BitVaryingColumn, TsvectorPtrColumn, TsvectorColumn, UUIDPtrColumn, UUIDColumn, XMLPtrColumn, XMLColumn, JSONPtrColumn, JSONColumn, JsonbPtrColumn, JsonbColumn, IntegerArrayPtrColumn, IntegerArrayColumn, TextArrayPtrColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayPtrColumn, TextMultiDimArrayColumn},
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
|
|||
|
|
@ -6,14 +6,19 @@ import (
|
|||
_ "github.com/lib/pq"
|
||||
"github.com/pkg/profile"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var db *sql.DB
|
||||
var testRoot string
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
defer profile.Start().Stop()
|
||||
|
||||
setTestRoot()
|
||||
|
||||
var err error
|
||||
db, err = sql.Open("postgres", dbconfig.PostgresConnectString)
|
||||
if err != nil {
|
||||
|
|
@ -25,3 +30,13 @@ func TestMain(m *testing.M) {
|
|||
|
||||
os.Exit(ret)
|
||||
}
|
||||
|
||||
func setTestRoot() {
|
||||
cmd := exec.Command("git", "rev-parse", "--show-toplevel")
|
||||
byteArr, err := cmd.Output()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
testRoot = strings.TrimSpace(string(byteArr)) + "/tests/"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue