examples.lua
local log = require("remotelog")
local function get_config()
local function get_system_env(varname, default)
local value = os.getenv(varname) or default
if value == nil then
error("Environment variable '" .. varname
.. "' is required but is not defined")
end
return value
end
return {
host = get_system_env("EXASOL_HOST"),
port = get_system_env("EXASOL_PORT", 8563),
user = get_system_env("EXASOL_USER", "sys"),
password = get_system_env("EXASOL_PASSWORD", "exasol")
}
end
log.set_level("INFO")
local config = get_config()
local source_name = config.host .. ":" .. config.port
local driver = require("luasql.exasol")
local environment = driver.exasol()
local properties = {
tls_verify = "none",
tls_protocol = "tlsv1_2",
tls_options = "no_tlsv1"
}
local connection, err = environment:connect(source_name, config.user,
config.password, properties)
if err == nil then
log.info(
"Successfully connected to Exasol database at %s with user %s",
source_name, config.user)
else
error("Connection failed: " .. err)
end
local cursor
cursor, err = connection:execute("SELECT ROUND(RANDOM(1, 6)) AS DICE_ROLL")
if err == nil then
log.info("Successfully executed query")
else
error("Query failed: " .. err)
end
local first_row = cursor:fetch()
log.info("Dice roll result: %d", first_row[1])
if cursor:close() then
log.info("Cursor closed successfully")
else
error("Failed to close cursor")
end
log.info("Reading EXA_METADATA")
cursor = assert(connection:execute([[
SELECT PARAM_NAME, PARAM_VALUE
FROM EXA_METADATA
WHERE PARAM_NAME LIKE 'max%'
ORDER BY PARAM_NAME ASC
LIMIT 5]]))
local row = {}
row = cursor:fetch(row, "a")
local index = 1
while row ~= nil do
log.info(" - row %d: %s = '%s'", index, row['PARAM_NAME'],
row['PARAM_VALUE'])
row = cursor:fetch(row, "a")
index = index + 1
end
if connection:close() then
log.info("Connection closed successfully")
else
error("Failed to close connection")
end
if environment:close() then
log.info("Environment closed successfully")
else
error("Failed to close environment")
end