Use int64 instead of float64 for non decimal numbers
This commit is contained in:
parent
6da2e371ca
commit
f23d1e10d7
3 changed files with 11 additions and 9 deletions
|
@ -390,7 +390,9 @@ func (this Thing) String() string {
|
||||||
|
|
||||||
func NewThing(TB string, ID interface{}) *Thing {
|
func NewThing(TB string, ID interface{}) *Thing {
|
||||||
if str, ok := ID.(string); ok {
|
if str, ok := ID.(string); ok {
|
||||||
if cnv, err := strconv.ParseFloat(str, 64); err == nil {
|
if cnv, err := strconv.ParseInt(str, 10, 64); err == nil {
|
||||||
|
return &Thing{TB: TB, ID: cnv}
|
||||||
|
} else if cnv, err := strconv.ParseFloat(str, 64); err == nil {
|
||||||
return &Thing{TB: TB, ID: cnv}
|
return &Thing{TB: TB, ID: cnv}
|
||||||
} else if cnv, err := time.Parse(RFCDate, str); err == nil {
|
} else if cnv, err := time.Parse(RFCDate, str); err == nil {
|
||||||
return &Thing{TB: TB, ID: cnv.UTC()}
|
return &Thing{TB: TB, ID: cnv.UTC()}
|
||||||
|
|
|
@ -390,21 +390,21 @@ func Test_Parse_Queries_Select(t *testing.T) {
|
||||||
sql: `SELECT * FROM @person:123456`,
|
sql: `SELECT * FROM @person:123456`,
|
||||||
res: &Query{Statements: []Statement{&SelectStatement{
|
res: &Query{Statements: []Statement{&SelectStatement{
|
||||||
Expr: []*Field{{Expr: &All{}, Alias: "*"}},
|
Expr: []*Field{{Expr: &All{}, Alias: "*"}},
|
||||||
What: []Expr{&Thing{TB: "person", ID: float64(123456)}},
|
What: []Expr{&Thing{TB: "person", ID: int64(123456)}},
|
||||||
}}},
|
}}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
sql: `SELECT * FROM @person:⟨123456⟩`,
|
sql: `SELECT * FROM @person:⟨123456⟩`,
|
||||||
res: &Query{Statements: []Statement{&SelectStatement{
|
res: &Query{Statements: []Statement{&SelectStatement{
|
||||||
Expr: []*Field{{Expr: &All{}, Alias: "*"}},
|
Expr: []*Field{{Expr: &All{}, Alias: "*"}},
|
||||||
What: []Expr{&Thing{TB: "person", ID: float64(123456)}},
|
What: []Expr{&Thing{TB: "person", ID: int64(123456)}},
|
||||||
}}},
|
}}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
sql: `SELECT * FROM @person:{123456}`,
|
sql: `SELECT * FROM @person:{123456}`,
|
||||||
res: &Query{Statements: []Statement{&SelectStatement{
|
res: &Query{Statements: []Statement{&SelectStatement{
|
||||||
Expr: []*Field{{Expr: &All{}, Alias: "*"}},
|
Expr: []*Field{{Expr: &All{}, Alias: "*"}},
|
||||||
What: []Expr{&Thing{TB: "person", ID: float64(123456)}},
|
What: []Expr{&Thing{TB: "person", ID: int64(123456)}},
|
||||||
}}},
|
}}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -628,7 +628,7 @@ func Test_Parse_Queries_Select(t *testing.T) {
|
||||||
res: &Query{Statements: []Statement{&SelectStatement{
|
res: &Query{Statements: []Statement{&SelectStatement{
|
||||||
Expr: []*Field{{Expr: &All{}, Alias: "*"}},
|
Expr: []*Field{{Expr: &All{}, Alias: "*"}},
|
||||||
What: []Expr{&Table{"person"}},
|
What: []Expr{&Table{"person"}},
|
||||||
Cond: []Expr{&BinaryExpression{LHS: &Ident{"id"}, Op: EQ, RHS: float64(1)}},
|
Cond: []Expr{&BinaryExpression{LHS: &Ident{"id"}, Op: EQ, RHS: int64(1)}},
|
||||||
}}},
|
}}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -739,8 +739,8 @@ func Test_Parse_Queries_Select(t *testing.T) {
|
||||||
Cond: []Expr{
|
Cond: []Expr{
|
||||||
&BinaryExpression{LHS: &Ident{"id"}, Op: NEQ, RHS: &Null{}},
|
&BinaryExpression{LHS: &Ident{"id"}, Op: NEQ, RHS: &Null{}},
|
||||||
&BinaryExpression{LHS: &Ident{"id"}, Op: GT, RHS: float64(13.9)},
|
&BinaryExpression{LHS: &Ident{"id"}, Op: GT, RHS: float64(13.9)},
|
||||||
&BinaryExpression{LHS: &Ident{"id"}, Op: LT, RHS: float64(31)},
|
&BinaryExpression{LHS: &Ident{"id"}, Op: LT, RHS: int64(31)},
|
||||||
&BinaryExpression{LHS: &Ident{"id"}, Op: GTE, RHS: float64(15)},
|
&BinaryExpression{LHS: &Ident{"id"}, Op: GTE, RHS: int64(15)},
|
||||||
&BinaryExpression{LHS: &Ident{"id"}, Op: LTE, RHS: float64(29.9)},
|
&BinaryExpression{LHS: &Ident{"id"}, Op: LTE, RHS: float64(29.9)},
|
||||||
},
|
},
|
||||||
}}},
|
}}},
|
||||||
|
@ -1519,7 +1519,7 @@ func Test_Parse_Queries_Define(t *testing.T) {
|
||||||
Name: "temp",
|
Name: "temp",
|
||||||
What: []string{"person"},
|
What: []string{"person"},
|
||||||
Type: "any",
|
Type: "any",
|
||||||
Default: float64(100),
|
Default: int64(100),
|
||||||
}}},
|
}}},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -121,7 +121,7 @@ func (p *parser) declare(tok Token, lit string) (interface{}, error) {
|
||||||
return regexp.Compile(lit)
|
return regexp.Compile(lit)
|
||||||
|
|
||||||
case NUMBER:
|
case NUMBER:
|
||||||
return strconv.ParseFloat(lit, 64)
|
return strconv.ParseInt(lit, 10, 64)
|
||||||
|
|
||||||
case DOUBLE:
|
case DOUBLE:
|
||||||
return strconv.ParseFloat(lit, 64)
|
return strconv.ParseFloat(lit, 64)
|
||||||
|
|
Loading…
Reference in a new issue