diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-11-17 16:49:03 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-01-20 15:45:45 +0200 |
commit | 04201d013c2a43d27987122e0118236d74154d77 (patch) | |
tree | f806841bec2378ca955a7bea2ca45a978ed39edb | |
parent | 16a4099d36ca1cdc33cf6e2b99edce796595341f (diff) |
Add initial support for SQL Server test infrastructure
-rw-r--r-- | build/bootstrap.make | 2 | ||||
-rwxr-xr-x | build/configure | 3 | ||||
-rw-r--r-- | build/import/libodb-mssql/LICENSE | 12 | ||||
-rw-r--r-- | build/import/libodb-mssql/configuration-rules.make | 15 | ||||
-rwxr-xr-x | build/import/libodb-mssql/configure | 55 | ||||
-rw-r--r-- | build/import/libodb-mssql/stub.make | 30 | ||||
-rwxr-xr-x | build/mssql/configure | 12 | ||||
-rw-r--r-- | libcommon/common/common.cxx | 13 | ||||
-rw-r--r-- | libcommon/common/concrete.hxx | 7 | ||||
-rw-r--r-- | libcommon/common/makefile | 3 |
10 files changed, 150 insertions, 2 deletions
diff --git a/build/bootstrap.make b/build/bootstrap.make index f59e809..d3da6dd 100644 --- a/build/bootstrap.make +++ b/build/bootstrap.make @@ -62,7 +62,7 @@ ifeq ($(dist_prefix),) $(error dist_prefix is not set) endif -databases := mysql sqlite pgsql oracle +databases := mysql sqlite pgsql oracle mssql $(dist): databases := $(databases) # $1 project template without the -vcN.vc[x]proj suffix. diff --git a/build/configure b/build/configure index 9aee64a..c4fb620 100755 --- a/build/configure +++ b/build/configure @@ -26,9 +26,10 @@ $echo "(1) MySQL" $echo "(2) SQLite" $echo "(3) PostgreSQL" $echo "(4) Oracle" +$echo "(5) Microsoft SQL Server" $echo -db_id=`read_option "mysql sqlite pgsql oracle"` +db_id=`read_option "mysql sqlite pgsql oracle mssql"` echo "db_id := $db_id" >$1 diff --git a/build/import/libodb-mssql/LICENSE b/build/import/libodb-mssql/LICENSE new file mode 100644 index 0000000..ed9c55c --- /dev/null +++ b/build/import/libodb-mssql/LICENSE @@ -0,0 +1,12 @@ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2 as +published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/build/import/libodb-mssql/configuration-rules.make b/build/import/libodb-mssql/configuration-rules.make new file mode 100644 index 0000000..6c74f64 --- /dev/null +++ b/build/import/libodb-mssql/configuration-rules.make @@ -0,0 +1,15 @@ +# file : build/import/libodb-mssql/configuration-rules.make +# author : Constantin Michael <constantin@codesynthesis.com> +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : ODB NCUEL; see accompanying LICENSE file + +$(dcf_root)/import/libodb-mssql/configuration-dynamic.make: | $(dcf_root)/import/libodb-mssql/. + $(call message,,$(scf_root)/import/libodb-mssql/configure $@) + +ifndef %foreign% + +$(dcf_root)/.disfigure:: + $(call message,rm $(dcf_root)/import/libodb-mssql/configuration-dynamic.make,\ +rm -f $(dcf_root)/import/libodb-mssql/configuration-dynamic.make) + +endif diff --git a/build/import/libodb-mssql/configure b/build/import/libodb-mssql/configure new file mode 100755 index 0000000..dabc42a --- /dev/null +++ b/build/import/libodb-mssql/configure @@ -0,0 +1,55 @@ +#! /usr/bin/env bash + +# file : build/import/libodb-mssql/configure +# author : Constantin Michael <constantin@codesynthesis.com> +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : ODB NCUEL; see accompanying LICENSE file + + +# $1 - out file +# +# bld_root - build root +# project_name - project name +# + +source $bld_root/dialog.bash + + +$echo +$echo "Configuring external dependency on 'libodb-mssql' for '$project_name'." +$echo + +$echo +$echo "Would you like to configure dependency on the installed version" +$echo "of 'libodb-mssql' as opposed to the development build?" +$echo + +installed=`read_y_n y` + +path= + +if [ "$installed" = "n" ]; then + +$echo +$echo "Please enter the src_root for 'libodb-mssql'." +$echo + +src_root=`read_path --directory --exist` + +$echo +$echo "Please enter the out_root for 'libodb-mssql'." +$echo + +out_root=`read_path --directory $src_root` + +fi + +echo libodb_mssql_installed := $installed >$1 + +if [ "$installed" = "n" ]; then + +echo src_root := $src_root >>$1 +echo scf_root := \$\(src_root\)/build >>$1 +echo out_root := $out_root >>$1 + +fi diff --git a/build/import/libodb-mssql/stub.make b/build/import/libodb-mssql/stub.make new file mode 100644 index 0000000..c970543 --- /dev/null +++ b/build/import/libodb-mssql/stub.make @@ -0,0 +1,30 @@ +# file : build/import/libodb-mssql/stub.make +# author : Constantin Michael <constantin@codesynthesis.com> +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : ODB NCUEL; see accompanying LICENSE file + +$(call include-once,$(scf_root)/import/libodb-mssql/configuration-rules.make,$(dcf_root)) + +libodb_mssql_installed := + +$(call -include,$(dcf_root)/import/libodb-mssql/configuration-dynamic.make) + +ifdef libodb_mssql_installed + +ifeq ($(libodb_mssql_installed),y) + +$(call export,l: -lodb-mssql -lodb,cpp-options: ) + +else + +# Include export stub. +# +$(call include,$(scf_root)/export/libodb-mssql/stub.make) + +endif + +else + +.NOTPARALLEL: + +endif diff --git a/build/mssql/configure b/build/mssql/configure new file mode 100755 index 0000000..c7d1b1b --- /dev/null +++ b/build/mssql/configure @@ -0,0 +1,12 @@ +#! /usr/bin/env bash + +# file : build/mssql/configure +# author : Boris Kolpackov <boris@codesynthesis.com> +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : GNU GPL v2; see accompanying LICENSE file + +# +# dcf_root - dynamic configuration root +# + +#@@ TODO diff --git a/libcommon/common/common.cxx b/libcommon/common/common.cxx index 285ef68..28fd24a 100644 --- a/libcommon/common/common.cxx +++ b/libcommon/common/common.cxx @@ -25,6 +25,9 @@ #elif defined(DATABASE_ORACLE) # include <odb/oracle/database.hxx> # include <odb/oracle/connection-factory.hxx> +#elif defined(DATABASE_MSSQL) +# include <odb/mssql/database.hxx> +# include <odb/mssql/connection-factory.hxx> #else # error unknown database #endif @@ -42,6 +45,8 @@ namespace sqlite = odb::sqlite; namespace pgsql = odb::pgsql; #elif defined(DATABASE_ORACLE) namespace oracle = odb::oracle; +#elif defined(DATABASE_MSSQL) +namespace mssql = odb::mssql; #endif auto_ptr<database> @@ -124,6 +129,14 @@ create_database (int& argc, // to UTF-8. // db.reset (new oracle::database (argc, argv, false, 873, 873, 0, f)); + +#elif defined(DATABASE_MSSQL) + auto_ptr<mssql::connection_factory> f; + + if (max_connections != 0) + f.reset (new mssql::connection_pool_factory (max_connections)); + + db.reset (new mssql::database (argc, argv, false, 0, f)); #endif return db; diff --git a/libcommon/common/concrete.hxx b/libcommon/common/concrete.hxx index d3c8cc4..b7fde1f 100644 --- a/libcommon/common/concrete.hxx +++ b/libcommon/common/concrete.hxx @@ -38,6 +38,13 @@ namespace odb_db = odb::pgsql; namespace odb_db = odb::oracle; +#elif defined(DATABASE_MSSQL) + +#include <odb/mssql/database.hxx> +#include <odb/mssql/transaction.hxx> + +namespace odb_db = odb::mssql; + #endif #endif // LIBCOMMON_COMMON_CONCRETE_HXX diff --git a/libcommon/common/makefile b/libcommon/common/makefile index 6bc7a88..accf285 100644 --- a/libcommon/common/makefile +++ b/libcommon/common/makefile @@ -61,6 +61,9 @@ endif ifeq ($(db_id),oracle) @echo '#define DATABASE_ORACLE 1' >>$@ endif +ifeq ($(db_id),mssql) + @echo '#define DATABASE_MSSQL 1' >>$@ +endif @echo '#define HAVE_TR1_MEMORY 1' >>$@ @echo '' >>$@ @echo '#endif /* LIBCOMMON_COMMON_CONFIG_H */' >>$@ |