in modules/platforms/cpp/odbc/src/dsn_config.cpp [105:218]
void ReadDsnConfiguration(const char* dsn, Configuration& config, diagnostic::DiagnosticRecordStorage* diag)
{
SettableValue<std::string> address = ReadDsnString(dsn, ConnectionStringParser::Key::address);
if (address.IsSet() && !config.IsAddressesSet())
{
std::vector<EndPoint> endPoints;
ParseAddress(address.GetValue(), endPoints, diag);
config.SetAddresses(endPoints);
}
SettableValue<std::string> server = ReadDsnString(dsn, ConnectionStringParser::Key::server);
if (server.IsSet() && !config.IsHostSet())
config.SetHost(server.GetValue());
SettableValue<int32_t> port = ReadDsnInt(dsn, ConnectionStringParser::Key::port);
if (port.IsSet() && !config.IsTcpPortSet())
config.SetTcpPort(static_cast<uint16_t>(port.GetValue()));
SettableValue<std::string> schema = ReadDsnString(dsn, ConnectionStringParser::Key::schema);
if (schema.IsSet() && !config.IsSchemaSet())
config.SetSchema(schema.GetValue());
SettableValue<bool> distributedJoins = ReadDsnBool(dsn, ConnectionStringParser::Key::distributedJoins);
if (distributedJoins.IsSet() && !config.IsDistributedJoinsSet())
config.SetDistributedJoins(distributedJoins.GetValue());
SettableValue<bool> enforceJoinOrder = ReadDsnBool(dsn, ConnectionStringParser::Key::enforceJoinOrder);
if (enforceJoinOrder.IsSet() && !config.IsEnforceJoinOrderSet())
config.SetEnforceJoinOrder(enforceJoinOrder.GetValue());
SettableValue<bool> replicatedOnly = ReadDsnBool(dsn, ConnectionStringParser::Key::replicatedOnly);
if (replicatedOnly.IsSet() && !config.IsReplicatedOnlySet())
config.SetReplicatedOnly(replicatedOnly.GetValue());
SettableValue<bool> collocated = ReadDsnBool(dsn, ConnectionStringParser::Key::collocated);
if (collocated.IsSet() && !config.IsCollocatedSet())
config.SetCollocated(collocated.GetValue());
SettableValue<bool> lazy = ReadDsnBool(dsn, ConnectionStringParser::Key::lazy);
if (lazy.IsSet() && !config.IsLazySet())
config.SetLazy(lazy.GetValue());
SettableValue<bool> skipReducerOnUpdate = ReadDsnBool(dsn, ConnectionStringParser::Key::skipReducerOnUpdate);
if (skipReducerOnUpdate.IsSet() && !config.IsSkipReducerOnUpdateSet())
config.SetSkipReducerOnUpdate(skipReducerOnUpdate.GetValue());
SettableValue<std::string> versionStr = ReadDsnString(dsn, ConnectionStringParser::Key::protocolVersion);
if (versionStr.IsSet() && !config.IsProtocolVersionSet())
{
ProtocolVersion version = ProtocolVersion::FromString(versionStr.GetValue());
if (!version.IsSupported())
version = Configuration::DefaultValue::protocolVersion;
config.SetProtocolVersion(version);
}
SettableValue<int32_t> pageSize = ReadDsnInt(dsn, ConnectionStringParser::Key::pageSize);
if (pageSize.IsSet() && !config.IsPageSizeSet() && pageSize.GetValue() > 0)
config.SetPageSize(pageSize.GetValue());
SettableValue<std::string> sslModeStr = ReadDsnString(dsn, ConnectionStringParser::Key::sslMode);
if (sslModeStr.IsSet() && !config.IsSslModeSet())
{
ssl::SslMode::Type sslMode = ssl::SslMode::FromString(sslModeStr.GetValue(), ssl::SslMode::DISABLE);
config.SetSslMode(sslMode);
}
SettableValue<std::string> sslKeyFile = ReadDsnString(dsn, ConnectionStringParser::Key::sslKeyFile);
if (sslKeyFile.IsSet() && !config.IsSslKeyFileSet())
config.SetSslKeyFile(sslKeyFile.GetValue());
SettableValue<std::string> sslCertFile = ReadDsnString(dsn, ConnectionStringParser::Key::sslCertFile);
if (sslCertFile.IsSet() && !config.IsSslCertFileSet())
config.SetSslCertFile(sslCertFile.GetValue());
SettableValue<std::string> sslCaFile = ReadDsnString(dsn, ConnectionStringParser::Key::sslCaFile);
if (sslCaFile.IsSet() && !config.IsSslCaFileSet())
config.SetSslCaFile(sslCaFile.GetValue());
SettableValue<std::string> user = ReadDsnString(dsn, ConnectionStringParser::Key::user);
if (user.IsSet() && !config.IsUserSet())
config.SetUser(user.GetValue());
SettableValue<std::string> password = ReadDsnString(dsn, ConnectionStringParser::Key::password);
if (password.IsSet() && !config.IsPasswordSet())
config.SetPassword(password.GetValue());
SettableValue<std::string> engineModeStr = ReadDsnString(dsn, ConnectionStringParser::Key::engineMode);
if (engineModeStr.IsSet() && !config.IsEngineModeSet())
config.SetEngineMode(EngineMode::FromString(engineModeStr.GetValue(), config.GetEngineMode()));
}