Mysql: Uint32 рдФрд░ uint64 рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдирд╡ре░ 2017  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: go-sql-driver/mysql

рдореБрджреНрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг

рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдпрдорд┐рдд MySQL INT рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдорддреМрд░ рдкрд░ INT UNSIGNED рд╕рд╛рде рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ 32b рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд int рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореВрд▓ db.sql рдкреИрдХреЗрдЬ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХрд┐рдпрд╛ reddit рдФрд░ рд╣рд░ рдХреЛрдИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ MySQL рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ (рдмрд╛рдЗрдЯ рд╕рд╛рдЗрдЬ рд╣реИрдВ) рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ db.sql рдкреИрдХреЗрдЬ рдореЗрдВ рдзрдХреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдВрд░рдЪрдирд╛рдПрдВ MySQL рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рдХреЛрдИ рдУрд╡рд░рдлреНрд▓реЛ рди рд╣реЛ, рдЬреЛ рдХрд┐ INT UNSIGNED рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП NullInt64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛрдЧрд╛ред BIGINT UNSIGNED рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ - рдЬрд┐рд╕рдХрд╛ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп NullInt64 рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдб

type MyTable struct {
    ID uint
}

type MyOtherTable struct {
    ID uint
    MyTableID mysql.NullUint32 // Nullable relationship with MyTable
}

рдореИрдВ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдареАрдХ рд╣реЛрдВрдЧреЗред
рдзрдиреНрдпрд╡рд╛рджред

databassql issue enhancement question

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@arnehormann рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЧреЛ рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдкреИрдХреЗрдЬ rsc рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рд╕рдорд░реНрдерди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧреЛрд▓рдВрдЧ mysql рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрди рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред

рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/golang/go/issues/9373

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рдо https://golang.org/pkg/database/sql/driver/#Value рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВ - рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдЗрди рдмрд╛рдзрд╛рдУрдВ рдХреЗ рднреАрддрд░ рдбреЗрдЯрд╛рдмреЗрд╕ / рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред NullTime рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдореЗрдВ рдЧрд╛рдпрдм рдерд╛, рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗред

@arnehormann рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЧреЛ рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдкреИрдХреЗрдЬ rsc рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рд╕рдорд░реНрдерди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧреЛрд▓рдВрдЧ mysql рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрди рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред

рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://github.com/golang/go/issues/9373

рд╣рд╛рдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓рд┐рдЦрд╛:
`` `рдРрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП sqlite) рд╣реИрдВ рдЬреЛ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕реАрд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рд╣рдо рдЕрдм рдЙрд╕ рдирд┐рд░реНрдгрдп рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рднреА рдореМрдЬреВрджрд╛ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред

рдпрджрд┐ MySQL рдРрд╕реЗ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ MySQL рдбреНрд░рд╛рдЗрд╡рд░ рдЗрд╕реЗ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ
рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
uint64s рдПрдХ рдХрд╕реНрдЯрдо рдорд╛рди рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВред

рдпрд╣реА рд╣реИ, рдПрдХ MySQL рдбреНрд░рд╛рдЗрд╡рд░ рдЬреЛ рдмрдбрд╝реЗ uint64s рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд╡рд╣ рдЖрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ / sql рдореЗрдВ рдХреЛрдИ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
`` `

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдпрд╣ uint64 рдХреЗ рдмрдЬрд╛рдп uint32 рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ uint64 рдХреЗ рдЬрд▓реНрдж рд╣реА рдХрднреА рднреА рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИред
рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ? рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВред

рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА uint64 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА uint64 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди NullUint64 рдирд╣реАрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ BIGINT UNSIGNED nullable рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп NullInt64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдиреЗ uint64 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ rsc рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ rsc рдиреЗ рд╕реБрдЭрд╛рдпрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк uint64 рдХреЗ рдмрдЬрд╛рдп NullUint64 рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ rsc рдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд╣реЗрдВред рдпрд╣ рд╕рд┐рд░реНрдл рднреНрд░рд╛рдордХ рд╣реИред

рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА uint64 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди NullUint64 рдирд╣реАрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ BIGINT UNSIGNED nullable рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп NullInt64 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдпрд╛ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ

https://github.com/Thor-x86/nullable

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

xuewindy picture xuewindy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

julienschmidt picture julienschmidt  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pmoosman picture pmoosman  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tanepiper picture tanepiper  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dwlnetnl picture dwlnetnl  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ