From 10252532eb7836a60e885505f88bca5fa31a306f Mon Sep 17 00:00:00 2001 From: Victor Kotlyar <Victor.Kotlyar@cern.ch> Date: Mon, 24 Jun 2019 17:02:13 +0200 Subject: [PATCH] Use bindString in db connection getColumns for WHERE statements --- rdbms/wrapper/MysqlConn.cpp | 5 +++-- rdbms/wrapper/OcciConn.cpp | 5 +++-- rdbms/wrapper/PostgresConn.cpp | 5 +++-- rdbms/wrapper/SqliteConn.cpp | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/rdbms/wrapper/MysqlConn.cpp b/rdbms/wrapper/MysqlConn.cpp index 798b1cd0b5..188ecc28b5 100644 --- a/rdbms/wrapper/MysqlConn.cpp +++ b/rdbms/wrapper/MysqlConn.cpp @@ -208,16 +208,17 @@ void MysqlConn::rollback() { std::map<std::string, std::string> MysqlConn::getColumns(const std::string &tableName) { try { std::map<std::string, std::string> columnNamesAndTypes; - const std::string sql = + const char *const sql = "SELECT " "COLUMN_NAME, " "DATA_TYPE " "FROM " "INFORMATION_SCHEMA.COLUMNS " "WHERE " - "TABLE_NAME = '" + tableName +"'"; + "TABLE_NAME = :TABLE_NAME"; auto stmt = createStmt(sql); + stmt->bindString(":TABLE_NAME", tableName); auto rset = stmt->executeQuery(); while (rset->next()) { auto name = rset->columnOptionalString("COLUMN_NAME"); diff --git a/rdbms/wrapper/OcciConn.cpp b/rdbms/wrapper/OcciConn.cpp index d896d6ba08..f21a20a60d 100644 --- a/rdbms/wrapper/OcciConn.cpp +++ b/rdbms/wrapper/OcciConn.cpp @@ -167,16 +167,17 @@ void OcciConn::rollback() { std::map<std::string, std::string> OcciConn::getColumns(const std::string &tableName) { try { std::map<std::string, std::string> columnNamesAndTypes; - const std::string sql = + const char *const sql = "SELECT " "COLUMN_NAME, " "DATA_TYPE " "FROM " "USER_TAB_COLUMNS " "WHERE " - "TABLE_NAME = '" + tableName +"'"; + "TABLE_NAME = :TABLE_NAME"; auto stmt = createStmt(sql); + stmt->bindString(":TABLE_NAME", tableName); auto rset = stmt->executeQuery(); while (rset->next()) { auto name = rset->columnOptionalString("COLUMN_NAME"); diff --git a/rdbms/wrapper/PostgresConn.cpp b/rdbms/wrapper/PostgresConn.cpp index 7f49751179..e27ee6792f 100644 --- a/rdbms/wrapper/PostgresConn.cpp +++ b/rdbms/wrapper/PostgresConn.cpp @@ -205,16 +205,17 @@ std::map<std::string, std::string> PostgresConn::getColumns(const std::string &t std::map<std::string, std::string> columnNamesAndTypes; auto lowercaseTableName = tableName; utils::toLower(lowercaseTableName); // postgres work with lowercase - const std::string sql = + const char *const sql = "SELECT " "COLUMN_NAME, " "DATA_TYPE " "FROM " "INFORMATION_SCHEMA.COLUMNS " "WHERE " - "TABLE_NAME = '" + lowercaseTableName +"'"; + "TABLE_NAME = :TABLE_NAME"; auto stmt = createStmt(sql); + stmt->bindString(":TABLE_NAME", lowercaseTableName); auto rset = stmt->executeQuery(); while (rset->next()) { auto name = rset->columnOptionalString("COLUMN_NAME"); diff --git a/rdbms/wrapper/SqliteConn.cpp b/rdbms/wrapper/SqliteConn.cpp index 32e8cf3ae4..4a0a2eb63c 100644 --- a/rdbms/wrapper/SqliteConn.cpp +++ b/rdbms/wrapper/SqliteConn.cpp @@ -234,13 +234,13 @@ void SqliteConn::printSchema(std::ostream &os) { std::map<std::string, std::string> SqliteConn::getColumns(const std::string &tableName) { try { std::map<std::string, std::string> columnNamesAndTypes; - const std::string sql = + const char *const sql = "SELECT " "SQL AS SQL " "FROM " "SQLITE_MASTER " "WHERE " - "TBL_NAME = '" + tableName +"' " + "TBL_NAME = :TABLE_NAME " "AND " "TYPE = 'table';"; const std::string columnTypes = @@ -251,6 +251,7 @@ std::map<std::string, std::string> SqliteConn::getColumns(const std::string &tab "VARCHAR2"; auto stmt = createStmt(sql); + stmt->bindString(":TABLE_NAME", tableName); auto rset = stmt->executeQuery(); if (rset->next()) { auto tableSql = rset->columnOptionalString("SQL").value(); -- GitLab