mirror of
https://github.com/luapower/mysql.git
synced 2025-02-08 16:20:31 +01:00
unimportant
This commit is contained in:
parent
c2cae4c1e9
commit
5d6d31aac3
@ -452,6 +452,14 @@ local string_types = {
|
|||||||
newdecimal=1,
|
newdecimal=1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local int_ranges = {
|
||||||
|
tinyint = {-(2^ 7-1), 2^ 7, 0, 2^ 8-1},
|
||||||
|
shortint = {-(2^15-1), 2^15, 0, 2^16-1},
|
||||||
|
mediumint = {-(2^23-1), 2^23, 0, 2^24-1},
|
||||||
|
int = {-(2^31-1), 2^31, 0, 2^32-1},
|
||||||
|
bigint = {-(2^51-1), 2^51, 0, 2^52-1},
|
||||||
|
}
|
||||||
|
|
||||||
local conn = {}
|
local conn = {}
|
||||||
local conn_mt = {__index = conn}
|
local conn_mt = {__index = conn}
|
||||||
|
|
||||||
@ -854,6 +862,25 @@ end
|
|||||||
|
|
||||||
local UNSIGNED_FLAG = 32
|
local UNSIGNED_FLAG = 32
|
||||||
|
|
||||||
|
function mysql.num_range(type, unsigned, digits, decimals)
|
||||||
|
if type == 'decimal' then
|
||||||
|
if digits and decimals then
|
||||||
|
local max = 10^(digits - decimals) - 1 / 10^decimals
|
||||||
|
local min = unsigned and 0 or -max --unsigned decimals is deprecated!
|
||||||
|
return min, max
|
||||||
|
end
|
||||||
|
else
|
||||||
|
local range = int_ranges[type]
|
||||||
|
if range then
|
||||||
|
if unsigned then
|
||||||
|
return range[3], range[4]
|
||||||
|
else
|
||||||
|
return range[1], range[2]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--NOTE: MySQL doesn't give enough metadata to generate a form in a UI,
|
--NOTE: MySQL doesn't give enough metadata to generate a form in a UI,
|
||||||
--you'll have to query `information_schema` to get the rest like enum values
|
--you'll have to query `information_schema` to get the rest like enum values
|
||||||
--and defaults. So we only keep enough info for formatting the values.
|
--and defaults. So we only keep enough info for formatting the values.
|
||||||
@ -887,6 +914,7 @@ local function get_field_packet(buf)
|
|||||||
col.buffer_type = buf_type
|
col.buffer_type = buf_type
|
||||||
col.buffer_type_code = buf_type_code
|
col.buffer_type_code = buf_type_code
|
||||||
col.unsigned = band(flags, UNSIGNED_FLAG) ~= 0 or nil
|
col.unsigned = band(flags, UNSIGNED_FLAG) ~= 0 or nil
|
||||||
|
col.min, col.max = mysql.num_range(col.type, col.unsigned, nil, col.decimals)
|
||||||
return col
|
return col
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1344,9 +1372,9 @@ if not ... then --demo
|
|||||||
collation = 'server',
|
collation = 'server',
|
||||||
})
|
})
|
||||||
print(conn.charset, conn.collation)
|
print(conn.charset, conn.collation)
|
||||||
pp(conn:query'select * from val where val = 1')
|
--pp(conn:query'select * from val where val = 1')
|
||||||
local stmt = conn:prepare('select * from val where val = ?')
|
local stmt = conn:prepare('select min_price from vari where val = ?')
|
||||||
assert(stmt:exec(1))
|
assert(stmt:exec())
|
||||||
pp(conn:read_result({datetime_format = '*t'}))
|
pp(conn:read_result({datetime_format = '*t'}))
|
||||||
assert(stmt:free())
|
assert(stmt:free())
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user