Skip to content

Commit c162fb4

Browse files
committed
Merge pull request #45 from lahma/boolean_scalar_fix
Use Convert.ToBoolean to parse returned scalar from database when expect...
2 parents d13bd40 + da9fc62 commit c162fb4

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

db/SQLServer/TestRoundhousE/custom_db_create.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@ USE master
22
IF NOT EXISTS(SELECT * FROM sys.databases WHERE [name] = '{{DatabaseName}}')
33
BEGIN
44
CREATE DATABASE {{DatabaseName}}
5+
-- signal success
6+
SELECT 1
57
END

product/roundhouse/databases/DefaultDatabase.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,22 +103,19 @@ public virtual bool create_database_if_it_doesnt_exist(string custom_create_data
103103
{
104104
foreach (var sql_statement in StatementSplitter.split_sql_on_regex_and_remove_empty_statements(create_script, sql_statement_separator_regex_pattern))
105105
{
106-
var return_value = run_sql_scalar(sql_statement, ConnectionType.Admin);
107106
//should only receive a return value once
107+
var return_value = run_sql_scalar_boolean(sql_statement, ConnectionType.Admin);
108108
if (return_value != null)
109109
{
110-
database_was_created = (bool)return_value;
110+
database_was_created = return_value.Value;
111111
}
112112
}
113113
}
114114
else
115115
{
116-
var return_value = run_sql_scalar(create_script, ConnectionType.Admin);
117116
//should only receive a return value once
118-
if (return_value != null)
119-
{
120-
database_was_created = (bool)return_value;
121-
}
117+
var return_value = run_sql_scalar_boolean(create_script, ConnectionType.Admin);
118+
database_was_created = return_value.GetValueOrDefault(false);
122119
}
123120
}
124121
catch (Exception ex)
@@ -131,6 +128,16 @@ public virtual bool create_database_if_it_doesnt_exist(string custom_create_data
131128
return database_was_created;
132129
}
133130

131+
private bool? run_sql_scalar_boolean(string sql_to_run, ConnectionType connection_type)
132+
{
133+
var return_value = run_sql_scalar(sql_to_run, connection_type);
134+
if (return_value != null && return_value != DBNull.Value)
135+
{
136+
return Convert.ToBoolean(return_value);
137+
}
138+
return null;
139+
}
140+
134141
public void set_recovery_mode(bool simple)
135142
{
136143
try

0 commit comments

Comments
 (0)