mirror of
https://github.com/pocoproject/poco.git
synced 2025-04-15 06:35:25 +02:00
Merge branch 'develop' into pr/1113
Conflicts: Foundation/testsuite/TestSuite_vs120.vcxproj
This commit is contained in:
commit
3eb023132b
@ -25,6 +25,11 @@ before_install:
|
||||
services:
|
||||
- mongodb
|
||||
- redis-server
|
||||
- postgresql
|
||||
|
||||
addons:
|
||||
postgresql: "9.3"
|
||||
|
||||
|
||||
notifications:
|
||||
slack:
|
||||
@ -50,7 +55,7 @@ matrix:
|
||||
- export CC="clang"
|
||||
- export CXX="clang++"
|
||||
- clang++ -x c++ /dev/null -dM -E
|
||||
- ./configure --everything --omit=Data/ODBC,Data/MySQL,Data/SQLite && make -s -j2
|
||||
- ./configure --everything --omit=Data/ODBC,Data/MySQL,Data/SQLite,Data/PostgreSQL && make -s -j2
|
||||
- sudo make install
|
||||
- ./travis/OSX/runtests.sh
|
||||
|
||||
@ -145,7 +150,7 @@ matrix:
|
||||
# TODO osx build
|
||||
# TODO run test suite
|
||||
# script:
|
||||
# - ./configure && make -s -j2
|
||||
# - ./configure && make -s -i -j2
|
||||
# - sudo ifconfig -a
|
||||
# - sudo ifconfig venet0 multicast
|
||||
# - sudo ifconfig -a
|
||||
|
@ -70,6 +70,7 @@ option(ENABLE_CRYPTO "Enable Crypto" ON)
|
||||
option(ENABLE_DATA "Enable Data" ON)
|
||||
option(ENABLE_DATA_SQLITE "Enable Data SQlite" ON)
|
||||
option(ENABLE_DATA_MYSQL "Enable Data MySQL" ON)
|
||||
option(ENABLE_DATA_POSTGRESQL "Enable Data PosgreSQL" ON)
|
||||
option(ENABLE_DATA_ODBC "Enable Data ODBC" ON)
|
||||
option(ENABLE_SEVENZIP "Enable SevenZip" OFF)
|
||||
option(ENABLE_ZIP "Enable Zip" ON)
|
||||
|
@ -48,12 +48,13 @@ Christopher Baker
|
||||
Scott Davis
|
||||
Jeff Adams
|
||||
Martin Osborne
|
||||
Björn Schramke
|
||||
Björn Schramke
|
||||
Jonathan Seeley
|
||||
Tor Lillqvist
|
||||
Alexander Bychuk
|
||||
Francisco RamÃrez
|
||||
Francisco Ramirez
|
||||
Francis André
|
||||
Benoît Bleuzé
|
||||
Kostya Lutsenko
|
||||
--
|
||||
$Id$
|
||||
|
@ -130,6 +130,14 @@ public:
|
||||
/// Returns true if verification against the issuer certificate
|
||||
/// was successful, false otherwise.
|
||||
|
||||
bool equals(const X509Certificate& otherCertificate) const;
|
||||
/// Checks whether the certificate is equal to
|
||||
/// the other certificate, by comparing the hashes
|
||||
/// of both certificates.
|
||||
///
|
||||
/// Returns true if both certificates are identical,
|
||||
/// otherwise false.
|
||||
|
||||
const X509* certificate() const;
|
||||
/// Returns the underlying OpenSSL certificate.
|
||||
|
||||
|
@ -284,4 +284,12 @@ bool X509Certificate::issuedBy(const X509Certificate& issuerCertificate) const
|
||||
}
|
||||
|
||||
|
||||
bool X509Certificate::equals(const X509Certificate& otherCertificate) const
|
||||
{
|
||||
X509* pCert = const_cast<X509*>(_pCert);
|
||||
X509* pOtherCert = const_cast<X509*>(otherCertificate.certificate());
|
||||
return X509_cmp(pCert, pOtherCert) == 0;
|
||||
}
|
||||
|
||||
|
||||
} } // namespace Poco::Crypto
|
||||
|
@ -304,6 +304,11 @@ void CryptoTest::testCertificate()
|
||||
|
||||
// fails with recent OpenSSL versions:
|
||||
// assert (cert.issuedBy(cert));
|
||||
|
||||
std::istringstream otherCertStream(APPINF_PEM);
|
||||
X509Certificate otherCert(otherCertStream);
|
||||
|
||||
assert (cert.equals(otherCert));
|
||||
}
|
||||
|
||||
|
||||
|
@ -4,8 +4,8 @@
|
||||
|
||||
#include "winres.h"
|
||||
|
||||
#define POCO_VERSION 1,7,0,0
|
||||
#define POCO_VERSION_STR "1.7.0"
|
||||
#define POCO_VERSION 2,0,0,0
|
||||
#define POCO_VERSION_STR "2.0.0"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION POCO_VERSION
|
||||
@ -28,7 +28,7 @@ BEGIN
|
||||
VALUE "FileDescription", "This file is part of the POCO C++ Libraries."
|
||||
VALUE "FileVersion", POCO_VERSION_STR
|
||||
VALUE "InternalName", "POCO"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2004-2015, Applied Informatics Software Engineering GmbH and Contributors."
|
||||
VALUE "LegalCopyright", "Copyright (C) 2004-2016, Applied Informatics Software Engineering GmbH and Contributors."
|
||||
VALUE "ProductName", "POCO C++ Libraries - http://pocoproject.org"
|
||||
VALUE "ProductVersion", POCO_VERSION_STR
|
||||
END
|
||||
|
@ -55,6 +55,17 @@ if(ENABLE_DATA_MYSQL)
|
||||
endif(MYSQL_FOUND)
|
||||
endif(ENABLE_DATA_MYSQL)
|
||||
|
||||
if(ENABLE_DATA_POSTGRESQL)
|
||||
find_package(PostgreSQL)
|
||||
if(POSTGRESQL_FOUND)
|
||||
include_directories("${POSTGRESQL_INCLUDE_DIR}")
|
||||
message(STATUS "PostgreSQL Support Enabled")
|
||||
add_subdirectory( PostgreSQL )
|
||||
else()
|
||||
message(STATUS "PostgreSQL Support Disabled - no PostgreSQL library")
|
||||
endif(POSTGRESQL_FOUND)
|
||||
endif(ENABLE_DATA_POSTGRESQL)
|
||||
|
||||
if(ENABLE_DATA_ODBC)
|
||||
find_package(ODBC)
|
||||
if(WIN32 AND NOT WINCE)
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|Win32">
|
||||
@ -32,7 +32,7 @@
|
||||
<RootNamespace>Data</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
@ -63,27 +63,27 @@
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings" />
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoDatad</TargetName>
|
||||
@ -125,17 +125,18 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>..\bin\PocoDatad.dll</OutputFile>
|
||||
@ -163,9 +164,9 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
@ -186,18 +187,19 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\lib\PocoDatamtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\lib\PocoDatamtd.lib</OutputFile>
|
||||
@ -218,9 +220,9 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
@ -233,18 +235,19 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\lib\PocoDatamdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\lib\PocoDatamdd.lib</OutputFile>
|
||||
@ -265,10 +268,10 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\lib\PocoDatamd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
@ -365,6 +368,6 @@
|
||||
<ClCompile Include="src\Time.cpp"/>
|
||||
<ClCompile Include="src\Transaction.cpp"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|x64">
|
||||
@ -32,7 +32,7 @@
|
||||
<RootNamespace>Data</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
@ -63,27 +63,27 @@
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings" />
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">PocoData64d</TargetName>
|
||||
@ -125,18 +125,19 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>..\bin64\PocoData64d.dll</OutputFile>
|
||||
@ -164,11 +165,12 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>..\bin64\PocoData64.dll</OutputFile>
|
||||
@ -188,19 +190,20 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\lib64\PocoDatamtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\lib64\PocoDatamtd.lib</OutputFile>
|
||||
@ -221,11 +224,12 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\lib64\PocoDatamt.lib</OutputFile>
|
||||
@ -237,19 +241,20 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\Foundation\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\lib64\PocoDatamdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\lib64\PocoDatamdd.lib</OutputFile>
|
||||
@ -270,11 +275,12 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\lib64\PocoDatamd.lib</OutputFile>
|
||||
@ -370,6 +376,6 @@
|
||||
<ClCompile Include="src\Time.cpp"/>
|
||||
<ClCompile Include="src\Transaction.cpp"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
||||
|
@ -42,71 +42,71 @@ public:
|
||||
virtual ~Binder();
|
||||
/// Destroys the Binder.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Int8& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::Int8& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an Int8.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::UInt8& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::UInt8& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an UInt8.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Int16& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::Int16& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an Int16.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::UInt16& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::UInt16& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an UInt16.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Int32& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::Int32& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an Int32.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::UInt32& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::UInt32& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an UInt32.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Int64& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::Int64& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an Int64.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::UInt64& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::UInt64& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an UInt64.
|
||||
|
||||
#ifndef POCO_LONG_IS_64_BIT
|
||||
|
||||
virtual void bind(std::size_t pos, const long& val, Direction dir = PD_IN);
|
||||
virtual void bind(std::size_t pos, const long& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a long.
|
||||
|
||||
virtual void bind(std::size_t pos, const unsigned long& val, Direction dir = PD_IN);
|
||||
virtual void bind(std::size_t pos, const unsigned long& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an unsigned long.
|
||||
|
||||
#endif // POCO_LONG_IS_64_BIT
|
||||
|
||||
virtual void bind(std::size_t pos, const bool& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const bool& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a boolean.
|
||||
|
||||
virtual void bind(std::size_t pos, const float& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const float& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a float.
|
||||
|
||||
virtual void bind(std::size_t pos, const double& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const double& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a double.
|
||||
|
||||
virtual void bind(std::size_t pos, const char& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const char& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a single character.
|
||||
|
||||
virtual void bind(std::size_t pos, const std::string& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const std::string& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a string.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Data::BLOB& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::Data::BLOB& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a BLOB.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Data::CLOB& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Poco::Data::CLOB& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a CLOB.
|
||||
|
||||
virtual void bind(std::size_t pos, const DateTime& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const DateTime& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a DateTime.
|
||||
|
||||
virtual void bind(std::size_t pos, const Date& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Date& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a Date.
|
||||
|
||||
virtual void bind(std::size_t pos, const Time& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const Time& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a Time.
|
||||
|
||||
virtual void bind(std::size_t pos, const NullData& val, Direction dir);
|
||||
virtual void bind(std::size_t pos, const NullData& val, Direction dir, const std::type_info& bindType);
|
||||
/// Binds a null.
|
||||
|
||||
|
||||
@ -212,11 +212,11 @@ public:
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Time>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<NullData>& val, Direction dir = PD_IN);
|
||||
virtual void bind(std::size_t pos, const std::vector<NullData>& val, Direction dir, const std::type_info& bindType);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<NullData>& val, Direction dir = PD_IN);
|
||||
virtual void bind(std::size_t pos, const std::deque<NullData>& val, Direction dir, const std::type_info& bindType);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<NullData>& val, Direction dir = PD_IN);
|
||||
virtual void bind(std::size_t pos, const std::list<NullData>& val, Direction dir, const std::type_info& bindType);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<std::string>& val, Direction dir = PD_IN);
|
||||
|
||||
@ -237,7 +237,7 @@ private:
|
||||
Binder(const Binder&);
|
||||
/// Don't copy the binder
|
||||
|
||||
virtual void bind(std::size_t, const char* const&, Direction)
|
||||
virtual void bind(std::size_t, const char* const&, Direction, const WhenNullCb& )
|
||||
/// Binds a const char ptr.
|
||||
/// This is a private no-op in this implementation
|
||||
/// due to security risk.
|
||||
|
@ -54,7 +54,7 @@ protected:
|
||||
/// Returns the number of affected rows.
|
||||
/// Used to find out the number of rows affected by insert, delete or update.
|
||||
|
||||
virtual const MetaColumn& metaColumn(std::size_t pos) const;
|
||||
virtual const MetaColumn& metaColumn(std::size_t pos, std::size_t dataSet) const;
|
||||
/// Returns column meta data.
|
||||
|
||||
virtual bool hasNext();
|
||||
|
@ -37,56 +37,56 @@ Binder::~Binder()
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::Int8& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::Int8& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_TINY, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::UInt8& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::UInt8& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_TINY, &val, 0, true);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::Int16& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::Int16& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_SHORT, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::UInt16& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::UInt16& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_SHORT, &val, 0, true);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::Int32& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::Int32& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_LONG, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::UInt32& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::UInt32& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_LONG, &val, 0, true);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::Int64& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::Int64& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_LONGLONG, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::UInt64& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::UInt64& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_LONGLONG, &val, 0, true);
|
||||
@ -95,14 +95,14 @@ void Binder::bind(std::size_t pos, const Poco::UInt64& val, Direction dir)
|
||||
|
||||
#ifndef POCO_LONG_IS_64_BIT
|
||||
|
||||
void Binder::bind(std::size_t pos, const long& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const long& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_LONG, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const unsigned long& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const unsigned long& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_LONG, &val, 0, true);
|
||||
@ -111,56 +111,56 @@ void Binder::bind(std::size_t pos, const unsigned long& val, Direction dir)
|
||||
#endif // POCO_LONG_IS_64_BIT
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const bool& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const bool& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_TINY, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const float& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const float& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_FLOAT, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const double& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const double& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_DOUBLE, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const char& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const char& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_TINY, &val, 0);
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const std::string& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const std::string& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_STRING, val.c_str(), static_cast<int>(val.length()));
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::Data::BLOB& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::Data::BLOB& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_BLOB, val.rawContent(), static_cast<int>(val.size()));
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::Data::CLOB& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::Data::CLOB& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_BLOB, val.rawContent(), static_cast<int>(val.size()));
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const DateTime& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const DateTime& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
MYSQL_TIME mt = {0};
|
||||
@ -181,7 +181,7 @@ void Binder::bind(std::size_t pos, const DateTime& val, Direction dir)
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Date& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Date& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
MYSQL_TIME mt = {0};
|
||||
@ -198,7 +198,7 @@ void Binder::bind(std::size_t pos, const Date& val, Direction dir)
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Time& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Time& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
MYSQL_TIME mt = {0};
|
||||
@ -215,7 +215,7 @@ void Binder::bind(std::size_t pos, const Time& val, Direction dir)
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const NullData&, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const NullData&, Direction dir, const std::type_info& bindType)
|
||||
{
|
||||
poco_assert(dir == PD_IN);
|
||||
realBind(pos, MYSQL_TYPE_NULL, 0, 0);
|
||||
@ -601,19 +601,19 @@ void Binder::bind(std::size_t pos, const std::list<Poco::Data::Time>& val, Direc
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const std::vector<Poco::Data::NullData>& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const std::vector<Poco::Data::NullData>& val, Direction dir, const std::type_info& bindType)
|
||||
{
|
||||
throw NotImplementedException();
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const std::deque<Poco::Data::NullData>& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const std::deque<Poco::Data::NullData>& val, Direction dir, const std::type_info& bindType)
|
||||
{
|
||||
throw NotImplementedException();
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const std::list<Poco::Data::NullData>& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const std::list<Poco::Data::NullData>& val, Direction dir, const std::type_info& bindType)
|
||||
{
|
||||
throw NotImplementedException();
|
||||
}
|
||||
|
@ -48,8 +48,10 @@ int MySQLStatementImpl::affectedRowCount() const
|
||||
}
|
||||
|
||||
|
||||
const MetaColumn& MySQLStatementImpl::metaColumn(std::size_t pos) const
|
||||
const MetaColumn& MySQLStatementImpl::metaColumn(std::size_t pos, std::size_t dataSet) const
|
||||
{
|
||||
// mysql doesn't support multiple result sets
|
||||
poco_assert_dbg(dataSet == 0);
|
||||
return _metadata.metaColumn(pos);
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,8 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;ODBC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
@ -188,7 +189,8 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
@ -235,7 +237,8 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|x64">
|
||||
@ -32,7 +32,7 @@
|
||||
<RootNamespace>ODBC</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
@ -63,27 +63,27 @@
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings" />
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">PocoDataODBC64d</TargetName>
|
||||
@ -125,17 +125,18 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;ODBC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -164,10 +165,11 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -188,18 +190,19 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib64\PocoDataODBCmtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataODBCmtd.lib</OutputFile>
|
||||
@ -220,10 +223,11 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataODBCmt.lib</OutputFile>
|
||||
@ -235,18 +239,19 @@
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib64\PocoDataODBCmdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataODBCmdd.lib</OutputFile>
|
||||
@ -267,51 +272,52 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataODBCmd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Binder.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ConnectionHandle.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Connector.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Diagnostics.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\EnvironmentHandle.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Error.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Extractor.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Handle.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ODBC.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ODBCException.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ODBCMetaColumn.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ODBCStatementImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Parameter.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Preparator.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\SessionImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\TypeInfo.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Unicode.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Unicode_UNIXODBC.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Unicode_WIN32.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Utility.h"/>
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Binder.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ConnectionHandle.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Connector.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Diagnostics.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\EnvironmentHandle.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Error.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Extractor.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Handle.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ODBC.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ODBCException.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ODBCMetaColumn.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\ODBCStatementImpl.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Parameter.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Preparator.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\SessionImpl.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\TypeInfo.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Unicode.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Unicode_UNIXODBC.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Unicode_WIN32.h" />
|
||||
<ClInclude Include="include\Poco\Data\ODBC\Utility.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp"/>
|
||||
<ClCompile Include="src\ConnectionHandle.cpp"/>
|
||||
<ClCompile Include="src\Connector.cpp"/>
|
||||
<ClCompile Include="src\EnvironmentHandle.cpp"/>
|
||||
<ClCompile Include="src\Extractor.cpp"/>
|
||||
<ClCompile Include="src\ODBCException.cpp"/>
|
||||
<ClCompile Include="src\ODBCMetaColumn.cpp"/>
|
||||
<ClCompile Include="src\ODBCStatementImpl.cpp"/>
|
||||
<ClCompile Include="src\Parameter.cpp"/>
|
||||
<ClCompile Include="src\Preparator.cpp"/>
|
||||
<ClCompile Include="src\SessionImpl.cpp"/>
|
||||
<ClCompile Include="src\TypeInfo.cpp"/>
|
||||
<ClCompile Include="src\Unicode.cpp"/>
|
||||
<ClCompile Include="src\Binder.cpp" />
|
||||
<ClCompile Include="src\ConnectionHandle.cpp" />
|
||||
<ClCompile Include="src\Connector.cpp" />
|
||||
<ClCompile Include="src\EnvironmentHandle.cpp" />
|
||||
<ClCompile Include="src\Extractor.cpp" />
|
||||
<ClCompile Include="src\ODBCException.cpp" />
|
||||
<ClCompile Include="src\ODBCMetaColumn.cpp" />
|
||||
<ClCompile Include="src\ODBCStatementImpl.cpp" />
|
||||
<ClCompile Include="src\Parameter.cpp" />
|
||||
<ClCompile Include="src\Preparator.cpp" />
|
||||
<ClCompile Include="src\SessionImpl.cpp" />
|
||||
<ClCompile Include="src\TypeInfo.cpp" />
|
||||
<ClCompile Include="src\Unicode.cpp" />
|
||||
<ClCompile Include="src\Unicode_UNIXODBC.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">true</ExcludedFromBuild>
|
||||
@ -328,8 +334,8 @@
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Utility.cpp"/>
|
||||
<ClCompile Include="src\Utility.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
||||
|
@ -58,12 +58,28 @@ namespace ODBC {
|
||||
class ODBC_API Binder: public Poco::Data::AbstractBinder
|
||||
/// Binds placeholders in the sql query to the provided values. Performs data types mapping.
|
||||
{
|
||||
|
||||
struct ParamDescriptor
|
||||
{
|
||||
ParamDescriptor() : colSize(0), cDataType(0), decDigits(-1)
|
||||
{}
|
||||
|
||||
ParamDescriptor(SQLINTEGER colSize_, SQLSMALLINT cDataType_, SQLSMALLINT decDigits_) : colSize(colSize_), cDataType(cDataType_), decDigits(decDigits_)
|
||||
{}
|
||||
|
||||
bool defined() const { return cDataType != 0; }
|
||||
SQLINTEGER colSize;
|
||||
SQLSMALLINT cDataType;
|
||||
SQLSMALLINT decDigits;
|
||||
};
|
||||
|
||||
public:
|
||||
typedef AbstractBinder::Direction Direction;
|
||||
typedef std::map<SQLPOINTER, SQLLEN> ParamMap;
|
||||
|
||||
static const size_t DEFAULT_PARAM_SIZE = 1024;
|
||||
|
||||
|
||||
enum ParameterBinding
|
||||
{
|
||||
PB_IMMEDIATE,
|
||||
@ -72,14 +88,16 @@ public:
|
||||
|
||||
Binder(const StatementHandle& rStmt,
|
||||
std::size_t maxFieldSize,
|
||||
ParameterBinding dataBinding = PB_IMMEDIATE,
|
||||
TypeInfo* pDataTypes = 0);
|
||||
ParameterBinding dataBinding,
|
||||
TypeInfo* pDataTypes,
|
||||
ODBCMetaColumn::NumericConversion numericConversion,
|
||||
bool insertOnly);
|
||||
/// Creates the Binder.
|
||||
|
||||
~Binder();
|
||||
/// Destroys the Binder.
|
||||
|
||||
void bind(std::size_t pos, const Poco::Int8& val, Direction dir);
|
||||
void bind(std::size_t pos, const Poco::Int8& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an Int8.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Poco::Int8>& val, Direction dir);
|
||||
@ -91,7 +109,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Poco::Int8>& val, Direction dir);
|
||||
/// Binds an Int8 list.
|
||||
|
||||
void bind(std::size_t pos, const Poco::UInt8& val, Direction dir);
|
||||
void bind(std::size_t pos, const Poco::UInt8& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an UInt8.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Poco::UInt8>& val, Direction dir);
|
||||
@ -103,7 +121,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Poco::UInt8>& val, Direction dir);
|
||||
/// Binds an UInt8 list.
|
||||
|
||||
void bind(std::size_t pos, const Poco::Int16& val, Direction dir);
|
||||
void bind(std::size_t pos, const Poco::Int16& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an Int16.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Poco::Int16>& val, Direction dir);
|
||||
@ -115,7 +133,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Poco::Int16>& val, Direction dir);
|
||||
/// Binds an Int16 list.
|
||||
|
||||
void bind(std::size_t pos, const Poco::UInt16& val, Direction dir);
|
||||
void bind(std::size_t pos, const Poco::UInt16& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an UInt16.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Poco::UInt16>& val, Direction dir);
|
||||
@ -127,7 +145,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Poco::UInt16>& val, Direction dir);
|
||||
/// Binds an UInt16 list.
|
||||
|
||||
void bind(std::size_t pos, const Poco::Int32& val, Direction dir);
|
||||
void bind(std::size_t pos, const Poco::Int32& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an Int32.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Poco::Int32>& val, Direction dir);
|
||||
@ -139,7 +157,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Poco::Int32>& val, Direction dir);
|
||||
/// Binds an Int32 list.
|
||||
|
||||
void bind(std::size_t pos, const Poco::UInt32& val, Direction dir);
|
||||
void bind(std::size_t pos, const Poco::UInt32& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an UInt32.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Poco::UInt32>& val, Direction dir);
|
||||
@ -151,7 +169,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Poco::UInt32>& val, Direction dir);
|
||||
/// Binds an UInt32 list.
|
||||
|
||||
void bind(std::size_t pos, const Poco::Int64& val, Direction dir);
|
||||
void bind(std::size_t pos, const Poco::Int64& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an Int64.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Poco::Int64>& val, Direction dir);
|
||||
@ -163,7 +181,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Poco::Int64>& val, Direction dir);
|
||||
/// Binds an Int64 list.
|
||||
|
||||
void bind(std::size_t pos, const Poco::UInt64& val, Direction dir);
|
||||
void bind(std::size_t pos, const Poco::UInt64& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an UInt64.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Poco::UInt64>& val, Direction dir);
|
||||
@ -176,10 +194,10 @@ public:
|
||||
/// Binds an UInt64 list.
|
||||
|
||||
#ifndef POCO_LONG_IS_64_BIT
|
||||
void bind(std::size_t pos, const long& val, Direction dir);
|
||||
void bind(std::size_t pos, const long& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a long.
|
||||
|
||||
void bind(std::size_t pos, const unsigned long& val, Direction dir);
|
||||
void bind(std::size_t pos, const unsigned long& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds an unsigned long.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<long>& val, Direction dir);
|
||||
@ -192,7 +210,7 @@ public:
|
||||
/// Binds a long list.
|
||||
#endif
|
||||
|
||||
void bind(std::size_t pos, const bool& val, Direction dir);
|
||||
void bind(std::size_t pos, const bool& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a boolean.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<bool>& val, Direction dir);
|
||||
@ -204,7 +222,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<bool>& val, Direction dir);
|
||||
/// Binds a boolean list.
|
||||
|
||||
void bind(std::size_t pos, const float& val, Direction dir);
|
||||
void bind(std::size_t pos, const float& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a float.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<float>& val, Direction dir);
|
||||
@ -216,7 +234,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<float>& val, Direction dir);
|
||||
/// Binds a float list.
|
||||
|
||||
void bind(std::size_t pos, const double& val, Direction dir);
|
||||
void bind(std::size_t pos, const double& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a double.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<double>& val, Direction dir);
|
||||
@ -228,7 +246,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<double>& val, Direction dir);
|
||||
/// Binds a double list.
|
||||
|
||||
void bind(std::size_t pos, const char& val, Direction dir);
|
||||
void bind(std::size_t pos, const char& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a single character.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<char>& val, Direction dir);
|
||||
@ -240,7 +258,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<char>& val, Direction dir);
|
||||
/// Binds a character list.
|
||||
|
||||
void bind(std::size_t pos, const std::string& val, Direction dir);
|
||||
void bind(std::size_t pos, const std::string& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a string.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<std::string>& val, Direction dir);
|
||||
@ -252,7 +270,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<std::string>& val, Direction dir);
|
||||
/// Binds a string list.
|
||||
|
||||
void bind(std::size_t pos, const UTF16String& val, Direction dir);
|
||||
void bind(std::size_t pos, const UTF16String& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a string.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<UTF16String>& val, Direction dir);
|
||||
@ -264,10 +282,10 @@ public:
|
||||
void bind(std::size_t pos, const std::list<UTF16String>& val, Direction dir);
|
||||
/// Binds a string list.
|
||||
|
||||
void bind(std::size_t pos, const BLOB& val, Direction dir);
|
||||
void bind(std::size_t pos, const BLOB& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a BLOB. In-bound only.
|
||||
|
||||
void bind(std::size_t pos, const CLOB& val, Direction dir);
|
||||
void bind(std::size_t pos, const CLOB& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a CLOB. In-bound only.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<BLOB>& val, Direction dir);
|
||||
@ -288,7 +306,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<CLOB>& val, Direction dir);
|
||||
/// Binds a CLOB list.
|
||||
|
||||
void bind(std::size_t pos, const Date& val, Direction dir);
|
||||
void bind(std::size_t pos, const Date& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a Date.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Date>& val, Direction dir);
|
||||
@ -300,7 +318,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Date>& val, Direction dir);
|
||||
/// Binds a Date list.
|
||||
|
||||
void bind(std::size_t pos, const Time& val, Direction dir);
|
||||
void bind(std::size_t pos, const Time& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a Time.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<Time>& val, Direction dir);
|
||||
@ -312,7 +330,7 @@ public:
|
||||
void bind(std::size_t pos, const std::list<Time>& val, Direction dir);
|
||||
/// Binds a Time list.
|
||||
|
||||
void bind(std::size_t pos, const DateTime& val, Direction dir);
|
||||
void bind(std::size_t pos, const DateTime& val, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a DateTime.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<DateTime>& val, Direction dir);
|
||||
@ -324,16 +342,16 @@ public:
|
||||
void bind(std::size_t pos, const std::list<DateTime>& val, Direction dir);
|
||||
/// Binds a DateTime list.
|
||||
|
||||
void bind(std::size_t pos, const NullData& val, Direction dir);
|
||||
void bind(std::size_t pos, const NullData& val, Direction dir, const std::type_info& bindType);
|
||||
/// Binds a null. In-bound only.
|
||||
|
||||
void bind(std::size_t pos, const std::vector<NullData>& val, Direction dir);
|
||||
void bind(std::size_t pos, const std::vector<NullData>& val, Direction dir, const std::type_info& bindType);
|
||||
/// Binds a null vector.
|
||||
|
||||
void bind(std::size_t pos, const std::deque<NullData>& val, Direction dir);
|
||||
void bind(std::size_t pos, const std::deque<NullData>& val, Direction dir, const std::type_info& bindType);
|
||||
/// Binds a null deque.
|
||||
|
||||
void bind(std::size_t pos, const std::list<NullData>& val, Direction dir);
|
||||
void bind(std::size_t pos, const std::list<NullData>& val, Direction dir, const std::type_info& bindType);
|
||||
/// Binds a null list.
|
||||
|
||||
void setDataBinding(ParameterBinding binding);
|
||||
@ -353,6 +371,7 @@ public:
|
||||
/// Clears the cached storage.
|
||||
|
||||
private:
|
||||
typedef std::vector<ParamDescriptor> ParameterInfoVec;
|
||||
typedef std::vector<SQLLEN*> LengthPtrVec;
|
||||
typedef std::vector<SQLLEN> LengthVec;
|
||||
typedef std::vector<LengthVec*> LengthVecVec;
|
||||
@ -365,18 +384,19 @@ private:
|
||||
typedef std::vector<TimeVec*> TimeVecVec;
|
||||
typedef std::vector<SQL_TIMESTAMP_STRUCT> DateTimeVec;
|
||||
typedef std::vector<DateTimeVec*> DateTimeVecVec;
|
||||
typedef std::vector<Poco::Any> AnyVec;
|
||||
typedef std::vector<AnyVec> AnyVecVec;
|
||||
typedef std::vector<Poco::Any*> AnyPtrVec;
|
||||
typedef std::vector<AnyPtrVec> AnyPtrVecVec;
|
||||
typedef std::map<char*, std::string*> StringMap;
|
||||
typedef std::map<UTF16String::value_type*, UTF16String*> UTF16StringMap;
|
||||
typedef std::map<SQL_DATE_STRUCT*, Date*> DateMap;
|
||||
typedef std::map<SQL_TIME_STRUCT*, Time*> TimeMap;
|
||||
typedef std::map<SQL_TIMESTAMP_STRUCT*, DateTime*> TimestampMap;
|
||||
typedef std::map<SQLLEN*, WhenNullCb> NullCbMap;
|
||||
|
||||
void describeParameter(std::size_t pos);
|
||||
/// Sets the description field for the parameter, if needed.
|
||||
|
||||
void bind(std::size_t pos, const char* const& pVal, Direction dir);
|
||||
void bind(std::size_t pos, const char* const& pVal, Direction dir, const WhenNullCb& nullCb);
|
||||
/// Binds a const char ptr.
|
||||
/// This is a private no-op in this implementation
|
||||
/// due to security risk.
|
||||
@ -386,13 +406,19 @@ private:
|
||||
/// specified by user.
|
||||
|
||||
template <typename T>
|
||||
void bindImpl(std::size_t pos, T& val, SQLSMALLINT cDataType, Direction dir)
|
||||
void bindImpl(std::size_t pos, T& val, SQLSMALLINT cDataType, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
SQLINTEGER colSize = 0;
|
||||
SQLSMALLINT decDigits = 0;
|
||||
getColSizeAndPrecision(pos, cDataType, colSize, decDigits);
|
||||
|
||||
_lengthIndicator.push_back(0);
|
||||
SQLLEN* pLenIn = NULL;
|
||||
if (isOutBound(dir) && nullCb.defined())
|
||||
{
|
||||
pLenIn = new SQLLEN;
|
||||
*pLenIn = SQL_NTS; // microsoft example does that, otherwise no null indicator is returned
|
||||
_nullCbMap.insert(NullCbMap::value_type(pLenIn, nullCb));
|
||||
}
|
||||
_lengthIndicator.push_back(pLenIn);
|
||||
|
||||
if (Utility::isError(SQLBindParameter(_rStmt,
|
||||
(SQLUSMALLINT) pos + 1,
|
||||
@ -401,14 +427,15 @@ private:
|
||||
Utility::sqlDataType(cDataType),
|
||||
colSize,
|
||||
decDigits,
|
||||
(SQLPOINTER) &val, 0, 0)))
|
||||
(SQLPOINTER)&val, 0,
|
||||
_lengthIndicator.back())))
|
||||
{
|
||||
throw StatementException(_rStmt, "SQLBindParameter()");
|
||||
}
|
||||
}
|
||||
|
||||
template <typename L>
|
||||
void bindImplLOB(std::size_t pos, const L& val, Direction dir)
|
||||
void bindImplLOB(std::size_t pos, const L& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
if (isOutBound(dir) || !isInBound(dir))
|
||||
throw NotImplementedException("LOB parameter type can only be inbound.");
|
||||
@ -424,13 +451,17 @@ private:
|
||||
if (PB_AT_EXEC == _paramBinding)
|
||||
*pLenIn = SQL_LEN_DATA_AT_EXEC(size);
|
||||
|
||||
if (isOutBound(dir) && nullCb.defined())
|
||||
_nullCbMap.insert(NullCbMap::value_type(pLenIn, nullCb));
|
||||
|
||||
_lengthIndicator.push_back(pLenIn);
|
||||
SQLSMALLINT sqlType = (isInBound(dir) && size <= _maxVarBinColSize) ? SQL_VARBINARY : SQL_LONGVARBINARY;
|
||||
|
||||
if (Utility::isError(SQLBindParameter(_rStmt,
|
||||
(SQLUSMALLINT) pos + 1,
|
||||
SQL_PARAM_INPUT,
|
||||
SQL_C_BINARY,
|
||||
SQL_LONGVARBINARY,
|
||||
sqlType,
|
||||
(SQLUINTEGER) size,
|
||||
0,
|
||||
pVal,
|
||||
@ -485,9 +516,9 @@ private:
|
||||
if (_containers.size() <= pos)
|
||||
_containers.resize(pos + 1);
|
||||
|
||||
_containers[pos].push_back(std::vector<Type>());
|
||||
_containers[pos].push_back( new Any(std::vector<Type>()) );
|
||||
|
||||
std::vector<Type>& cont = RefAnyCast<std::vector<Type> >(_containers[pos].back());
|
||||
std::vector<Type>& cont = RefAnyCast<std::vector<Type> >( *_containers[pos].back() );
|
||||
cont.assign(val.begin(), val.end());
|
||||
bindImplVec(pos, cont, cDataType, dir);
|
||||
}
|
||||
@ -586,12 +617,13 @@ private:
|
||||
std::memcpy(_charPtrs[pos] + offset, it->c_str(), strSize);
|
||||
offset += size;
|
||||
}
|
||||
SQLSMALLINT sqlType = (isInBound(dir) && size < _maxCharColLength) ? SQL_VARCHAR : SQL_LONGVARCHAR;
|
||||
|
||||
if (Utility::isError(SQLBindParameter(_rStmt,
|
||||
(SQLUSMALLINT) pos + 1,
|
||||
toODBCDirection(dir),
|
||||
SQL_C_CHAR,
|
||||
SQL_LONGVARCHAR,
|
||||
sqlType,
|
||||
(SQLUINTEGER) size - 1,
|
||||
0,
|
||||
_charPtrs[pos],
|
||||
@ -652,12 +684,12 @@ private:
|
||||
std::memcpy(_utf16CharPtrs[pos] + offset, it->data(), strSize);
|
||||
offset += (size / sizeof(UTF16Char));
|
||||
}
|
||||
|
||||
SQLSMALLINT sqlType = (isInBound(dir) && size < _maxWCharColLength) ? SQL_WVARCHAR : SQL_WLONGVARCHAR;
|
||||
if (Utility::isError(SQLBindParameter(_rStmt,
|
||||
(SQLUSMALLINT)pos + 1,
|
||||
toODBCDirection(dir),
|
||||
SQL_C_WCHAR,
|
||||
SQL_WLONGVARCHAR,
|
||||
sqlType,
|
||||
(SQLUINTEGER)size - 1,
|
||||
0,
|
||||
_utf16CharPtrs[pos],
|
||||
@ -722,12 +754,13 @@ private:
|
||||
std::memcpy(_charPtrs[pos] + offset, cIt->rawContent(), blobSize * sizeof(CharType));
|
||||
offset += size;
|
||||
}
|
||||
SQLSMALLINT sqlType = (isInBound(dir) && size <= _maxVarBinColSize) ? SQL_VARBINARY : SQL_LONGVARBINARY;
|
||||
|
||||
if (Utility::isError(SQLBindParameter(_rStmt,
|
||||
(SQLUSMALLINT) pos + 1,
|
||||
SQL_PARAM_INPUT,
|
||||
SQL_C_BINARY,
|
||||
SQL_LONGVARBINARY,
|
||||
sqlType,
|
||||
(SQLUINTEGER) size,
|
||||
0,
|
||||
_charPtrs[pos],
|
||||
@ -754,8 +787,6 @@ private:
|
||||
|
||||
setParamSetSize(length);
|
||||
|
||||
SQLINTEGER size = (SQLINTEGER) sizeof(SQL_DATE_STRUCT);
|
||||
|
||||
if (_vecLengthIndicator.size() <= pos)
|
||||
{
|
||||
_vecLengthIndicator.resize(pos + 1, 0);
|
||||
@ -804,8 +835,6 @@ private:
|
||||
|
||||
setParamSetSize(val.size());
|
||||
|
||||
SQLINTEGER size = (SQLINTEGER) sizeof(SQL_TIME_STRUCT);
|
||||
|
||||
if (_vecLengthIndicator.size() <= pos)
|
||||
{
|
||||
_vecLengthIndicator.resize(pos + 1, 0);
|
||||
@ -855,8 +884,6 @@ private:
|
||||
|
||||
setParamSetSize(length);
|
||||
|
||||
SQLINTEGER size = (SQLINTEGER) sizeof(SQL_TIMESTAMP_STRUCT);
|
||||
|
||||
if (_vecLengthIndicator.size() <= pos)
|
||||
{
|
||||
_vecLengthIndicator.resize(pos + 1, 0);
|
||||
@ -891,7 +918,7 @@ private:
|
||||
}
|
||||
|
||||
template<typename C>
|
||||
void bindImplNullContainer(std::size_t pos, const C& val, Direction dir)
|
||||
void bindImplNullContainer(std::size_t pos, const C& val, Direction dir, const std::type_info& bindElemType)
|
||||
{
|
||||
if (isOutBound(dir) || !isInBound(dir))
|
||||
throw NotImplementedException("Null container parameter type can only be inbound.");
|
||||
@ -906,8 +933,6 @@ private:
|
||||
|
||||
setParamSetSize(length);
|
||||
|
||||
SQLINTEGER size = SQL_NULL_DATA;
|
||||
|
||||
if (_vecLengthIndicator.size() <= pos)
|
||||
{
|
||||
_vecLengthIndicator.resize(pos + 1, 0);
|
||||
@ -916,13 +941,14 @@ private:
|
||||
|
||||
SQLINTEGER colSize = 0;
|
||||
SQLSMALLINT decDigits = 0;
|
||||
getColSizeAndPrecision(pos, SQL_C_STINYINT, colSize, decDigits);
|
||||
SQLSMALLINT colType = _pTypeInfo->tryTypeidToCType(bindElemType, SQL_C_STINYINT);
|
||||
getColSizeAndPrecision(pos, colType, colSize, decDigits);
|
||||
|
||||
if (Utility::isError(SQLBindParameter(_rStmt,
|
||||
(SQLUSMALLINT) pos + 1,
|
||||
SQL_PARAM_INPUT,
|
||||
SQL_C_STINYINT,
|
||||
Utility::sqlDataType(SQL_C_STINYINT),
|
||||
colType,
|
||||
Utility::sqlDataType(colType),
|
||||
colSize,
|
||||
decDigits,
|
||||
0,
|
||||
@ -957,6 +983,7 @@ private:
|
||||
void freeMemory();
|
||||
/// Frees all dynamically allocated memory resources.
|
||||
|
||||
|
||||
template<typename T>
|
||||
void getMinValueSize(T& val, SQLINTEGER& size)
|
||||
/// Some ODBC drivers return DB-wide maximum allowed size for variable size columns,
|
||||
@ -995,6 +1022,7 @@ private:
|
||||
ParamMap _inParams;
|
||||
ParamMap _outParams;
|
||||
ParameterBinding _paramBinding;
|
||||
ParameterInfoVec _parameters;
|
||||
|
||||
DateMap _dates;
|
||||
TimeMap _times;
|
||||
@ -1011,16 +1039,22 @@ private:
|
||||
const TypeInfo* _pTypeInfo;
|
||||
SQLINTEGER _paramSetSize;
|
||||
std::size_t _maxFieldSize;
|
||||
AnyVecVec _containers;
|
||||
AnyPtrVecVec _containers;
|
||||
std::size_t _maxCharColLength;
|
||||
std::size_t _maxWCharColLength;
|
||||
std::size_t _maxVarBinColSize;
|
||||
ODBCMetaColumn::NumericConversion _numericConversion;
|
||||
NullCbMap _nullCbMap;
|
||||
bool _insertOnly;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
inline void Binder::bind(std::size_t pos, const Poco::Int8& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const Poco::Int8& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_STINYINT, dir);
|
||||
bindImpl(pos, val, SQL_C_STINYINT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1042,9 +1076,9 @@ inline void Binder::bind(std::size_t pos, const std::list<Poco::Int8>& val, Dire
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const Poco::UInt8& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const Poco::UInt8& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_UTINYINT, dir);
|
||||
bindImpl(pos, val, SQL_C_UTINYINT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1066,9 +1100,9 @@ inline void Binder::bind(std::size_t pos, const std::list<Poco::UInt8>& val, Dir
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const Poco::Int16& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const Poco::Int16& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_SSHORT, dir);
|
||||
bindImpl(pos, val, SQL_C_SSHORT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1090,9 +1124,9 @@ inline void Binder::bind(std::size_t pos, const std::list<Poco::Int16>& val, Dir
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const Poco::UInt16& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const Poco::UInt16& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_USHORT, dir);
|
||||
bindImpl(pos, val, SQL_C_USHORT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1114,9 +1148,9 @@ inline void Binder::bind(std::size_t pos, const std::list<Poco::UInt16>& val, Di
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const Poco::Int32& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const Poco::Int32& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_SLONG, dir);
|
||||
bindImpl(pos, val, SQL_C_SLONG, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1138,9 +1172,9 @@ inline void Binder::bind(std::size_t pos, const std::list<Poco::Int32>& val, Dir
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const Poco::UInt32& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const Poco::UInt32& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_ULONG, dir);
|
||||
bindImpl(pos, val, SQL_C_ULONG, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1162,9 +1196,9 @@ inline void Binder::bind(std::size_t pos, const std::list<Poco::UInt32>& val, Di
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const Poco::Int64& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const Poco::Int64& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_SBIGINT, dir);
|
||||
bindImpl(pos, val, SQL_C_SBIGINT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1186,9 +1220,9 @@ inline void Binder::bind(std::size_t pos, const std::list<Poco::Int64>& val, Dir
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const Poco::UInt64& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const Poco::UInt64& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_UBIGINT, dir);
|
||||
bindImpl(pos, val, SQL_C_UBIGINT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1211,15 +1245,15 @@ inline void Binder::bind(std::size_t pos, const std::list<Poco::UInt64>& val, Di
|
||||
|
||||
|
||||
#ifndef POCO_LONG_IS_64_BIT
|
||||
inline void Binder::bind(std::size_t pos, const long& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const long& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_SLONG, dir);
|
||||
bindImpl(pos, val, SQL_C_SLONG, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const unsigned long& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const unsigned long& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_SLONG, dir);
|
||||
bindImpl(pos, val, SQL_C_SLONG, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1242,9 +1276,9 @@ inline void Binder::bind(std::size_t pos, const std::list<long>& val, Direction
|
||||
#endif
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const float& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const float& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_FLOAT, dir);
|
||||
bindImpl(pos, val, SQL_C_FLOAT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1266,9 +1300,9 @@ inline void Binder::bind(std::size_t pos, const std::list<float>& val, Direction
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const double& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const double& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_DOUBLE, dir);
|
||||
bindImpl(pos, val, SQL_C_DOUBLE, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1290,9 +1324,9 @@ inline void Binder::bind(std::size_t pos, const std::list<double>& val, Directio
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const bool& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const bool& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_BIT, dir);
|
||||
bindImpl(pos, val, SQL_C_BIT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1314,9 +1348,9 @@ inline void Binder::bind(std::size_t pos, const std::list<bool>& val, Direction
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const char& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const char& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImpl(pos, val, SQL_C_STINYINT, dir);
|
||||
bindImpl(pos, val, SQL_C_STINYINT, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1373,15 +1407,15 @@ inline void Binder::bind(std::size_t pos, const std::list<UTF16String>& val, Dir
|
||||
bindImplContainerUTF16String(pos, val, dir);
|
||||
}
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const BLOB& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const BLOB& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImplLOB<BLOB>(pos, val, dir);
|
||||
bindImplLOB<BLOB>(pos, val, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const CLOB& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const CLOB& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
bindImplLOB<CLOB>(pos, val, dir);
|
||||
bindImplLOB<CLOB>(pos, val, dir, nullCb);
|
||||
}
|
||||
|
||||
|
||||
@ -1475,21 +1509,21 @@ inline void Binder::bind(std::size_t pos, const std::list<DateTime>& val, Direct
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const std::vector<NullData>& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const std::vector<NullData>& val, Direction dir, const std::type_info& bindElemType)
|
||||
{
|
||||
bindImplNullContainer(pos, val, dir);
|
||||
bindImplNullContainer(pos, val, dir, bindElemType);
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const std::deque<NullData>& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const std::deque<NullData>& val, Direction dir, const std::type_info& bindElemType)
|
||||
{
|
||||
bindImplNullContainer(pos, val, dir);
|
||||
bindImplNullContainer(pos, val, dir, bindElemType);
|
||||
}
|
||||
|
||||
|
||||
inline void Binder::bind(std::size_t pos, const std::list<NullData>& val, Direction dir)
|
||||
inline void Binder::bind(std::size_t pos, const std::list<NullData>& val, Direction dir, const std::type_info& bindElemType)
|
||||
{
|
||||
bindImplNullContainer(pos, val, dir);
|
||||
bindImplNullContainer(pos, val, dir, bindElemType);
|
||||
}
|
||||
|
||||
|
||||
|
@ -19,7 +19,6 @@
|
||||
#ifndef Data_ODBC_ConnectionHandle_INCLUDED
|
||||
#define Data_ODBC_ConnectionHandle_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Data/ODBC/ODBC.h"
|
||||
#include "Poco/Data/ODBC/EnvironmentHandle.h"
|
||||
#ifdef POCO_OS_FAMILY_WINDOWS
|
||||
@ -49,6 +48,9 @@ public:
|
||||
const SQLHDBC& handle() const;
|
||||
/// Returns const reference to handle;
|
||||
|
||||
operator bool() const;
|
||||
/// Returns true if the handle is valid
|
||||
|
||||
private:
|
||||
operator SQLHDBC& ();
|
||||
/// Conversion operator into reference to native type.
|
||||
@ -59,9 +61,8 @@ private:
|
||||
ConnectionHandle(const ConnectionHandle&);
|
||||
const ConnectionHandle& operator=(const ConnectionHandle&);
|
||||
|
||||
const EnvironmentHandle* _pEnvironment;
|
||||
const EnvironmentHandle _environment;
|
||||
SQLHDBC _hdbc;
|
||||
bool _ownsEnvironment;
|
||||
};
|
||||
|
||||
|
||||
@ -92,6 +93,11 @@ inline SQLHDBC& ConnectionHandle::handle()
|
||||
}
|
||||
|
||||
|
||||
inline ConnectionHandle::operator bool () const
|
||||
{
|
||||
return _hdbc != SQL_NULL_HDBC;
|
||||
}
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
|
||||
|
||||
|
@ -59,12 +59,12 @@ public:
|
||||
typedef std::vector<DiagnosticFields> FieldVec;
|
||||
typedef typename FieldVec::const_iterator Iterator;
|
||||
|
||||
explicit Diagnostics(const H& handle): _handle(handle)
|
||||
explicit Diagnostics(const H& handle)
|
||||
/// Creates and initializes the Diagnostics.
|
||||
{
|
||||
std::memset(_connectionName, 0, sizeof(_connectionName));
|
||||
std::memset(_serverName, 0, sizeof(_serverName));
|
||||
diagnostics();
|
||||
diagnostics(handle);
|
||||
}
|
||||
|
||||
~Diagnostics()
|
||||
@ -138,7 +138,7 @@ public:
|
||||
return _fields.end();
|
||||
}
|
||||
|
||||
const Diagnostics& diagnostics()
|
||||
const Diagnostics& diagnostics(const H& handle)
|
||||
{
|
||||
DiagnosticFields df;
|
||||
SQLSMALLINT count = 1;
|
||||
@ -149,7 +149,7 @@ public:
|
||||
reset();
|
||||
|
||||
while (!Utility::isError(SQLGetDiagRec(handleType,
|
||||
_handle,
|
||||
handle,
|
||||
count,
|
||||
df._sqlState,
|
||||
&df._nativeError,
|
||||
@ -163,7 +163,7 @@ public:
|
||||
// (they fail if connection has not been established yet
|
||||
// or return empty string if not applicable for the context)
|
||||
if (Utility::isError(SQLGetDiagField(handleType,
|
||||
_handle,
|
||||
handle,
|
||||
count,
|
||||
SQL_DIAG_CONNECTION_NAME,
|
||||
_connectionName,
|
||||
@ -182,7 +182,7 @@ public:
|
||||
}
|
||||
|
||||
if (Utility::isError(SQLGetDiagField(handleType,
|
||||
_handle,
|
||||
handle,
|
||||
count,
|
||||
SQL_DIAG_SERVER_NAME,
|
||||
_serverName,
|
||||
@ -223,9 +223,6 @@ private:
|
||||
|
||||
/// Diagnostics container
|
||||
FieldVec _fields;
|
||||
|
||||
/// Context handle
|
||||
const H& _handle;
|
||||
};
|
||||
|
||||
|
||||
|
@ -39,6 +39,9 @@ public:
|
||||
EnvironmentHandle();
|
||||
/// Creates the EnvironmentHandle.
|
||||
|
||||
explicit EnvironmentHandle(const SQLHENV* henv);
|
||||
/// Creates the EnvironmentHandle which doesn't own the handle
|
||||
|
||||
~EnvironmentHandle();
|
||||
/// Destroys the EnvironmentHandle.
|
||||
|
||||
@ -52,8 +55,7 @@ private:
|
||||
operator SQLHENV& ();
|
||||
/// Conversion operator into reference to native type.
|
||||
|
||||
SQLHENV& handle();
|
||||
/// Returns reference to handle.
|
||||
void init();
|
||||
|
||||
EnvironmentHandle(const EnvironmentHandle&);
|
||||
const EnvironmentHandle& operator=(const EnvironmentHandle&);
|
||||
@ -79,12 +81,6 @@ inline const SQLHENV& EnvironmentHandle::handle() const
|
||||
|
||||
|
||||
inline EnvironmentHandle::operator SQLHENV& ()
|
||||
{
|
||||
return handle();
|
||||
}
|
||||
|
||||
|
||||
inline SQLHENV& EnvironmentHandle::handle()
|
||||
{
|
||||
return _henv;
|
||||
}
|
||||
|
@ -491,6 +491,9 @@ private:
|
||||
return true;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool extractManualLOBImpl(std::size_t pos, Poco::Data::LOB<T>& val, SQLSMALLINT cType);
|
||||
|
||||
template <typename T, typename NT>
|
||||
bool extAny(std::size_t pos, T& val)
|
||||
{
|
||||
@ -511,7 +514,7 @@ private:
|
||||
bool extractImpl(std::size_t pos, T& val)
|
||||
/// Utility function for extraction of Any and DynamicAny.
|
||||
{
|
||||
ODBCMetaColumn column(_rStmt, pos);
|
||||
ODBCMetaColumn column(_rStmt, pos, _pPreparator->numericConversion());
|
||||
|
||||
switch (column.type())
|
||||
{
|
||||
@ -717,7 +720,7 @@ inline bool Extractor::isNullLengthIndicator(SQLLEN val) const
|
||||
|
||||
inline SQLINTEGER Extractor::columnSize(std::size_t pos) const
|
||||
{
|
||||
std::size_t size = ODBCMetaColumn(_rStmt, pos).length();
|
||||
std::size_t size = ODBCMetaColumn(_rStmt, pos, _pPreparator->numericConversion()).length();
|
||||
std::size_t maxSize = _pPreparator->maxDataSize(pos);
|
||||
if (size > maxSize) size = maxSize;
|
||||
return (SQLINTEGER) size;
|
||||
|
@ -43,7 +43,9 @@ template <class H, SQLSMALLINT handleType>
|
||||
class HandleException: public ODBCException
|
||||
{
|
||||
public:
|
||||
HandleException(const H& handle): _error(handle)
|
||||
HandleException(const H& handle, int code = 0) :
|
||||
ODBCException(code),
|
||||
_error(handle)
|
||||
/// Creates HandleException
|
||||
{
|
||||
message(_error.toString());
|
||||
@ -129,12 +131,24 @@ public:
|
||||
_error.toString());
|
||||
}
|
||||
|
||||
std::string errorString() const
|
||||
/// Returns the error diagnostics string
|
||||
{
|
||||
return _error.toString();
|
||||
}
|
||||
|
||||
static std::string errorString(const H& handle)
|
||||
/// Returns the error diagnostics string for the handle.
|
||||
{
|
||||
return Error<H, handleType>(handle).toString();
|
||||
}
|
||||
|
||||
protected:
|
||||
const Error<H, handleType>& error() const
|
||||
{
|
||||
return _error;
|
||||
}
|
||||
|
||||
private:
|
||||
Error<H, handleType> _error;
|
||||
};
|
||||
|
@ -39,7 +39,15 @@ namespace ODBC {
|
||||
class ODBC_API ODBCMetaColumn: public MetaColumn
|
||||
{
|
||||
public:
|
||||
explicit ODBCMetaColumn(const StatementHandle& rStmt, std::size_t position);
|
||||
|
||||
enum NumericConversion
|
||||
{
|
||||
NC_BEST_FIT = 0,
|
||||
NC_FORCE_STRING = 1,
|
||||
NC_BEST_FIT_DBL_LIMIT = 2
|
||||
};
|
||||
|
||||
ODBCMetaColumn(const StatementHandle& rStmt, std::size_t position, NumericConversion numericConversion);
|
||||
/// Creates the ODBCMetaColumn.
|
||||
|
||||
~ODBCMetaColumn();
|
||||
@ -73,6 +81,7 @@ private:
|
||||
SQLLEN _dataLength;
|
||||
const StatementHandle& _rStmt;
|
||||
ColumnDescription _columnDesc;
|
||||
NumericConversion _numericConversion;
|
||||
};
|
||||
|
||||
|
||||
|
@ -60,7 +60,7 @@ protected:
|
||||
/// Returns the number of affected rows.
|
||||
/// Used to find out the number of rows affected by insert or update.
|
||||
|
||||
const MetaColumn& metaColumn(std::size_t pos) const;
|
||||
const MetaColumn& metaColumn(std::size_t pos, size_t dataSet) const;
|
||||
/// Returns column meta data.
|
||||
|
||||
bool hasNext();
|
||||
@ -93,6 +93,10 @@ protected:
|
||||
std::string nativeSQL();
|
||||
/// Returns the SQL string as modified by the driver.
|
||||
|
||||
protected:
|
||||
|
||||
virtual void insertHint();
|
||||
|
||||
private:
|
||||
typedef Poco::Data::AbstractBindingVec Bindings;
|
||||
typedef Poco::SharedPtr<Binder> BinderPtr;
|
||||
@ -140,9 +144,10 @@ private:
|
||||
|
||||
void getData();
|
||||
|
||||
void addPreparator();
|
||||
void fillColumns();
|
||||
bool addPreparator(bool addAlways = true);
|
||||
void fillColumns(size_t dataSetPos);
|
||||
void checkError(SQLRETURN rc, const std::string& msg="");
|
||||
bool nextResultSet();
|
||||
|
||||
const SQLHDBC& _rConnection;
|
||||
const StatementHandle _stmt;
|
||||
@ -155,6 +160,9 @@ private:
|
||||
bool _prepared;
|
||||
mutable std::size_t _affectedRowCount;
|
||||
bool _canCompile;
|
||||
ODBCMetaColumn::NumericConversion _numericConversion;
|
||||
bool _isPostgres;
|
||||
bool _insertHint;
|
||||
};
|
||||
|
||||
|
||||
|
@ -101,7 +101,10 @@ public:
|
||||
Preparator(const StatementHandle& rStmt,
|
||||
const std::string& statement,
|
||||
std::size_t maxFieldSize,
|
||||
DataExtraction dataExtraction = DE_BOUND);
|
||||
DataExtraction dataExtraction,
|
||||
ODBCMetaColumn::NumericConversion numericConversion ,
|
||||
bool isPostgres
|
||||
);
|
||||
/// Creates the Preparator.
|
||||
|
||||
Preparator(const Preparator& other);
|
||||
@ -416,6 +419,9 @@ public:
|
||||
DataExtraction getDataExtraction() const;
|
||||
/// Returns data extraction mode.
|
||||
|
||||
ODBCMetaColumn::NumericConversion numericConversion() const;
|
||||
/// Tells if numeric values are always converted to string
|
||||
|
||||
private:
|
||||
typedef std::vector<Poco::Any> ValueVec;
|
||||
typedef std::vector<SQLLEN> LengthVec;
|
||||
@ -429,7 +435,7 @@ private:
|
||||
void prepareImpl(std::size_t pos, const C* pVal = 0)
|
||||
/// Utility function to prepare Any and DynamicAny.
|
||||
{
|
||||
ODBCMetaColumn col(_rStmt, pos);
|
||||
ODBCMetaColumn col(_rStmt, pos, _numericConversion);
|
||||
|
||||
switch (col.type())
|
||||
{
|
||||
@ -681,6 +687,7 @@ private:
|
||||
mutable IndexMap _varLengthArrays;
|
||||
std::size_t _maxFieldSize;
|
||||
DataExtraction _dataExtraction;
|
||||
ODBCMetaColumn::NumericConversion _numericConversion;
|
||||
};
|
||||
|
||||
|
||||
@ -1267,6 +1274,12 @@ inline Poco::Any& Preparator::at(std::size_t pos)
|
||||
}
|
||||
|
||||
|
||||
inline ODBCMetaColumn::NumericConversion Preparator::numericConversion() const
|
||||
{
|
||||
return _numericConversion;
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
|
||||
|
||||
|
@ -45,6 +45,7 @@ class ODBC_API SessionImpl: public Poco::Data::AbstractSessionImpl<SessionImpl>
|
||||
{
|
||||
public:
|
||||
static const std::size_t ODBC_MAX_FIELD_SIZE = 1024u;
|
||||
static const char* const NUMERIC_CONVERSION_PROPERTY;
|
||||
|
||||
enum TransactionCapability
|
||||
{
|
||||
@ -167,10 +168,24 @@ public:
|
||||
Poco::Any dataTypeInfo(const std::string& rName="");
|
||||
/// Returns the data types information.
|
||||
|
||||
ODBCMetaColumn::NumericConversion numericConversion() const;
|
||||
/// Tells if NUMERIC values to be always
|
||||
/// converted to string
|
||||
|
||||
void setNumericConversion(ODBCMetaColumn::NumericConversion value);
|
||||
/// Sets flag to tell if NUMERIC values are always returned as
|
||||
/// string
|
||||
|
||||
private:
|
||||
void setDataTypeInfo(const std::string& rName, const Poco::Any& rValue);
|
||||
/// No-op. Throws InvalidAccessException.
|
||||
|
||||
void setNumericConversion(const std::string&, const Poco::Any& rValue);
|
||||
|
||||
Poco::Any numericConversion(const std::string& nm);
|
||||
|
||||
void init();
|
||||
|
||||
static const int FUNCTIONS = SQL_API_ODBC3_ALL_FUNCTIONS_SIZE;
|
||||
|
||||
void checkError(SQLRETURN rc, const std::string& msg="");
|
||||
@ -184,6 +199,7 @@ private:
|
||||
Poco::Any _maxFieldSize;
|
||||
bool _autoBind;
|
||||
bool _autoExtract;
|
||||
ODBCMetaColumn::NumericConversion _numericConversion;
|
||||
TypeInfo _dataTypes;
|
||||
char _canTransact;
|
||||
bool _inTransaction;
|
||||
@ -286,6 +302,30 @@ inline int SessionImpl::queryTimeout() const
|
||||
}
|
||||
|
||||
|
||||
inline ODBCMetaColumn::NumericConversion SessionImpl::numericConversion() const
|
||||
{
|
||||
return _numericConversion;
|
||||
}
|
||||
|
||||
|
||||
inline Poco::Any SessionImpl::numericConversion(const std::string&)
|
||||
{
|
||||
return numericConversion();
|
||||
}
|
||||
|
||||
|
||||
inline void SessionImpl::setNumericConversion(ODBCMetaColumn::NumericConversion value)
|
||||
{
|
||||
_numericConversion = value;
|
||||
}
|
||||
|
||||
|
||||
inline void SessionImpl::setNumericConversion(const std::string&, const Poco::Any& rValue)
|
||||
{
|
||||
setNumericConversion( Poco::AnyCast<ODBCMetaColumn::NumericConversion>(rValue) );
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
|
||||
|
||||
|
@ -23,8 +23,10 @@
|
||||
#include "Poco/Data/ODBC/ODBC.h"
|
||||
#include "Poco/NamedTuple.h"
|
||||
#include "Poco/DynamicAny.h"
|
||||
#include "Poco/Data/AbstractBinder.h"
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <typeinfo>
|
||||
#ifdef POCO_OS_FAMILY_WINDOWS
|
||||
#include <windows.h>
|
||||
#endif
|
||||
@ -71,6 +73,17 @@ public:
|
||||
SQLINTEGER,
|
||||
SQLSMALLINT> TypeInfoTup;
|
||||
typedef std::vector<TypeInfoTup> TypeInfoVec;
|
||||
typedef const std::type_info* TypeInfoPtr;
|
||||
|
||||
struct TypeInfoComp : public std::binary_function<TypeInfoPtr, TypeInfoPtr, bool>
|
||||
{
|
||||
bool operator()(const TypeInfoPtr& left, const TypeInfoPtr& right) const
|
||||
{ // apply operator< to operands
|
||||
return ( left->before( *right ) );
|
||||
}
|
||||
};
|
||||
|
||||
typedef std::map<TypeInfoPtr, SQLSMALLINT, TypeInfoComp> CppTypeInfoMap;
|
||||
|
||||
explicit TypeInfo(SQLHDBC* pHDBC=0);
|
||||
/// Creates the TypeInfo.
|
||||
@ -102,6 +115,13 @@ public:
|
||||
/// Prints all the types (as reported by the underlying database)
|
||||
/// to the supplied output stream.
|
||||
|
||||
SQLSMALLINT tryTypeidToCType(const std::type_info& ti, SQLSMALLINT defaultVal = SQL_C_TINYINT) const;
|
||||
/// try to find mapping of the given C++ typeid to the ODBC C-Type Code
|
||||
/// will return the defaultVal if no match is found
|
||||
|
||||
SQLSMALLINT nullDataType(const NullData val) const;
|
||||
/// Map the null value type to ODBC buffer type
|
||||
|
||||
private:
|
||||
void fillCTypes();
|
||||
void fillSQLTypes();
|
||||
@ -109,6 +129,7 @@ private:
|
||||
DataTypeMap _cDataTypes;
|
||||
DataTypeMap _sqlDataTypes;
|
||||
TypeInfoVec _typeInfo;
|
||||
CppTypeInfoMap _cppDataTypes;
|
||||
SQLHDBC* _pHDBC;
|
||||
};
|
||||
|
||||
|
@ -40,13 +40,6 @@ void makeUTF8(Poco::Buffer<SQLWCHAR>& buffer, SQLINTEGER length, SQLPOINTER pTar
|
||||
/// Utility function for conversion from UTF-16 to UTF-8.
|
||||
|
||||
|
||||
inline void makeUTF8(Poco::Buffer<SQLWCHAR>& buffer, int length, SQLPOINTER pTarget, SQLSMALLINT targetLength)
|
||||
/// Utility function for conversion from UTF-16 to UTF-8.
|
||||
{
|
||||
makeUTF8(buffer, length, pTarget, (SQLINTEGER) targetLength);
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
|
||||
|
||||
|
@ -27,17 +27,39 @@ namespace Poco {
|
||||
namespace Data {
|
||||
namespace ODBC {
|
||||
|
||||
static void getProp(const TypeInfo& dataTypes, SQLSMALLINT sqlType, size_t& val)
|
||||
{
|
||||
const std::string NM("COLUMN_SIZE");
|
||||
Poco::DynamicAny r;
|
||||
if (dataTypes.tryGetInfo(sqlType, NM, r))
|
||||
{
|
||||
long sz = r.convert<long>();
|
||||
// Postgres driver returns SQL_NO_TOTAL(-4) in some cases
|
||||
if (sz >= 0)
|
||||
val = static_cast<size_t>(sz);
|
||||
}
|
||||
}
|
||||
|
||||
Binder::Binder(const StatementHandle& rStmt,
|
||||
std::size_t maxFieldSize,
|
||||
Binder::ParameterBinding dataBinding,
|
||||
TypeInfo* pDataTypes):
|
||||
TypeInfo* pDataTypes,
|
||||
ODBCMetaColumn::NumericConversion numericConversion,
|
||||
bool insertOnly) :
|
||||
_rStmt(rStmt),
|
||||
_paramBinding(dataBinding),
|
||||
_pTypeInfo(pDataTypes),
|
||||
_paramSetSize(0),
|
||||
_maxFieldSize(maxFieldSize)
|
||||
_maxFieldSize(maxFieldSize),
|
||||
_maxCharColLength(1024),
|
||||
_maxWCharColLength(1024),
|
||||
_maxVarBinColSize(1024),
|
||||
_numericConversion(numericConversion),
|
||||
_insertOnly(insertOnly)
|
||||
{
|
||||
getProp(*_pTypeInfo, SQL_WVARCHAR, _maxWCharColLength);
|
||||
getProp(*_pTypeInfo, SQL_VARCHAR, _maxCharColLength);
|
||||
getProp(*_pTypeInfo, SQL_VARBINARY, _maxVarBinColSize);
|
||||
}
|
||||
|
||||
|
||||
@ -49,61 +71,110 @@ Binder::~Binder()
|
||||
|
||||
void Binder::freeMemory()
|
||||
{
|
||||
LengthPtrVec::iterator itLen = _lengthIndicator.begin();
|
||||
LengthPtrVec::iterator itLenEnd = _lengthIndicator.end();
|
||||
for(; itLen != itLenEnd; ++itLen) delete *itLen;
|
||||
if (_lengthIndicator.size() > 0)
|
||||
{
|
||||
LengthPtrVec::iterator itLen = _lengthIndicator.begin();
|
||||
LengthPtrVec::iterator itLenEnd = _lengthIndicator.end();
|
||||
for (; itLen != itLenEnd; ++itLen) delete *itLen;
|
||||
}
|
||||
|
||||
LengthVecVec::iterator itVecLen = _vecLengthIndicator.begin();
|
||||
LengthVecVec::iterator itVecLenEnd = _vecLengthIndicator.end();
|
||||
for (; itVecLen != itVecLenEnd; ++itVecLen) delete *itVecLen;
|
||||
if (_vecLengthIndicator.size() > 0)
|
||||
{
|
||||
LengthVecVec::iterator itVecLen = _vecLengthIndicator.begin();
|
||||
LengthVecVec::iterator itVecLenEnd = _vecLengthIndicator.end();
|
||||
for (; itVecLen != itVecLenEnd; ++itVecLen) delete *itVecLen;
|
||||
}
|
||||
|
||||
TimeMap::iterator itT = _times.begin();
|
||||
TimeMap::iterator itTEnd = _times.end();
|
||||
for(; itT != itTEnd; ++itT) delete itT->first;
|
||||
if (_times.size() > 0)
|
||||
{
|
||||
TimeMap::iterator itT = _times.begin();
|
||||
TimeMap::iterator itTEnd = _times.end();
|
||||
for (; itT != itTEnd; ++itT) delete itT->first;
|
||||
}
|
||||
|
||||
DateMap::iterator itD = _dates.begin();
|
||||
DateMap::iterator itDEnd = _dates.end();
|
||||
for(; itD != itDEnd; ++itD) delete itD->first;
|
||||
if (_dates.size() > 0)
|
||||
{
|
||||
DateMap::iterator itD = _dates.begin();
|
||||
DateMap::iterator itDEnd = _dates.end();
|
||||
for (; itD != itDEnd; ++itD) delete itD->first;
|
||||
}
|
||||
|
||||
TimestampMap::iterator itTS = _timestamps.begin();
|
||||
TimestampMap::iterator itTSEnd = _timestamps.end();
|
||||
for(; itTS != itTSEnd; ++itTS) delete itTS->first;
|
||||
if (_timestamps.size() > 0)
|
||||
{
|
||||
TimestampMap::iterator itTS = _timestamps.begin();
|
||||
TimestampMap::iterator itTSEnd = _timestamps.end();
|
||||
for (; itTS != itTSEnd; ++itTS) delete itTS->first;
|
||||
}
|
||||
|
||||
StringMap::iterator itStr = _strings.begin();
|
||||
StringMap::iterator itStrEnd = _strings.end();
|
||||
for(; itStr != itStrEnd; ++itStr) std::free(itStr->first);
|
||||
if (_strings.size() > 0)
|
||||
{
|
||||
StringMap::iterator itStr = _strings.begin();
|
||||
StringMap::iterator itStrEnd = _strings.end();
|
||||
for (; itStr != itStrEnd; ++itStr) std::free(itStr->first);
|
||||
}
|
||||
|
||||
CharPtrVec::iterator itChr = _charPtrs.begin();
|
||||
CharPtrVec::iterator endChr = _charPtrs.end();
|
||||
for (; itChr != endChr; ++itChr) std::free(*itChr);
|
||||
if (_charPtrs.size() > 0)
|
||||
{
|
||||
CharPtrVec::iterator itChr = _charPtrs.begin();
|
||||
CharPtrVec::iterator endChr = _charPtrs.end();
|
||||
for (; itChr != endChr; ++itChr) std::free(*itChr);
|
||||
}
|
||||
|
||||
UTF16CharPtrVec::iterator itUTF16Chr = _utf16CharPtrs.begin();
|
||||
UTF16CharPtrVec::iterator endUTF16Chr = _utf16CharPtrs.end();
|
||||
for (; itUTF16Chr != endUTF16Chr; ++itUTF16Chr) std::free(*itUTF16Chr);
|
||||
if (_utf16CharPtrs.size() > 0)
|
||||
{
|
||||
UTF16CharPtrVec::iterator itUTF16Chr = _utf16CharPtrs.begin();
|
||||
UTF16CharPtrVec::iterator endUTF16Chr = _utf16CharPtrs.end();
|
||||
for (; itUTF16Chr != endUTF16Chr; ++itUTF16Chr) std::free(*itUTF16Chr);
|
||||
}
|
||||
|
||||
BoolPtrVec::iterator itBool = _boolPtrs.begin();
|
||||
BoolPtrVec::iterator endBool = _boolPtrs.end();
|
||||
for (; itBool != endBool; ++itBool) delete [] *itBool;
|
||||
if (_boolPtrs.size() > 0)
|
||||
{
|
||||
BoolPtrVec::iterator itBool = _boolPtrs.begin();
|
||||
BoolPtrVec::iterator endBool = _boolPtrs.end();
|
||||
for (; itBool != endBool; ++itBool) delete[] * itBool;
|
||||
}
|
||||
|
||||
DateVecVec::iterator itDateVec = _dateVecVec.begin();
|
||||
DateVecVec::iterator itDateVecEnd = _dateVecVec.end();
|
||||
for (; itDateVec != itDateVecEnd; ++itDateVec) delete *itDateVec;
|
||||
if (_dateVecVec.size() > 0)
|
||||
{
|
||||
DateVecVec::iterator itDateVec = _dateVecVec.begin();
|
||||
DateVecVec::iterator itDateVecEnd = _dateVecVec.end();
|
||||
for (; itDateVec != itDateVecEnd; ++itDateVec) delete *itDateVec;
|
||||
}
|
||||
|
||||
TimeVecVec::iterator itTimeVec = _timeVecVec.begin();
|
||||
TimeVecVec::iterator itTimeVecEnd = _timeVecVec.end();
|
||||
for (; itTimeVec != itTimeVecEnd; ++itTimeVec) delete *itTimeVec;
|
||||
if (_timeVecVec.size() > 0)
|
||||
{
|
||||
TimeVecVec::iterator itTimeVec = _timeVecVec.begin();
|
||||
TimeVecVec::iterator itTimeVecEnd = _timeVecVec.end();
|
||||
for (; itTimeVec != itTimeVecEnd; ++itTimeVec) delete *itTimeVec;
|
||||
}
|
||||
|
||||
DateTimeVecVec::iterator itDateTimeVec = _dateTimeVecVec.begin();
|
||||
DateTimeVecVec::iterator itDateTimeVecEnd = _dateTimeVecVec.end();
|
||||
for (; itDateTimeVec != itDateTimeVecEnd; ++itDateTimeVec) delete *itDateTimeVec;
|
||||
if (_dateTimeVecVec.size() > 0)
|
||||
{
|
||||
DateTimeVecVec::iterator itDateTimeVec = _dateTimeVecVec.begin();
|
||||
DateTimeVecVec::iterator itDateTimeVecEnd = _dateTimeVecVec.end();
|
||||
for (; itDateTimeVec != itDateTimeVecEnd; ++itDateTimeVec) delete *itDateTimeVec;
|
||||
}
|
||||
|
||||
if (_containers.size() > 0)
|
||||
{
|
||||
AnyPtrVecVec::iterator itAnyVec = _containers.begin();
|
||||
AnyPtrVecVec::iterator itAnyVecEnd = _containers.end();
|
||||
for (; itAnyVec != itAnyVecEnd; ++itAnyVec)
|
||||
{
|
||||
AnyPtrVec::iterator b = itAnyVec->begin();
|
||||
AnyPtrVec::iterator e = itAnyVec->end();
|
||||
for (; b != e; ++b) delete *b;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const std::string& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const std::string& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
SQLPOINTER pVal = 0;
|
||||
SQLINTEGER size = (SQLINTEGER) val.size();
|
||||
|
||||
SQLSMALLINT sqType = SQL_LONGVARCHAR;
|
||||
if (isOutBound(dir))
|
||||
{
|
||||
getColumnOrParameterSize(pos, size);
|
||||
@ -111,16 +182,20 @@ void Binder::bind(std::size_t pos, const std::string& val, Direction dir)
|
||||
pVal = (SQLPOINTER) pChar;
|
||||
_outParams.insert(ParamMap::value_type(pVal, size));
|
||||
_strings.insert(StringMap::value_type(pChar, const_cast<std::string*>(&val)));
|
||||
if (size < _maxCharColLength) sqType = SQL_VARCHAR;
|
||||
}
|
||||
else if (isInBound(dir))
|
||||
{
|
||||
pVal = (SQLPOINTER) val.c_str();
|
||||
_inParams.insert(ParamMap::value_type(pVal, size));
|
||||
if (size < _maxCharColLength) sqType = SQL_VARCHAR;
|
||||
}
|
||||
else
|
||||
throw InvalidArgumentException("Parameter must be [in] OR [out] bound.");
|
||||
|
||||
SQLLEN* pLenIn = new SQLLEN;
|
||||
if (isOutBound(dir) && nullCb.defined())
|
||||
_nullCbMap.insert(NullCbMap::value_type( pLenIn, nullCb) );
|
||||
SQLINTEGER colSize = 0;
|
||||
SQLSMALLINT decDigits = 0;
|
||||
getColSizeAndPrecision(pos, SQL_C_CHAR, colSize, decDigits);
|
||||
@ -135,7 +210,7 @@ void Binder::bind(std::size_t pos, const std::string& val, Direction dir)
|
||||
(SQLUSMALLINT) pos + 1,
|
||||
toODBCDirection(dir),
|
||||
SQL_C_CHAR,
|
||||
SQL_LONGVARCHAR,
|
||||
sqType,
|
||||
(SQLUINTEGER) colSize,
|
||||
0,
|
||||
pVal,
|
||||
@ -147,13 +222,13 @@ void Binder::bind(std::size_t pos, const std::string& val, Direction dir)
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const UTF16String& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const UTF16String& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
typedef UTF16String::value_type CharT;
|
||||
|
||||
SQLPOINTER pVal = 0;
|
||||
SQLINTEGER size = (SQLINTEGER)(val.size() * sizeof(CharT));
|
||||
|
||||
SQLSMALLINT sqType = (val.size() < _maxWCharColLength) ? SQL_WVARCHAR : SQL_WLONGVARCHAR;
|
||||
if (isOutBound(dir))
|
||||
{
|
||||
getColumnOrParameterSize(pos, size);
|
||||
@ -171,6 +246,9 @@ void Binder::bind(std::size_t pos, const UTF16String& val, Direction dir)
|
||||
throw InvalidArgumentException("Parameter must be [in] OR [out] bound.");
|
||||
|
||||
SQLLEN* pLenIn = new SQLLEN;
|
||||
if (isOutBound(dir) && nullCb.defined())
|
||||
_nullCbMap.insert(NullCbMap::value_type(pLenIn, nullCb));
|
||||
|
||||
SQLINTEGER colSize = 0;
|
||||
SQLSMALLINT decDigits = 0;
|
||||
getColSizeAndPrecision(pos, SQL_C_WCHAR, colSize, decDigits);
|
||||
@ -187,7 +265,7 @@ void Binder::bind(std::size_t pos, const UTF16String& val, Direction dir)
|
||||
(SQLUSMALLINT)pos + 1,
|
||||
toODBCDirection(dir),
|
||||
SQL_C_WCHAR,
|
||||
SQL_WLONGVARCHAR,
|
||||
sqType,
|
||||
(SQLUINTEGER)colSize,
|
||||
0,
|
||||
pVal,
|
||||
@ -199,14 +277,14 @@ void Binder::bind(std::size_t pos, const UTF16String& val, Direction dir)
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Date& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Date& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
SQLINTEGER size = (SQLINTEGER) sizeof(SQL_DATE_STRUCT);
|
||||
SQLLEN* pLenIn = new SQLLEN;
|
||||
*pLenIn = size;
|
||||
*pLenIn = SQL_NTS; // microsoft example does that, otherwise no null indicator is returned
|
||||
|
||||
_lengthIndicator.push_back(pLenIn);
|
||||
|
||||
if (isOutBound(dir) && nullCb.defined())
|
||||
_nullCbMap.insert(NullCbMap::value_type(pLenIn, nullCb));
|
||||
SQL_DATE_STRUCT* pDS = new SQL_DATE_STRUCT;
|
||||
Utility::dateSync(*pDS, val);
|
||||
|
||||
@ -232,11 +310,12 @@ void Binder::bind(std::size_t pos, const Date& val, Direction dir)
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Time& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Time& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
SQLINTEGER size = (SQLINTEGER) sizeof(SQL_TIME_STRUCT);
|
||||
SQLLEN* pLenIn = new SQLLEN;
|
||||
*pLenIn = size;
|
||||
*pLenIn = SQL_NTS; // microsoft example does that, otherwise no null indicator is returned
|
||||
if (isOutBound(dir) && nullCb.defined())
|
||||
_nullCbMap.insert(NullCbMap::value_type(pLenIn, nullCb));
|
||||
|
||||
_lengthIndicator.push_back(pLenIn);
|
||||
|
||||
@ -265,11 +344,12 @@ void Binder::bind(std::size_t pos, const Time& val, Direction dir)
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const Poco::DateTime& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const Poco::DateTime& val, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
SQLINTEGER size = (SQLINTEGER) sizeof(SQL_TIMESTAMP_STRUCT);
|
||||
SQLLEN* pLenIn = new SQLLEN;
|
||||
*pLenIn = size;
|
||||
*pLenIn = SQL_NTS; // microsoft example does that, otherwise no null indicator is returned
|
||||
if (isOutBound(dir) && nullCb.defined())
|
||||
_nullCbMap.insert(NullCbMap::value_type(pLenIn, nullCb));
|
||||
|
||||
_lengthIndicator.push_back(pLenIn);
|
||||
|
||||
@ -298,7 +378,7 @@ void Binder::bind(std::size_t pos, const Poco::DateTime& val, Direction dir)
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const NullData& val, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const NullData& val, Direction dir, const std::type_info& bindType)
|
||||
{
|
||||
if (isOutBound(dir) || !isInBound(dir))
|
||||
throw NotImplementedException("NULL parameter type can only be inbound.");
|
||||
@ -312,13 +392,16 @@ void Binder::bind(std::size_t pos, const NullData& val, Direction dir)
|
||||
|
||||
SQLINTEGER colSize = 0;
|
||||
SQLSMALLINT decDigits = 0;
|
||||
getColSizeAndPrecision(pos, SQL_C_STINYINT, colSize, decDigits);
|
||||
|
||||
const SQLSMALLINT colType = (bindType == typeid(void) || bindType == typeid(NullData) || bindType == typeid(NullType)) ?
|
||||
_pTypeInfo->nullDataType(val) : _pTypeInfo->tryTypeidToCType(bindType, SQL_C_TINYINT);
|
||||
getColSizeAndPrecision(pos, colType, colSize, decDigits);
|
||||
|
||||
if (Utility::isError(SQLBindParameter(_rStmt,
|
||||
(SQLUSMALLINT) pos + 1,
|
||||
SQL_PARAM_INPUT,
|
||||
SQL_C_STINYINT,
|
||||
Utility::sqlDataType(SQL_C_STINYINT),
|
||||
colType,
|
||||
Utility::sqlDataType(colType),
|
||||
colSize,
|
||||
decDigits,
|
||||
0,
|
||||
@ -342,7 +425,7 @@ std::size_t Binder::parameterSize(SQLPOINTER pAddr) const
|
||||
}
|
||||
|
||||
|
||||
void Binder::bind(std::size_t pos, const char* const &pVal, Direction dir)
|
||||
void Binder::bind(std::size_t pos, const char* const &pVal, Direction dir, const WhenNullCb& nullCb)
|
||||
{
|
||||
throw NotImplementedException("char* binding not implemented, Use std::string instead.");
|
||||
}
|
||||
@ -364,6 +447,7 @@ SQLSMALLINT Binder::toODBCDirection(Direction dir) const
|
||||
|
||||
void Binder::synchronize()
|
||||
{
|
||||
|
||||
if (_dates.size())
|
||||
{
|
||||
DateMap::iterator it = _dates.begin();
|
||||
@ -395,26 +479,52 @@ void Binder::synchronize()
|
||||
for(; it != end; ++it)
|
||||
it->second->assign(it->first, std::strlen(it->first));
|
||||
}
|
||||
|
||||
if (_nullCbMap.size())
|
||||
{
|
||||
NullCbMap::iterator it = _nullCbMap.begin();
|
||||
NullCbMap::iterator end = _nullCbMap.end();
|
||||
for (; it != end; ++it)
|
||||
if (*it->first == SQL_NULL_DATA) it->second.onNull();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Binder::reset()
|
||||
{
|
||||
freeMemory();
|
||||
LengthPtrVec().swap(_lengthIndicator);
|
||||
_inParams.clear();
|
||||
_outParams.clear();
|
||||
_dates.clear();
|
||||
_times.clear();
|
||||
_timestamps.clear();
|
||||
_strings.clear();
|
||||
_dateVecVec.clear();
|
||||
_timeVecVec.clear();
|
||||
_dateTimeVecVec.clear();
|
||||
_charPtrs.clear();
|
||||
_boolPtrs.clear();
|
||||
_containers.clear();
|
||||
|
||||
if (_lengthIndicator.size() > 0)
|
||||
LengthPtrVec().swap(_lengthIndicator);
|
||||
if (_inParams.size() > 0)
|
||||
_inParams.clear();
|
||||
if (_outParams.size() > 0)
|
||||
_outParams.clear();
|
||||
if (_dates.size() > 0)
|
||||
_dates.clear();
|
||||
if (_times.size() > 0)
|
||||
_times.clear();
|
||||
if (_timestamps.size() > 0)
|
||||
_timestamps.clear();
|
||||
if (_strings.size() > 0)
|
||||
_strings.clear();
|
||||
if (_dateVecVec.size() > 0)
|
||||
_dateVecVec.clear();
|
||||
if (_timeVecVec.size() > 0)
|
||||
_timeVecVec.clear();
|
||||
if (_dateTimeVecVec.size() > 0)
|
||||
_dateTimeVecVec.clear();
|
||||
if (_charPtrs.size() > 0)
|
||||
_charPtrs.clear();
|
||||
if (_boolPtrs.size() > 0)
|
||||
_boolPtrs.clear();
|
||||
if (_containers.size() > 0)
|
||||
_containers.clear();
|
||||
if (_nullCbMap.size() > 0)
|
||||
_nullCbMap.clear();
|
||||
_paramSetSize = 0;
|
||||
if (!_insertOnly)
|
||||
_parameters.clear();
|
||||
}
|
||||
|
||||
|
||||
@ -425,11 +535,11 @@ void Binder::getColSizeAndPrecision(std::size_t pos,
|
||||
{
|
||||
// Not all drivers are equally willing to cooperate in this matter.
|
||||
// Hence the funky flow control.
|
||||
DynamicAny tmp;
|
||||
bool found(false);
|
||||
|
||||
if (_pTypeInfo)
|
||||
{
|
||||
found = _pTypeInfo->tryGetInfo(cDataType, "COLUMN_SIZE", tmp);
|
||||
DynamicAny tmp;
|
||||
bool found = _pTypeInfo->tryGetInfo(cDataType, "COLUMN_SIZE", tmp);
|
||||
if (found) colSize = tmp;
|
||||
found = _pTypeInfo->tryGetInfo(cDataType, "MINIMUM_SCALE", tmp);
|
||||
if (found)
|
||||
@ -439,27 +549,34 @@ void Binder::getColSizeAndPrecision(std::size_t pos,
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
if (_parameters.size() <= pos || !_parameters[pos].defined())
|
||||
{
|
||||
Parameter p(_rStmt, pos);
|
||||
colSize = (SQLINTEGER) p.columnSize();
|
||||
decDigits = (SQLSMALLINT) p.decimalDigits();
|
||||
return;
|
||||
} catch (StatementException&) { }
|
||||
if (_parameters.size() <= pos)
|
||||
_parameters.resize(pos + 1);
|
||||
_parameters[pos] = ParamDescriptor(0, cDataType, 0);
|
||||
|
||||
try
|
||||
{
|
||||
ODBCMetaColumn c(_rStmt, pos);
|
||||
colSize = (SQLINTEGER) c.length();
|
||||
decDigits = (SQLSMALLINT) c.precision();
|
||||
return;
|
||||
} catch (StatementException&) { }
|
||||
try
|
||||
{
|
||||
{
|
||||
Parameter p(_rStmt, pos);
|
||||
_parameters[pos] = ParamDescriptor(static_cast<SQLINTEGER>(p.columnSize()), cDataType, static_cast<SQLSMALLINT>(p.decimalDigits()));
|
||||
}
|
||||
}
|
||||
catch (StatementException&)
|
||||
{
|
||||
try
|
||||
{
|
||||
ODBCMetaColumn c(_rStmt, pos, _numericConversion);
|
||||
_parameters[pos] = ParamDescriptor(static_cast<SQLINTEGER>(c.length()), cDataType, static_cast<SQLSMALLINT>(c.precision()));
|
||||
}
|
||||
catch (StatementException&) {}
|
||||
}
|
||||
}
|
||||
|
||||
// no success, set to zero and hope for the best
|
||||
// we may have no success, so use zeros and hope for the best
|
||||
// (most drivers do not require these most of the times anyway)
|
||||
colSize = 0;
|
||||
decDigits = 0;
|
||||
return;
|
||||
colSize = _parameters[pos].colSize;
|
||||
decDigits = _parameters[pos].decDigits;
|
||||
}
|
||||
|
||||
|
||||
@ -470,7 +587,7 @@ void Binder::getColumnOrParameterSize(std::size_t pos, SQLINTEGER& size)
|
||||
|
||||
try
|
||||
{
|
||||
ODBCMetaColumn col(_rStmt, pos);
|
||||
ODBCMetaColumn col(_rStmt, pos, _numericConversion);
|
||||
colSize = col.length();
|
||||
}
|
||||
catch (StatementException&) { }
|
||||
@ -486,10 +603,10 @@ void Binder::getColumnOrParameterSize(std::size_t pos, SQLINTEGER& size)
|
||||
//On Linux, PostgreSQL driver segfaults on SQLGetDescField, so this is disabled for now
|
||||
#ifdef POCO_OS_FAMILY_WINDOWS
|
||||
SQLHDESC hIPD = 0;
|
||||
if (!Utility::isError(SQLGetStmtAttr(_rStmt, SQL_ATTR_IMP_PARAM_DESC, &hIPD, SQL_IS_POINTER, 0)))
|
||||
if (!Utility::isError(Poco::Data::ODBC::SQLGetStmtAttr(_rStmt, SQL_ATTR_IMP_PARAM_DESC, &hIPD, SQL_IS_POINTER, 0)))
|
||||
{
|
||||
SQLUINTEGER sz = 0;
|
||||
if (!Utility::isError(SQLGetDescField(hIPD, (SQLSMALLINT) pos + 1, SQL_DESC_LENGTH, &sz, SQL_IS_UINTEGER, 0)) &&
|
||||
if (!Utility::isError(Poco::Data::ODBC::SQLGetDescField(hIPD, (SQLSMALLINT)pos + 1, SQL_DESC_LENGTH, &sz, SQL_IS_UINTEGER, 0)) &&
|
||||
sz > 0)
|
||||
{
|
||||
size = sz;
|
||||
|
@ -25,12 +25,11 @@ namespace ODBC {
|
||||
|
||||
|
||||
ConnectionHandle::ConnectionHandle(EnvironmentHandle* pEnvironment):
|
||||
_pEnvironment(pEnvironment ? pEnvironment : new EnvironmentHandle),
|
||||
_hdbc(SQL_NULL_HDBC),
|
||||
_ownsEnvironment(pEnvironment ? false : true)
|
||||
_environment(pEnvironment ? &pEnvironment->handle() : 0),
|
||||
_hdbc(SQL_NULL_HDBC)
|
||||
{
|
||||
if (Utility::isError(SQLAllocHandle(SQL_HANDLE_DBC,
|
||||
_pEnvironment->handle(),
|
||||
_environment.handle(),
|
||||
&_hdbc)))
|
||||
{
|
||||
throw ODBCException("Could not allocate connection handle.");
|
||||
@ -42,12 +41,14 @@ ConnectionHandle::~ConnectionHandle()
|
||||
{
|
||||
try
|
||||
{
|
||||
SQLDisconnect(_hdbc);
|
||||
SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_DBC, _hdbc);
|
||||
if (_hdbc != SQL_NULL_HDBC)
|
||||
{
|
||||
SQLDisconnect(_hdbc);
|
||||
SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_DBC, _hdbc);
|
||||
_hdbc = SQL_NULL_HDBC;
|
||||
|
||||
if (_ownsEnvironment) delete _pEnvironment;
|
||||
|
||||
poco_assert (!Utility::isError(rc));
|
||||
poco_assert(!Utility::isError(rc));
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
@ -24,27 +24,46 @@ namespace Data {
|
||||
namespace ODBC {
|
||||
|
||||
|
||||
EnvironmentHandle::EnvironmentHandle(): _henv(SQL_NULL_HENV)
|
||||
EnvironmentHandle::EnvironmentHandle(): _henv(SQL_NULL_HENV),
|
||||
_isOwner(false)
|
||||
{
|
||||
if (Utility::isError(SQLAllocHandle(SQL_HANDLE_ENV,
|
||||
SQL_NULL_HANDLE,
|
||||
&_henv)) ||
|
||||
Utility::isError(SQLSetEnvAttr(_henv,
|
||||
SQL_ATTR_ODBC_VERSION,
|
||||
(SQLPOINTER) SQL_OV_ODBC3,
|
||||
0)))
|
||||
init();
|
||||
}
|
||||
|
||||
EnvironmentHandle::EnvironmentHandle(const SQLHENV* henv) : _henv(SQL_NULL_HENV),
|
||||
_isOwner(false)
|
||||
{
|
||||
if (!henv || *henv == SQL_NULL_HENV)
|
||||
init();
|
||||
else
|
||||
_henv = *henv;
|
||||
}
|
||||
|
||||
void EnvironmentHandle::init()
|
||||
{
|
||||
if (Utility::isError(SQLAllocHandle(SQL_HANDLE_ENV,
|
||||
SQL_NULL_HANDLE,
|
||||
&_henv)) ||
|
||||
Utility::isError(SQLSetEnvAttr(_henv,
|
||||
SQL_ATTR_ODBC_VERSION,
|
||||
(SQLPOINTER)SQL_OV_ODBC3,
|
||||
0)))
|
||||
{
|
||||
throw ODBCException("Could not initialize environment.");
|
||||
}
|
||||
_isOwner = true;
|
||||
}
|
||||
|
||||
|
||||
EnvironmentHandle::~EnvironmentHandle()
|
||||
{
|
||||
try
|
||||
{
|
||||
SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_ENV, _henv);
|
||||
poco_assert (!Utility::isError(rc));
|
||||
if (_isOwner && _henv != SQL_NULL_HENV)
|
||||
{
|
||||
SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_ENV, _henv);
|
||||
_henv = SQL_NULL_HENV;
|
||||
poco_assert(!Utility::isError(rc));
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
@ -352,18 +352,37 @@ bool Extractor::extractManualImpl<UTF16String>(std::size_t pos, UTF16String& val
|
||||
|
||||
|
||||
template<>
|
||||
bool Extractor::extractManualImpl<Poco::Data::CLOB>(std::size_t pos,
|
||||
Poco::Data::CLOB& val,
|
||||
bool Extractor::extractManualImpl<Poco::Data::CLOB>(std::size_t pos,
|
||||
Poco::Data::CLOB& val,
|
||||
SQLSMALLINT cType)
|
||||
{
|
||||
return extractManualLOBImpl(pos, val, cType);
|
||||
}
|
||||
|
||||
|
||||
template<>
|
||||
bool Extractor::extractManualImpl<Poco::Data::BLOB>(std::size_t pos,
|
||||
Poco::Data::BLOB& val,
|
||||
SQLSMALLINT cType)
|
||||
{
|
||||
return extractManualLOBImpl(pos, val, cType);
|
||||
}
|
||||
|
||||
|
||||
template<typename T>
|
||||
bool Extractor::extractManualLOBImpl(std::size_t pos,
|
||||
Poco::Data::LOB<T>& val,
|
||||
SQLSMALLINT cType)
|
||||
{
|
||||
std::size_t maxSize = _pPreparator->getMaxFieldSize();
|
||||
std::size_t fetchedSize = 0;
|
||||
const int bufSize = CHUNK_SIZE;
|
||||
std::size_t fetchedSize = bufSize;
|
||||
std::size_t totalSize = 0;
|
||||
|
||||
SQLLEN len;
|
||||
const int bufSize = CHUNK_SIZE;
|
||||
Poco::Buffer<char> apChar(bufSize);
|
||||
char* pChar = apChar.begin();
|
||||
|
||||
Poco::Buffer<T> apChar(bufSize);
|
||||
T* pChar = apChar.begin();
|
||||
SQLRETURN rc = 0;
|
||||
|
||||
val.clear();
|
||||
@ -371,7 +390,9 @@ bool Extractor::extractManualImpl<Poco::Data::CLOB>(std::size_t pos,
|
||||
|
||||
do
|
||||
{
|
||||
std::memset(pChar, 0, bufSize);
|
||||
// clear out the latest data in the buffer
|
||||
if (fetchedSize > 0)
|
||||
std::memset(pChar, 0, fetchedSize);
|
||||
len = 0;
|
||||
rc = SQLGetData(_rStmt,
|
||||
(SQLUSMALLINT) pos + 1,
|
||||
@ -394,7 +415,7 @@ bool Extractor::extractManualImpl<Poco::Data::CLOB>(std::size_t pos,
|
||||
if (SQL_NO_DATA == rc || !len)
|
||||
break;
|
||||
|
||||
fetchedSize = len > CHUNK_SIZE ? CHUNK_SIZE : len;
|
||||
fetchedSize = len > bufSize ? bufSize : len;
|
||||
totalSize += fetchedSize;
|
||||
if (totalSize <= maxSize)
|
||||
val.appendRaw(pChar, fetchedSize);
|
||||
|
@ -23,9 +23,10 @@ namespace Data {
|
||||
namespace ODBC {
|
||||
|
||||
|
||||
ODBCMetaColumn::ODBCMetaColumn(const StatementHandle& rStmt, std::size_t position) :
|
||||
ODBCMetaColumn::ODBCMetaColumn(const StatementHandle& rStmt, std::size_t position, NumericConversion numericConversion) :
|
||||
MetaColumn(position),
|
||||
_rStmt(rStmt)
|
||||
_rStmt(rStmt),
|
||||
_numericConversion(numericConversion)
|
||||
{
|
||||
init();
|
||||
}
|
||||
@ -92,6 +93,7 @@ void ODBCMetaColumn::init()
|
||||
case SQL_WCHAR:
|
||||
case SQL_WVARCHAR:
|
||||
case SQL_WLONGVARCHAR:
|
||||
case -350: // IBM DB2 CLOB, which long unicode string
|
||||
setType(MetaColumn::FDT_WSTRING); break;
|
||||
|
||||
case SQL_TINYINT:
|
||||
@ -112,12 +114,46 @@ void ODBCMetaColumn::init()
|
||||
|
||||
case SQL_NUMERIC:
|
||||
case SQL_DECIMAL:
|
||||
if (0 == _columnDesc.decimalDigits)
|
||||
setType(MetaColumn::FDT_INT32);
|
||||
else
|
||||
setType(MetaColumn::FDT_DOUBLE);
|
||||
|
||||
break;
|
||||
{
|
||||
bool toString = false;
|
||||
switch (_numericConversion)
|
||||
{
|
||||
case NC_BEST_FIT:
|
||||
case NC_BEST_FIT_DBL_LIMIT:
|
||||
if (0 == _columnDesc.decimalDigits)
|
||||
{
|
||||
if (_columnDesc.size <= 9)
|
||||
setType(MetaColumn::FDT_INT32);
|
||||
else if (_columnDesc.size <= 18)
|
||||
setType(MetaColumn::FDT_INT64);
|
||||
else if (_numericConversion != NC_BEST_FIT_DBL_LIMIT)
|
||||
toString = true;
|
||||
else
|
||||
setType(MetaColumn::FDT_DOUBLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
// we can't have more than 16 digits in double, but we may be asked to
|
||||
if (_columnDesc.size > 16 && _numericConversion != NC_BEST_FIT_DBL_LIMIT)
|
||||
toString = true;
|
||||
else
|
||||
setType(MetaColumn::FDT_DOUBLE);
|
||||
}
|
||||
break;
|
||||
case NC_FORCE_STRING:
|
||||
toString = true;
|
||||
}
|
||||
if (toString)
|
||||
{
|
||||
setLength(_columnDesc.size + 4);
|
||||
#if defined(UNICODE)
|
||||
setType(MetaColumn::FDT_WSTRING);
|
||||
#else
|
||||
setType(MetaColumn::FDT_STRING);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SQL_REAL:
|
||||
setType(MetaColumn::FDT_FLOAT); break;
|
||||
@ -126,8 +162,12 @@ void ODBCMetaColumn::init()
|
||||
case SQL_VARBINARY:
|
||||
case SQL_LONGVARBINARY:
|
||||
case -98:// IBM DB2 non-standard type
|
||||
case -370: // IBM DB2 XML, documentation advises to bind it as BLOB, not CLOB
|
||||
setType(MetaColumn::FDT_BLOB); break;
|
||||
|
||||
|
||||
case -99: // IBM DB2 CLOB
|
||||
setType(MetaColumn::FDT_CLOB); break;
|
||||
|
||||
case SQL_TYPE_DATE:
|
||||
setType(MetaColumn::FDT_DATE); break;
|
||||
|
||||
|
@ -46,7 +46,10 @@ ODBCStatementImpl::ODBCStatementImpl(SessionImpl& rSession):
|
||||
_nextResponse(0),
|
||||
_prepared(false),
|
||||
_affectedRowCount(0),
|
||||
_canCompile(true)
|
||||
_canCompile(true),
|
||||
_numericConversion(rSession.numericConversion()),
|
||||
_isPostgres(false),
|
||||
_insertHint(false)
|
||||
{
|
||||
int queryTimeout = rSession.queryTimeout();
|
||||
if (queryTimeout >= 0)
|
||||
@ -57,6 +60,15 @@ ODBCStatementImpl::ODBCStatementImpl(SessionImpl& rSession):
|
||||
(SQLPOINTER) uqt,
|
||||
0);
|
||||
}
|
||||
SQLSMALLINT t;
|
||||
SQLRETURN r = Poco::Data::ODBC::SQLGetInfo(_rConnection, SQL_DRIVER_NAME, NULL, 0, &t);
|
||||
if (!Utility::isError(r) && t > 0)
|
||||
{
|
||||
std::string serverString;
|
||||
serverString.resize(static_cast<std::size_t>(t) + 2);
|
||||
r = Poco::Data::ODBC::SQLGetInfo(_rConnection, SQL_DRIVER_NAME, &serverString[0], SQLSMALLINT((serverString.length() - 1) * sizeof(serverString[0])), &t);
|
||||
_isPostgres = (!Utility::isError(r) && Poco::toUpperInPlace(serverString).find("PSQLODBC") == 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -95,14 +107,15 @@ void ODBCStatementImpl::compileImpl()
|
||||
pDT = AnyCast<TypeInfo*>(dti);
|
||||
}catch (NotSupportedException&) { }
|
||||
|
||||
std::size_t maxFieldSize = AnyCast<std::size_t>(session().getProperty("maxFieldSize"));
|
||||
const std::size_t maxFieldSize = AnyCast<std::size_t>(session().getProperty("maxFieldSize"));
|
||||
const ODBCMetaColumn::NumericConversion numericConversion = dynamic_cast<SessionImpl&>(session()).numericConversion();
|
||||
|
||||
_pBinder = new Binder(_stmt, maxFieldSize, bind, pDT);
|
||||
_pBinder = new Binder(_stmt, maxFieldSize, bind, pDT, numericConversion, _insertHint);
|
||||
|
||||
makeInternalExtractors();
|
||||
doPrepare();
|
||||
|
||||
_canCompile = false;
|
||||
_canCompile = false;
|
||||
}
|
||||
|
||||
|
||||
@ -112,7 +125,7 @@ void ODBCStatementImpl::makeInternalExtractors()
|
||||
{
|
||||
try
|
||||
{
|
||||
fillColumns();
|
||||
fillColumns(currentDataSet());
|
||||
} catch (DataFormatException&)
|
||||
{
|
||||
if (isStoredProcedure()) return;
|
||||
@ -125,25 +138,34 @@ void ODBCStatementImpl::makeInternalExtractors()
|
||||
}
|
||||
|
||||
|
||||
void ODBCStatementImpl::addPreparator()
|
||||
bool ODBCStatementImpl::addPreparator(bool addAlways)
|
||||
{
|
||||
Preparator* prep = 0;
|
||||
if (0 == _preparations.size())
|
||||
{
|
||||
std::string statement(toString());
|
||||
if (statement.empty())
|
||||
throw ODBCException("Empty statements are illegal");
|
||||
|
||||
Preparator::DataExtraction ext = session().getFeature("autoExtract") ?
|
||||
Preparator::DataExtraction ext = session().getFeature("autoExtract") ?
|
||||
Preparator::DE_BOUND : Preparator::DE_MANUAL;
|
||||
|
||||
std::size_t maxFieldSize = AnyCast<std::size_t>(session().getProperty("maxFieldSize"));
|
||||
|
||||
_preparations.push_back(new Preparator(_stmt, statement, maxFieldSize, ext));
|
||||
prep = new Preparator(_stmt, statement, maxFieldSize, ext, _numericConversion, _isPostgres);
|
||||
}
|
||||
else
|
||||
_preparations.push_back(new Preparator(*_preparations[0]));
|
||||
prep = new Preparator(*_preparations[0]);
|
||||
if (addAlways || prep->columns() > 0)
|
||||
{
|
||||
_preparations.push_back(prep);
|
||||
_extractors.push_back(new Extractor(_stmt, _preparations.back()));
|
||||
|
||||
_extractors.push_back(new Extractor(_stmt, _preparations.back()));
|
||||
return true;
|
||||
}
|
||||
|
||||
delete prep;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -214,7 +236,6 @@ void ODBCStatementImpl::doBind()
|
||||
void ODBCStatementImpl::bindImpl()
|
||||
{
|
||||
doBind();
|
||||
|
||||
SQLRETURN rc = SQLExecute(_stmt);
|
||||
|
||||
if (SQL_NEED_DATA == rc) putData();
|
||||
@ -279,6 +300,24 @@ void ODBCStatementImpl::clear()
|
||||
}
|
||||
}
|
||||
|
||||
bool ODBCStatementImpl::nextResultSet()
|
||||
{
|
||||
SQLRETURN ret = SQLMoreResults(_stmt);
|
||||
|
||||
if (SQL_NO_DATA == ret)
|
||||
return false;
|
||||
|
||||
if (Utility::isError(ret)) {
|
||||
throw StatementException(_stmt, "SQLMoreResults()");
|
||||
}
|
||||
|
||||
// need to remove old bindings, as Sybase doesn't like old ones
|
||||
if (Utility::isError(SQLFreeStmt(_stmt, SQL_UNBIND))) {
|
||||
throw StatementException(_stmt, "SQLFreeStmt(SQL_UNBIND)");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool ODBCStatementImpl::hasNext()
|
||||
{
|
||||
@ -296,17 +335,29 @@ bool ODBCStatementImpl::hasNext()
|
||||
|
||||
if (!nextRowReady())
|
||||
{
|
||||
if (hasMoreDataSets()) activateNextDataSet();
|
||||
else return false;
|
||||
|
||||
if (SQL_NO_DATA == SQLMoreResults(_stmt))
|
||||
return false;
|
||||
|
||||
addPreparator();
|
||||
doPrepare();
|
||||
fixupExtraction();
|
||||
makeStep();
|
||||
}
|
||||
// have a loop here, as there could be one or more empty results
|
||||
do {
|
||||
if (hasMoreDataSets()) {
|
||||
activateNextDataSet();
|
||||
if (!nextResultSet())
|
||||
return false;
|
||||
addPreparator();
|
||||
}
|
||||
else {
|
||||
if (nextResultSet()) {
|
||||
if (!addPreparator(false)) // skip the result set if it has no columns
|
||||
continue;
|
||||
fillColumns(currentDataSet() + 1);
|
||||
makeExtractors(_preparations.back()->columns(), static_cast<Position::PositionType>(currentDataSet() + 1));
|
||||
activateNextDataSet();
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
doPrepare();
|
||||
fixupExtraction();
|
||||
makeStep();
|
||||
} while (!nextRowReady());
|
||||
}
|
||||
else if (Utility::isError(_nextResponse))
|
||||
checkError(_nextResponse, "SQLFetch()");
|
||||
|
||||
@ -405,15 +456,16 @@ void ODBCStatementImpl::checkError(SQLRETURN rc, const std::string& msg)
|
||||
}
|
||||
|
||||
|
||||
void ODBCStatementImpl::fillColumns()
|
||||
void ODBCStatementImpl::fillColumns(size_t dataSetPos)
|
||||
{
|
||||
std::size_t colCount = columnsReturned();
|
||||
std::size_t curDataSet = currentDataSet();
|
||||
if (curDataSet >= _columnPtrs.size())
|
||||
_columnPtrs.resize(curDataSet + 1);
|
||||
poco_assert_dbg(dataSetPos < _preparations.size());
|
||||
poco_assert_dbg(_preparations[dataSetPos]);
|
||||
std::size_t colCount = static_cast<std::size_t>(_preparations[dataSetPos]->columns());
|
||||
if (dataSetPos >= _columnPtrs.size())
|
||||
_columnPtrs.resize(dataSetPos + 1);
|
||||
|
||||
for (int i = 0; i < colCount; ++i)
|
||||
_columnPtrs[curDataSet].push_back(new ODBCMetaColumn(_stmt, i));
|
||||
_columnPtrs[dataSetPos].push_back(new ODBCMetaColumn(_stmt, i, _numericConversion));
|
||||
}
|
||||
|
||||
|
||||
@ -426,17 +478,16 @@ bool ODBCStatementImpl::isStoredProcedure() const
|
||||
}
|
||||
|
||||
|
||||
const MetaColumn& ODBCStatementImpl::metaColumn(std::size_t pos) const
|
||||
const MetaColumn& ODBCStatementImpl::metaColumn(std::size_t pos, size_t dataSet) const
|
||||
{
|
||||
std::size_t curDataSet = currentDataSet();
|
||||
poco_assert_dbg (curDataSet < _columnPtrs.size());
|
||||
poco_assert_dbg(dataSet < _columnPtrs.size());
|
||||
|
||||
std::size_t sz = _columnPtrs[curDataSet].size();
|
||||
std::size_t sz = _columnPtrs[dataSet].size();
|
||||
|
||||
if (0 == sz || pos > sz - 1)
|
||||
throw InvalidAccessException(format("Invalid column number: %u", pos));
|
||||
|
||||
return *_columnPtrs[curDataSet][pos];
|
||||
return *_columnPtrs[dataSet][pos];
|
||||
}
|
||||
|
||||
|
||||
@ -453,4 +504,10 @@ int ODBCStatementImpl::affectedRowCount() const
|
||||
}
|
||||
|
||||
|
||||
void ODBCStatementImpl::insertHint()
|
||||
{
|
||||
_insertHint = true;
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
|
@ -30,21 +30,35 @@ namespace ODBC {
|
||||
Preparator::Preparator(const StatementHandle& rStmt,
|
||||
const std::string& statement,
|
||||
std::size_t maxFieldSize,
|
||||
DataExtraction dataExtraction):
|
||||
DataExtraction dataExtraction,
|
||||
ODBCMetaColumn::NumericConversion numericConversion,
|
||||
bool isPostgres) :
|
||||
_rStmt(rStmt),
|
||||
_maxFieldSize(maxFieldSize),
|
||||
_dataExtraction(dataExtraction)
|
||||
_dataExtraction(dataExtraction),
|
||||
_numericConversion(numericConversion)
|
||||
{
|
||||
SQLCHAR* pStr = (SQLCHAR*) statement.c_str();
|
||||
if (Utility::isError(Poco::Data::ODBC::SQLPrepare(_rStmt, pStr, (SQLINTEGER) statement.length())))
|
||||
throw StatementException(_rStmt);
|
||||
// PostgreSQL error swallowing workaround:
|
||||
// Postgres may execute a statement with sintax error fine,
|
||||
// but would return error once num of columns requested!
|
||||
if (isPostgres)
|
||||
{
|
||||
SQLSMALLINT t = 0;
|
||||
SQLRETURN r = SQLNumResultCols(rStmt, &t);
|
||||
if (r != SQL_NO_DATA && Utility::isError(r))
|
||||
throw StatementException(rStmt, "Failed to get number of columns");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Preparator::Preparator(const Preparator& other):
|
||||
_rStmt(other._rStmt),
|
||||
_maxFieldSize(other._maxFieldSize),
|
||||
_dataExtraction(other._dataExtraction)
|
||||
_dataExtraction(other._dataExtraction),
|
||||
_numericConversion(other._numericConversion)
|
||||
{
|
||||
resize();
|
||||
}
|
||||
@ -155,7 +169,7 @@ std::size_t Preparator::maxDataSize(std::size_t pos) const
|
||||
|
||||
try
|
||||
{
|
||||
ODBCMetaColumn mc(_rStmt, pos);
|
||||
ODBCMetaColumn mc(_rStmt, pos, _numericConversion);
|
||||
sz = mc.length();
|
||||
|
||||
// accommodate for terminating zero (non-bulk only!)
|
||||
|
@ -29,6 +29,8 @@ namespace Data {
|
||||
namespace ODBC {
|
||||
|
||||
|
||||
const char* const SessionImpl::NUMERIC_CONVERSION_PROPERTY= "numericConversion";
|
||||
|
||||
SessionImpl::SessionImpl(const std::string& connect,
|
||||
std::size_t loginTimeout,
|
||||
std::size_t maxFieldSize,
|
||||
@ -39,13 +41,12 @@ SessionImpl::SessionImpl(const std::string& connect,
|
||||
_maxFieldSize(maxFieldSize),
|
||||
_autoBind(autoBind),
|
||||
_autoExtract(autoExtract),
|
||||
_numericConversion(ODBCMetaColumn::NC_BEST_FIT),
|
||||
_canTransact(ODBC_TXN_CAPABILITY_UNKNOWN),
|
||||
_inTransaction(false),
|
||||
_queryTimeout(-1)
|
||||
{
|
||||
setFeature("bulk", true);
|
||||
open();
|
||||
setProperty("handle", _db.handle());
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
@ -62,6 +63,15 @@ SessionImpl::SessionImpl(const std::string& connect,
|
||||
_inTransaction(false),
|
||||
_queryTimeout(-1)
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
void SessionImpl::init()
|
||||
{
|
||||
addProperty(NUMERIC_CONVERSION_PROPERTY,
|
||||
&SessionImpl::setNumericConversion,
|
||||
&SessionImpl::numericConversion);
|
||||
setFeature("bulk", true);
|
||||
open();
|
||||
setProperty("handle", _db.handle());
|
||||
@ -72,7 +82,7 @@ SessionImpl::~SessionImpl()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (isTransaction() && !getFeature("autoCommit"))
|
||||
if (static_cast<bool>(_db) && isTransaction() && !getFeature("autoCommit"))
|
||||
{
|
||||
try { rollback(); }
|
||||
catch (...) { }
|
||||
@ -107,13 +117,13 @@ void SessionImpl::open(const std::string& connect)
|
||||
poco_assert_dbg (!connectionString().empty());
|
||||
|
||||
SQLULEN tout = static_cast<SQLULEN>(getLoginTimeout());
|
||||
if (Utility::isError(SQLSetConnectAttr(_db, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) tout, 0)))
|
||||
if (Utility::isError(Poco::Data::ODBC::SQLSetConnectAttr(_db, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER)tout, 0)))
|
||||
{
|
||||
if (Utility::isError(SQLGetConnectAttr(_db, SQL_ATTR_LOGIN_TIMEOUT, &tout, 0, 0)) ||
|
||||
if (Utility::isError(Poco::Data::ODBC::SQLGetConnectAttr(_db, SQL_ATTR_LOGIN_TIMEOUT, &tout, 0, 0)) ||
|
||||
getLoginTimeout() != tout)
|
||||
{
|
||||
ConnectionError e(_db);
|
||||
throw ConnectionFailedException(e.toString());
|
||||
ConnectionException e(_db);
|
||||
throw ConnectionFailedException(e.errorString(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -129,10 +139,9 @@ void SessionImpl::open(const std::string& connect)
|
||||
, &result
|
||||
, SQL_DRIVER_NOPROMPT)))
|
||||
{
|
||||
ConnectionError err(_db);
|
||||
std::string errStr = err.toString();
|
||||
ConnectionException e(_db);
|
||||
close();
|
||||
throw ConnectionFailedException(errStr);
|
||||
throw ConnectionFailedException(e.errorString(), e);
|
||||
}
|
||||
|
||||
_dataTypes.fillTypeInfo(_db);
|
||||
@ -171,7 +180,7 @@ bool SessionImpl::isConnected()
|
||||
{
|
||||
SQLULEN value = 0;
|
||||
|
||||
if (Utility::isError(Poco::Data::ODBC::SQLGetConnectAttr(_db,
|
||||
if (!static_cast<bool>(_db) || Utility::isError(Poco::Data::ODBC::SQLGetConnectAttr(_db,
|
||||
SQL_ATTR_CONNECTION_DEAD,
|
||||
&value,
|
||||
0,
|
||||
@ -211,12 +220,18 @@ bool SessionImpl::canTransact()
|
||||
if (ODBC_TXN_CAPABILITY_UNKNOWN == _canTransact)
|
||||
{
|
||||
SQLUSMALLINT ret;
|
||||
checkError(Poco::Data::ODBC::SQLGetInfo(_db, SQL_TXN_CAPABLE, &ret, 0, 0),
|
||||
"Failed to obtain transaction capability info.");
|
||||
|
||||
_canTransact = (SQL_TC_NONE != ret) ?
|
||||
ODBC_TXN_CAPABILITY_TRUE :
|
||||
ODBC_TXN_CAPABILITY_FALSE;
|
||||
SQLRETURN res = Poco::Data::ODBC::SQLGetInfo(_db, SQL_TXN_CAPABLE, &ret, 0, 0);
|
||||
if (!Utility::isError(res))
|
||||
{
|
||||
_canTransact = (SQL_TC_NONE != ret) ?
|
||||
ODBC_TXN_CAPABILITY_TRUE :
|
||||
ODBC_TXN_CAPABILITY_FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
Error<SQLHDBC, SQL_HANDLE_DBC> err(_db);
|
||||
_canTransact = ODBC_TXN_CAPABILITY_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return ODBC_TXN_CAPABILITY_TRUE == _canTransact;
|
||||
@ -239,14 +254,14 @@ void SessionImpl::setTransactionIsolation(Poco::UInt32 ti)
|
||||
if (ti & Session::TRANSACTION_SERIALIZABLE)
|
||||
isolation |= SQL_TXN_SERIALIZABLE;
|
||||
|
||||
checkError(SQLSetConnectAttr(_db, SQL_ATTR_TXN_ISOLATION, (SQLPOINTER) isolation, 0));
|
||||
checkError(Poco::Data::ODBC::SQLSetConnectAttr(_db, SQL_ATTR_TXN_ISOLATION, (SQLPOINTER)isolation, 0));
|
||||
}
|
||||
|
||||
|
||||
Poco::UInt32 SessionImpl::getTransactionIsolation()
|
||||
{
|
||||
SQLULEN isolation = 0;
|
||||
checkError(SQLGetConnectAttr(_db, SQL_ATTR_TXN_ISOLATION,
|
||||
checkError(Poco::Data::ODBC::SQLGetConnectAttr(_db, SQL_ATTR_TXN_ISOLATION,
|
||||
&isolation,
|
||||
0,
|
||||
0));
|
||||
@ -271,7 +286,7 @@ bool SessionImpl::hasTransactionIsolation(Poco::UInt32 ti)
|
||||
Poco::UInt32 SessionImpl::getDefaultTransactionIsolation()
|
||||
{
|
||||
SQLUINTEGER isolation = 0;
|
||||
checkError(SQLGetInfo(_db, SQL_DEFAULT_TXN_ISOLATION,
|
||||
checkError(Poco::Data::ODBC::SQLGetInfo(_db, SQL_DEFAULT_TXN_ISOLATION,
|
||||
&isolation,
|
||||
0,
|
||||
0));
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
#include "Poco/Data/ODBC/TypeInfo.h"
|
||||
#include "Poco/Data/ODBC/ODBCException.h"
|
||||
#include "Poco/Data/LOB.h"
|
||||
#include "Poco/Format.h"
|
||||
#include "Poco/Exception.h"
|
||||
#include <iostream>
|
||||
@ -30,6 +31,17 @@ TypeInfo::TypeInfo(SQLHDBC* pHDBC): _pHDBC(pHDBC)
|
||||
fillCTypes();
|
||||
fillSQLTypes();
|
||||
if (_pHDBC) fillTypeInfo(*_pHDBC);
|
||||
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(std::string), SQL_C_CHAR));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(std::wstring), SQL_C_WCHAR));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(Poco::UTF16String), SQL_C_WCHAR));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(Date), SQL_TYPE_DATE));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(Time), SQL_TYPE_TIME));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(DateTime), SQL_TYPE_TIMESTAMP));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(BLOB), SQL_BINARY));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(float), SQL_REAL));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(double), SQL_DOUBLE));
|
||||
_cppDataTypes.insert(CppTypeInfoMap::value_type(&typeid(bool), SQL_BIT));
|
||||
}
|
||||
|
||||
|
||||
@ -102,7 +114,7 @@ void TypeInfo::fillTypeInfo(SQLHDBC pHDBC)
|
||||
if (!SQL_SUCCEEDED(rc))
|
||||
throw StatementException(hstmt, "SQLGetData()");
|
||||
|
||||
rc = SQLGetTypeInfo(hstmt, SQL_ALL_TYPES);
|
||||
rc = Poco::Data::ODBC::SQLGetTypeInfo(hstmt, SQL_ALL_TYPES);
|
||||
if (SQL_SUCCEEDED(rc))
|
||||
{
|
||||
while (SQLFetch(hstmt) != SQL_NO_DATA_FOUND)
|
||||
@ -264,4 +276,43 @@ void TypeInfo::print(std::ostream& ostr)
|
||||
}
|
||||
|
||||
|
||||
SQLSMALLINT TypeInfo::tryTypeidToCType(const std::type_info& ti, SQLSMALLINT defaultVal) const
|
||||
{
|
||||
CppTypeInfoMap::const_iterator res = _cppDataTypes.find(&ti);
|
||||
if (res == _cppDataTypes.end())
|
||||
return defaultVal;
|
||||
return res->second;
|
||||
}
|
||||
|
||||
|
||||
SQLSMALLINT TypeInfo::nullDataType(const NullData val) const
|
||||
{
|
||||
switch (val)
|
||||
{
|
||||
case NULL_GENERIC:
|
||||
case DATA_NULL_INTEGER:
|
||||
return SQL_C_TINYINT;
|
||||
|
||||
case DATA_NULL_STRING:
|
||||
return SQL_C_CHAR;
|
||||
|
||||
case DATA_NULL_DATE:
|
||||
return SQL_C_TYPE_DATE;
|
||||
|
||||
case DATA_NULL_TIME:
|
||||
return SQL_C_TYPE_TIME;
|
||||
|
||||
case DATA_NULL_DATETIME:
|
||||
return SQL_C_TYPE_TIMESTAMP;
|
||||
|
||||
case DATA_NULL_BLOB:
|
||||
return SQL_C_BINARY;
|
||||
|
||||
case DATA_NULL_FLOAT:
|
||||
return SQL_C_FLOAT;
|
||||
}
|
||||
|
||||
return SQL_C_TINYINT;
|
||||
}
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
|
@ -31,6 +31,7 @@ using Poco::TextConverter;
|
||||
using Poco::InvalidArgumentException;
|
||||
using Poco::NotImplementedException;
|
||||
|
||||
#ifdef POCO_ODBC_UNICODE
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
@ -775,3 +776,4 @@ SQLRETURN SQLDrivers(SQLHENV henv,
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::ODBC
|
||||
#endif
|
||||
|
@ -43,7 +43,7 @@ Utility::DriverMap& Utility::drivers(Utility::DriverMap& driverMap)
|
||||
SQLSMALLINT len2 = length;
|
||||
RETCODE rc = 0;
|
||||
|
||||
if (!Utility::isError(rc = SQLDrivers(henv,
|
||||
if (!Utility::isError(rc = Poco::Data::ODBC::SQLDrivers(henv,
|
||||
SQL_FETCH_FIRST,
|
||||
desc,
|
||||
length,
|
||||
@ -59,7 +59,7 @@ Utility::DriverMap& Utility::drivers(Utility::DriverMap& driverMap)
|
||||
std::memset(desc, 0, length);
|
||||
std::memset(attr, 0, length);
|
||||
len2 = length;
|
||||
}while (!Utility::isError(rc = SQLDrivers(henv,
|
||||
}while (!Utility::isError(rc = Poco::Data::ODBC::SQLDrivers(henv,
|
||||
SQL_FETCH_NEXT,
|
||||
desc,
|
||||
length,
|
||||
|
@ -29,7 +29,7 @@ endif
|
||||
|
||||
objects = ODBCTestSuite Driver \
|
||||
ODBCDB2Test ODBCMySQLTest ODBCOracleTest ODBCPostgreSQLTest \
|
||||
ODBCSQLiteTest ODBCSQLServerTest ODBCTest SQLExecutor
|
||||
ODBCSQLiteTest ODBCSQLServerTest ODBCTest SQLExecutor ODBCSybaseTest
|
||||
|
||||
ifeq ($(POCO_CONFIG),MinGW)
|
||||
objects += ODBCAccessTest
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|Win32">
|
||||
@ -129,7 +129,7 @@
|
||||
<AdditionalIncludeDirectories>..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
@ -140,6 +140,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnitd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -189,7 +190,7 @@
|
||||
<AdditionalIncludeDirectories>..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
@ -200,6 +201,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnitmtd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -249,7 +251,7 @@
|
||||
<AdditionalIncludeDirectories>..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
@ -260,6 +262,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnitmdd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -314,6 +317,7 @@
|
||||
<ClInclude Include="src\ODBCTest.h"/>
|
||||
<ClInclude Include="src\ODBCTestSuite.h"/>
|
||||
<ClInclude Include="src\SQLExecutor.h"/>
|
||||
<ClInclude Include="src\ODBCSybaseTest.h"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Driver.cpp"/>
|
||||
@ -327,6 +331,7 @@
|
||||
<ClCompile Include="src\ODBCTest.cpp"/>
|
||||
<ClCompile Include="src\ODBCTestSuite.cpp"/>
|
||||
<ClCompile Include="src\SQLExecutor.cpp"/>
|
||||
<ClCompile Include="src\ODBCSybaseTest.cpp"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
|
@ -54,8 +54,11 @@
|
||||
<ClInclude Include="src\SQLExecutor.h">
|
||||
<Filter>ODBC\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\ODBCSybaseTest.h">
|
||||
<Filter>ODBC\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\ODBCTestSuite.h">
|
||||
<Filter>_Suite\Header Files</Filter>
|
||||
<Filter>ODBC\Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -92,5 +95,8 @@
|
||||
<ClCompile Include="src\Driver.cpp">
|
||||
<Filter>_Driver\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\ODBCSybaseTest.cpp">
|
||||
<Filter>ODBC\Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -322,6 +322,7 @@
|
||||
<ClInclude Include="src\ODBCTest.h"/>
|
||||
<ClInclude Include="src\SQLExecutor.h"/>
|
||||
<ClInclude Include="src\ODBCTestSuite.h"/>
|
||||
<ClInclude Include="src\ODBCSybaseTest.h"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\ODBCAccessTest.cpp"/>
|
||||
@ -334,6 +335,7 @@
|
||||
<ClCompile Include="src\ODBCTest.cpp"/>
|
||||
<ClCompile Include="src\SQLExecutor.cpp"/>
|
||||
<ClCompile Include="src\ODBCTestSuite.cpp"/>
|
||||
<ClCompile Include="src\/ODBCSybaseTest.cpp"/>
|
||||
<ClCompile Include="src\WinDriver.cpp"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|x64">
|
||||
@ -32,7 +32,7 @@
|
||||
<RootNamespace>TestSuite</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
@ -63,27 +63,27 @@
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings" />
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">TestSuited</TargetName>
|
||||
@ -129,17 +129,18 @@
|
||||
<AdditionalIncludeDirectories>..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnitd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -167,10 +168,11 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnit.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -189,17 +191,18 @@
|
||||
<AdditionalIncludeDirectories>..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnitmtd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -227,10 +230,11 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnitmt.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -249,17 +253,18 @@
|
||||
<AdditionalIncludeDirectories>..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnitmdd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -287,10 +292,11 @@
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>PocoCppUnitmd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -304,30 +310,32 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\ODBCAccessTest.h"/>
|
||||
<ClInclude Include="src\ODBCDB2Test.h"/>
|
||||
<ClInclude Include="src\ODBCMySQLTest.h"/>
|
||||
<ClInclude Include="src\ODBCOracleTest.h"/>
|
||||
<ClInclude Include="src\ODBCPostgreSQLTest.h"/>
|
||||
<ClInclude Include="src\ODBCSQLiteTest.h"/>
|
||||
<ClInclude Include="src\ODBCSQLServerTest.h"/>
|
||||
<ClInclude Include="src\ODBCTest.h"/>
|
||||
<ClInclude Include="src\ODBCTestSuite.h"/>
|
||||
<ClInclude Include="src\SQLExecutor.h"/>
|
||||
<ClInclude Include="src\ODBCAccessTest.h" />
|
||||
<ClInclude Include="src\ODBCDB2Test.h" />
|
||||
<ClInclude Include="src\ODBCMySQLTest.h" />
|
||||
<ClInclude Include="src\ODBCOracleTest.h" />
|
||||
<ClInclude Include="src\ODBCPostgreSQLTest.h" />
|
||||
<ClInclude Include="src\ODBCSQLiteTest.h" />
|
||||
<ClInclude Include="src\ODBCSQLServerTest.h" />
|
||||
<ClInclude Include="src\ODBCTest.h" />
|
||||
<ClInclude Include="src\ODBCTestSuite.h" />
|
||||
<ClInclude Include="src\SQLExecutor.h" />
|
||||
<ClInclude Include="src\ODBCSybaseTest.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Driver.cpp"/>
|
||||
<ClCompile Include="src\ODBCAccessTest.cpp"/>
|
||||
<ClCompile Include="src\ODBCDB2Test.cpp"/>
|
||||
<ClCompile Include="src\ODBCMySQLTest.cpp"/>
|
||||
<ClCompile Include="src\ODBCOracleTest.cpp"/>
|
||||
<ClCompile Include="src\ODBCPostgreSQLTest.cpp"/>
|
||||
<ClCompile Include="src\ODBCSQLiteTest.cpp"/>
|
||||
<ClCompile Include="src\ODBCSQLServerTest.cpp"/>
|
||||
<ClCompile Include="src\ODBCTest.cpp"/>
|
||||
<ClCompile Include="src\ODBCTestSuite.cpp"/>
|
||||
<ClCompile Include="src\SQLExecutor.cpp"/>
|
||||
<ClCompile Include="src\Driver.cpp" />
|
||||
<ClCompile Include="src\ODBCAccessTest.cpp" />
|
||||
<ClCompile Include="src\ODBCDB2Test.cpp" />
|
||||
<ClCompile Include="src\ODBCMySQLTest.cpp" />
|
||||
<ClCompile Include="src\ODBCOracleTest.cpp" />
|
||||
<ClCompile Include="src\ODBCPostgreSQLTest.cpp" />
|
||||
<ClCompile Include="src\ODBCSQLiteTest.cpp" />
|
||||
<ClCompile Include="src\ODBCSQLServerTest.cpp" />
|
||||
<ClCompile Include="src\ODBCTest.cpp" />
|
||||
<ClCompile Include="src\ODBCTestSuite.cpp" />
|
||||
<ClCompile Include="src\SQLExecutor.cpp" />
|
||||
<ClCompile Include="src\ODBCSybaseTest.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
||||
|
@ -57,6 +57,9 @@
|
||||
<ClInclude Include="src\ODBCTestSuite.h">
|
||||
<Filter>_Suite\Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\ODBCSybaseTest.h">
|
||||
<Filter>ODBC\Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\ODBCAccessTest.cpp">
|
||||
@ -89,8 +92,14 @@
|
||||
<ClCompile Include="src\ODBCTestSuite.cpp">
|
||||
<Filter>_Suite\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\ODBCSybaseTest.cpp">
|
||||
<Filter>_Suite\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Driver.cpp">
|
||||
<Filter>_Driver\Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\ODBCSybaseTest.cpp">
|
||||
<Filter>ODBC\Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -114,8 +114,8 @@ void ODBCAccessTest::dropTable(const std::string& tableName)
|
||||
|
||||
void ODBCAccessTest::recreatePersonTable()
|
||||
{
|
||||
dropTable("Person");
|
||||
*_pSession << "CREATE TABLE Person (LastName TEXT(30), FirstName TEXT(30), Address TEXT(30), Age INTEGER)", now;
|
||||
dropTable(ExecUtil::person());
|
||||
*_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName TEXT(30), FirstName TEXT(30), Address TEXT(30), Age INTEGER)", now;
|
||||
}
|
||||
|
||||
|
||||
@ -176,7 +176,7 @@ void ODBCAccessTest::setUp()
|
||||
|
||||
void ODBCAccessTest::tearDown()
|
||||
{
|
||||
dropTable("Person");
|
||||
dropTable(ExecUtil::person());
|
||||
}
|
||||
|
||||
|
||||
|
@ -21,11 +21,13 @@
|
||||
#include "Poco/Exception.h"
|
||||
#include "Poco/Data/LOB.h"
|
||||
#include "Poco/Data/StatementImpl.h"
|
||||
#include "Poco/Data/RecordSet.h"
|
||||
#include "Poco/Data/ODBC/Connector.h"
|
||||
#include "Poco/Data/ODBC/Utility.h"
|
||||
#include "Poco/Data/ODBC/Diagnostics.h"
|
||||
#include "Poco/Data/ODBC/ODBCException.h"
|
||||
#include "Poco/Data/ODBC/ODBCStatementImpl.h"
|
||||
#include "Poco/Environment.h"
|
||||
#include <sqltypes.h>
|
||||
#include <iostream>
|
||||
|
||||
@ -43,29 +45,58 @@ using Poco::AnyCast;
|
||||
using Poco::DynamicAny;
|
||||
using Poco::NotFoundException;
|
||||
|
||||
static std::string db2Driver()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_DB2_DRIVER",
|
||||
#if defined(POCO_OS_FAMILY_WINDOWS)
|
||||
"IBM DB2 ODBC DRIVER - DB2COPY1"
|
||||
#else
|
||||
"libdb2o.so"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
static std::string db2Uid()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_DB2_UID", "db2admin");
|
||||
}
|
||||
|
||||
static std::string db2Db()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_DB2_DB", "POCOTEST");
|
||||
}
|
||||
|
||||
static std::string db2Pwd()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_DB2_PWD", "db2admin");
|
||||
}
|
||||
|
||||
static std::string db2Extra()
|
||||
{
|
||||
std::string e = Poco::Environment::get("POCO_TEST_DB2_EXTRA", "");
|
||||
return (e.empty() ? "" : e + ";");
|
||||
}
|
||||
|
||||
#define DB2_ODBC_DRIVER "IBM DB2 ODBC DRIVER - DB2COPY1"
|
||||
#define DB2_DSN "PocoDataDB2Test"
|
||||
#define DB2_SERVER POCO_ODBC_TEST_DATABASE_SERVER
|
||||
#define DB2_PORT "50000"
|
||||
#define DB2_DB "POCOTEST"
|
||||
#define DB2_UID "db2admin"
|
||||
#define DB2_PWD "db2admin"
|
||||
|
||||
|
||||
ODBCTest::SessionPtr ODBCDB2Test::_pSession;
|
||||
ODBCTest::ExecPtr ODBCDB2Test::_pExecutor;
|
||||
std::string ODBCDB2Test::_driver = DB2_ODBC_DRIVER;
|
||||
std::string ODBCDB2Test::_driver = db2Driver();
|
||||
std::string ODBCDB2Test::_dsn = DB2_DSN;
|
||||
std::string ODBCDB2Test::_uid = DB2_UID;
|
||||
std::string ODBCDB2Test::_pwd = DB2_PWD;
|
||||
std::string ODBCDB2Test::_connectString = "Driver=" DB2_ODBC_DRIVER ";"
|
||||
"Database=" DB2_DB ";"
|
||||
std::string ODBCDB2Test::_uid = db2Uid();
|
||||
std::string ODBCDB2Test::_pwd = db2Pwd();
|
||||
std::string ODBCDB2Test::_connectString = "Driver=" + db2Driver() + ";"
|
||||
+ db2Extra() +
|
||||
"Database=" + db2Db() + ";"
|
||||
"Hostname=" DB2_SERVER ";"
|
||||
"Port=" DB2_PORT ";"
|
||||
"Protocol=TCPIP;"
|
||||
"Uid=" DB2_UID ";"
|
||||
"Pwd=" DB2_PWD ";";
|
||||
"Uid=" + db2Uid() + ";"
|
||||
"Pwd=" + db2Pwd() + ";"
|
||||
;
|
||||
|
||||
|
||||
ODBCDB2Test::ODBCDB2Test(const std::string& name):
|
||||
@ -81,9 +112,9 @@ ODBCDB2Test::~ODBCDB2Test()
|
||||
|
||||
void ODBCDB2Test::testBareboneODBC()
|
||||
{
|
||||
if (!_pSession) fail ("Test not available.");
|
||||
if (! &session()) fail ("Test not available.");
|
||||
|
||||
std::string tableCreateString = "CREATE TABLE Test "
|
||||
std::string tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third BLOB,"
|
||||
@ -91,55 +122,55 @@ void ODBCDB2Test::testBareboneODBC()
|
||||
"Fifth FLOAT,"
|
||||
"Sixth TIMESTAMP)";
|
||||
|
||||
_pExecutor->bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_MANUAL);
|
||||
_pExecutor->bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_BOUND);
|
||||
_pExecutor->bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL);
|
||||
_pExecutor->bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND);
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_MANUAL);
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_BOUND);
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL);
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND);
|
||||
|
||||
|
||||
tableCreateString = "CREATE TABLE Test "
|
||||
tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second INTEGER,"
|
||||
"Third FLOAT)";
|
||||
|
||||
_pExecutor->bareboneODBCMultiResultTest(dbConnString(), tableCreateString, SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_MANUAL);
|
||||
_pExecutor->bareboneODBCMultiResultTest(dbConnString(), tableCreateString, SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_BOUND);
|
||||
_pExecutor->bareboneODBCMultiResultTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL);
|
||||
_pExecutor->bareboneODBCMultiResultTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND);
|
||||
executor().bareboneODBCMultiResultTest(dbConnString(), tableCreateString, SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_MANUAL);
|
||||
executor().bareboneODBCMultiResultTest(dbConnString(), tableCreateString, SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_BOUND);
|
||||
executor().bareboneODBCMultiResultTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL);
|
||||
executor().bareboneODBCMultiResultTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND);
|
||||
}
|
||||
|
||||
|
||||
void ODBCDB2Test::testBLOB()
|
||||
{
|
||||
if (!_pSession) fail ("Test not available.");
|
||||
if (! &session()) fail ("Test not available.");
|
||||
|
||||
const std::size_t maxFldSize = 1000000;
|
||||
_pSession->setProperty("maxFieldSize", Poco::Any(maxFldSize-1));
|
||||
session().setProperty("maxFieldSize", Poco::Any(maxFldSize-1));
|
||||
recreatePersonBLOBTable();
|
||||
|
||||
try
|
||||
{
|
||||
_pExecutor->blob(maxFldSize);
|
||||
executor().blob(maxFldSize);
|
||||
fail ("must fail");
|
||||
}
|
||||
catch (DataException&)
|
||||
{
|
||||
_pSession->setProperty("maxFieldSize", Poco::Any(maxFldSize));
|
||||
session().setProperty("maxFieldSize", Poco::Any(maxFldSize));
|
||||
}
|
||||
|
||||
for (int i = 0; i < 8;)
|
||||
{
|
||||
recreatePersonBLOBTable();
|
||||
_pSession->setFeature("autoBind", bindValue(i));
|
||||
_pSession->setFeature("autoExtract", bindValue(i+1));
|
||||
_pExecutor->blob(maxFldSize);
|
||||
session().setFeature("autoBind", bindValue(i));
|
||||
session().setFeature("autoExtract", bindValue(i+1));
|
||||
executor().blob(maxFldSize);
|
||||
i += 2;
|
||||
}
|
||||
|
||||
recreatePersonBLOBTable();
|
||||
try
|
||||
{
|
||||
_pExecutor->blob(maxFldSize+1);
|
||||
executor().blob(maxFldSize+1);
|
||||
fail ("must fail");
|
||||
}
|
||||
catch (DataException&) { }
|
||||
@ -148,14 +179,14 @@ void ODBCDB2Test::testBLOB()
|
||||
|
||||
void ODBCDB2Test::testFilter()
|
||||
{
|
||||
if (!_pSession) fail ("Test not available.");
|
||||
if (! &session()) fail ("Test not available.");
|
||||
|
||||
for (int i = 0; i < 8;)
|
||||
{
|
||||
recreateVectorsTable();
|
||||
_pSession->setFeature("autoBind", bindValue(i));
|
||||
_pSession->setFeature("autoExtract", bindValue(i+1));
|
||||
_pExecutor->filter("SELECT * FROM Vectors ORDER BY i0 ASC", "i0");
|
||||
session().setFeature("autoBind", bindValue(i));
|
||||
session().setFeature("autoExtract", bindValue(i+1));
|
||||
executor().filter("SELECT * FROM " + ExecUtil::vectors() + " ORDER BY i0 ASC", "i0");
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
@ -163,50 +194,54 @@ void ODBCDB2Test::testFilter()
|
||||
|
||||
void ODBCDB2Test::testStoredProcedure()
|
||||
{
|
||||
if (!_pSession) fail ("Test not available.");
|
||||
if (! &session()) fail ("Test not available.");
|
||||
|
||||
const std::string nm = ExecUtil::stored_proc();
|
||||
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
dropObject("PROCEDURE", nm + "(VARCHAR(1000), VARCHAR(1000))");
|
||||
|
||||
for (int k = 0; k < 8;)
|
||||
{
|
||||
_pSession->setFeature("autoBind", bindValue(k));
|
||||
_pSession->setFeature("autoExtract", bindValue(k+1));
|
||||
session().setFeature("autoBind", bindValue(k));
|
||||
session().setFeature("autoExtract", bindValue(k+1));
|
||||
|
||||
dropObject("PROCEDURE", "storedProcedure");
|
||||
*_pSession << "CREATE PROCEDURE storedProcedure(OUT outParam INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(OUT outParam INTEGER) "
|
||||
"BEGIN "
|
||||
" SET outParam = -1; "
|
||||
"END" , now;
|
||||
|
||||
int i = 0;
|
||||
*_pSession << "{call storedProcedure(?)}", out(i), now;
|
||||
session() << "{call " + db2Db() + "." << nm << "(?)}", out(i), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
assert(-1 == i);
|
||||
dropObject("PROCEDURE", "storedProcedure");
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedProcedure(inParam INTEGER, OUT outParam INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(inParam INTEGER, OUT outParam INTEGER) "
|
||||
"BEGIN "
|
||||
" SET outParam = inParam*inParam; "
|
||||
"END" , now;
|
||||
|
||||
|
||||
i = 2;
|
||||
int j = 0;
|
||||
*_pSession << "{call storedProcedure(?, ?)}", in(i), out(j), now;
|
||||
session() << "{call " + db2Db() + "." << nm << "(?, ?)}", in(i), out(j), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
assert(4 == j);
|
||||
dropObject("PROCEDURE", "storedProcedure");
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedProcedure(INOUT ioParam INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(INOUT ioParam INTEGER) "
|
||||
"BEGIN "
|
||||
" SET ioParam = ioParam*ioParam; "
|
||||
"END" , now;
|
||||
|
||||
i = 2;
|
||||
*_pSession << "{call storedProcedure(?)}", io(i), now;
|
||||
session() << "{call " + db2Db() + "." << nm << "(?)}", io(i), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
assert(4 == i);
|
||||
dropObject("PROCEDURE", "storedProcedure");
|
||||
|
||||
//TIMESTAMP is not supported as stored procedure parameter in DB2
|
||||
//(SQL0182N An expression with a datetime value or a labeled duration is not valid.)
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedProcedure(inParam VARCHAR(1000), OUT outParam VARCHAR(1000)) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(inParam VARCHAR(1000), OUT outParam VARCHAR(1000)) "
|
||||
"BEGIN "
|
||||
" SET outParam = inParam; "
|
||||
"END" , now;
|
||||
@ -222,9 +257,9 @@ void ODBCDB2Test::testStoredProcedure()
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
|
||||
std::string outParam;
|
||||
*_pSession << "{call storedProcedure(?,?)}", in(inParam), out(outParam), now;
|
||||
session() << "{call " + db2Db() + "." << nm << "(?,?)}", in(inParam), out(outParam), now;
|
||||
dropObject("PROCEDURE", nm + "(VARCHAR(1000), VARCHAR(1000))");
|
||||
assert(inParam == outParam);
|
||||
dropObject("PROCEDURE", "storedProcedure");
|
||||
|
||||
k += 2;
|
||||
}
|
||||
@ -233,35 +268,39 @@ void ODBCDB2Test::testStoredProcedure()
|
||||
|
||||
void ODBCDB2Test::testStoredProcedureAny()
|
||||
{
|
||||
if (!_pSession) fail ("Test not available.");
|
||||
if (! &session()) fail ("Test not available.");
|
||||
|
||||
const std::string nm = ExecUtil::stored_proc();
|
||||
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
for (int k = 0; k < 8;)
|
||||
{
|
||||
_pSession->setFeature("autoBind", bindValue(k));
|
||||
_pSession->setFeature("autoExtract", bindValue(k+1));
|
||||
session().setFeature("autoBind", bindValue(k));
|
||||
session().setFeature("autoExtract", bindValue(k+1));
|
||||
|
||||
Any i = 2;
|
||||
Any j = 0;
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedProcedure(inParam INTEGER, OUT outParam INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(inParam INTEGER, OUT outParam INTEGER) "
|
||||
"BEGIN "
|
||||
" SET outParam = inParam*inParam; "
|
||||
"END" , now;
|
||||
|
||||
*_pSession << "{call storedProcedure(?, ?)}", in(i), out(j), now;
|
||||
session() << "{call " + db2Db() + "." << nm << "(?, ?)}", in(i), out(j), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
assert(4 == AnyCast<int>(j));
|
||||
*_pSession << "DROP PROCEDURE storedProcedure;", now;
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedProcedure(INOUT ioParam INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(INOUT ioParam INTEGER) "
|
||||
"BEGIN "
|
||||
" SET ioParam = ioParam*ioParam; "
|
||||
"END" , now;
|
||||
|
||||
i = 2;
|
||||
*_pSession << "{call storedProcedure(?)}", io(i), now;
|
||||
session() << "{call " + db2Db() + "." << nm << "(?)}", io(i), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
assert(4 == AnyCast<int>(i));
|
||||
dropObject("PROCEDURE", "storedProcedure");
|
||||
|
||||
|
||||
k += 2;
|
||||
}
|
||||
}
|
||||
@ -269,33 +308,37 @@ void ODBCDB2Test::testStoredProcedureAny()
|
||||
|
||||
void ODBCDB2Test::testStoredProcedureDynamicAny()
|
||||
{
|
||||
if (!_pSession) fail ("Test not available.");
|
||||
if (! &session()) fail ("Test not available.");
|
||||
|
||||
const std::string nm = ExecUtil::stored_proc();
|
||||
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
for (int k = 0; k < 8;)
|
||||
{
|
||||
_pSession->setFeature("autoBind", bindValue(k));
|
||||
session().setFeature("autoBind", bindValue(k));
|
||||
|
||||
DynamicAny i = 2;
|
||||
DynamicAny j = 0;
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedProcedure(inParam INTEGER, OUT outParam INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(inParam INTEGER, OUT outParam INTEGER) "
|
||||
"BEGIN "
|
||||
" SET outParam = inParam*inParam; "
|
||||
"END" , now;
|
||||
|
||||
*_pSession << "{call storedProcedure(?, ?)}", in(i), out(j), now;
|
||||
session() << "{call " + db2Db() + "." << nm << "(?, ?)}", in(i), out(j), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
assert(4 == j);
|
||||
*_pSession << "DROP PROCEDURE storedProcedure;", now;
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedProcedure(INOUT ioParam INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(INOUT ioParam INTEGER) "
|
||||
"BEGIN "
|
||||
" SET ioParam = ioParam*ioParam; "
|
||||
"END" , now;
|
||||
|
||||
i = 2;
|
||||
*_pSession << "{call storedProcedure(?)}", io(i), now;
|
||||
session() << "{call " + db2Db() + "." << nm << "(?)}", io(i), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
assert(4 == i);
|
||||
dropObject("PROCEDURE", "storedProcedure");
|
||||
|
||||
k += 2;
|
||||
}
|
||||
@ -304,36 +347,89 @@ void ODBCDB2Test::testStoredProcedureDynamicAny()
|
||||
|
||||
void ODBCDB2Test::testStoredFunction()
|
||||
{
|
||||
if (!_pSession) fail ("Test not available.");
|
||||
const std::string nm = ExecUtil::stored_func();
|
||||
if (! &session()) fail ("Test not available.");
|
||||
|
||||
dropObject("PROCEDURE", nm + "()");
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
dropObject("PROCEDURE", nm + "(VARCHAR(10), DATE, TIME, TIMESTAMP, INTEGER, SMALLINT, REAL, DOUBLE, VARCHAR(10), INTEGER)");
|
||||
dropObject("PROCEDURE", nm + "(VARCHAR(10), VARCHAR(10))");
|
||||
|
||||
for (int k = 0; k < 8;)
|
||||
{
|
||||
_pSession->setFeature("autoBind", bindValue(k));
|
||||
_pSession->setFeature("autoExtract", bindValue(k+1));
|
||||
session().setFeature("autoBind", bindValue(k));
|
||||
session().setFeature("autoExtract", bindValue(k + 1));
|
||||
|
||||
dropObject("PROCEDURE", "storedFunction");
|
||||
*_pSession << "CREATE PROCEDURE storedFunction() "
|
||||
{
|
||||
session() << "CREATE PROCEDURE " << nm << "() "
|
||||
"BEGIN "
|
||||
" DECLARE C1 CURSOR FOR select * from sysibm.sysdummy1 where 1=2;"
|
||||
" OPEN C1;"
|
||||
" RETURN;"
|
||||
"END", now;
|
||||
|
||||
Poco::Data::Statement stat(session());
|
||||
stat << "{ call " + db2Db() + "." << nm << "()}", now;
|
||||
Poco::Data::RecordSet rs(stat);
|
||||
|
||||
assert(0 == rs.rowCount());
|
||||
dropObject("PROCEDURE", nm + "()");
|
||||
}
|
||||
{
|
||||
session() << "CREATE PROCEDURE " << nm << "(inp VARCHAR(10), out dt DATE, out tm TIME, out tms TIMESTAMP, out int32 INTEGER, "
|
||||
"out si SMALLINT, out fl REAL, out dbl DOUBLE, out s2 VARCHAR(10), out an INTEGER)"
|
||||
"BEGIN "
|
||||
"set dt =null; set tm =null; set tms =null; set int32 =null; set si =null; set fl =null; set dbl =null; set s2 = inp; set an = inp;"
|
||||
"END", now;
|
||||
|
||||
Poco::Data::Statement stat(session());
|
||||
Poco::Nullable<std::string> ns;
|
||||
Poco::Nullable<Poco::Data::Date> nd = Poco::Nullable<Poco::Data::Date>(Poco::Data::Date());
|
||||
Poco::Nullable<int> n_i(1);
|
||||
Poco::Nullable<Poco::Data::Time> tm = Poco::Nullable<Poco::Data::Time>(Poco::Data::Time());
|
||||
Poco::Nullable<Poco::DateTime> tms = Poco::Nullable<Poco::DateTime>(Poco::DateTime());
|
||||
Poco::Nullable<Poco::Int16> i16(1);
|
||||
Poco::Nullable<float> flt(1);
|
||||
Poco::Nullable<double> dbl(1);
|
||||
Poco::Nullable<std::string> s2("ddd");
|
||||
Poco::Nullable<Any> an(Any(2));
|
||||
stat << "{call " + db2Db() + "." << nm << "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}", useRef(ns), out(nd), out(tm), out(tms), out(n_i), out(i16), out(flt), out(dbl), out(s2), out(an), now;
|
||||
dropObject("PROCEDURE", nm + "(VARCHAR(10), DATE, TIME, TIMESTAMP, INTEGER, SMALLINT, REAL, DOUBLE, VARCHAR(10), INTEGER)");
|
||||
assert(nd.isNull());
|
||||
assert(n_i.isNull());
|
||||
assert(tm.isNull());
|
||||
assert(tms.isNull());
|
||||
assert(i16.isNull());
|
||||
assert(flt.isNull());
|
||||
assert(dbl.isNull());
|
||||
assert(s2.isNull());
|
||||
assert(an.isNull());
|
||||
}
|
||||
|
||||
session() << "CREATE PROCEDURE " << nm << "() "
|
||||
"BEGIN "
|
||||
" RETURN -1; "
|
||||
"END" , now;
|
||||
|
||||
int i = 0;
|
||||
*_pSession << "{? = call storedFunction()}", out(i), now;
|
||||
session() << "{? = call " + db2Db() + "." << nm << "()}", out(i), now;
|
||||
dropObject("PROCEDURE", nm + "()");
|
||||
assert(-1 == i);
|
||||
dropObject("PROCEDURE", "storedFunction");
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedFunction(inParam INTEGER) "
|
||||
|
||||
|
||||
session() << "CREATE PROCEDURE " << nm << "(inParam INTEGER) "
|
||||
"BEGIN "
|
||||
" RETURN inParam*inParam; "
|
||||
"END" , now;
|
||||
|
||||
i = 2;
|
||||
int result = 0;
|
||||
*_pSession << "{? = call storedFunction(?)}", out(result), in(i), now;
|
||||
session() << "{? = call " + db2Db() + "." << nm << "(?)}", out(result), in(i), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER)");
|
||||
assert(4 == result);
|
||||
dropObject("PROCEDURE", "storedFunction");
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedFunction(inParam INTEGER, OUT outParam INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(inParam INTEGER, OUT outParam INTEGER) "
|
||||
"BEGIN "
|
||||
" SET outParam = inParam*inParam; "
|
||||
" RETURN outParam; "
|
||||
@ -342,12 +438,12 @@ void ODBCDB2Test::testStoredFunction()
|
||||
i = 2;
|
||||
int j = 0;
|
||||
result = 0;
|
||||
*_pSession << "{? = call storedFunction(?, ?)}", out(result), in(i), out(j), now;
|
||||
session() << "{? = call " + db2Db() + "." << nm << "(?, ?)}", out(result), in(i), out(j), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
assert(4 == j);
|
||||
assert(j == result);
|
||||
dropObject("PROCEDURE", "storedFunction");
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedFunction(INOUT param1 INTEGER, INOUT param2 INTEGER) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(INOUT param1 INTEGER, INOUT param2 INTEGER) "
|
||||
"BEGIN "
|
||||
" DECLARE temp INTEGER;"
|
||||
" SET temp = param1; "
|
||||
@ -359,7 +455,7 @@ void ODBCDB2Test::testStoredFunction()
|
||||
i = 1;
|
||||
j = 2;
|
||||
result = 0;
|
||||
*_pSession << "{? = call storedFunction(?, ?)}", out(result), io(i), io(j), now;
|
||||
session() << "{? = call " + db2Db() + "." << nm << "(?, ?)}", out(result), io(i), io(j), now;
|
||||
assert(1 == j);
|
||||
assert(2 == i);
|
||||
assert(3 == result);
|
||||
@ -368,16 +464,15 @@ void ODBCDB2Test::testStoredFunction()
|
||||
assert(1 == params.get<0>());
|
||||
assert(2 == params.get<1>());
|
||||
result = 0;
|
||||
*_pSession << "{? = call storedFunction(?, ?)}", out(result), io(params), now;
|
||||
session() << "{? = call " + db2Db() + "." << nm << "(?, ?)}", out(result), io(params), now;
|
||||
dropObject("PROCEDURE", nm + "(INTEGER, INTEGER)");
|
||||
assert(1 == params.get<1>());
|
||||
assert(2 == params.get<0>());
|
||||
assert(3 == result);
|
||||
|
||||
dropObject("PROCEDURE", "storedFunction");
|
||||
session().setFeature("autoBind", true);
|
||||
|
||||
_pSession->setFeature("autoBind", true);
|
||||
|
||||
*_pSession << "CREATE PROCEDURE storedFunction(inParam VARCHAR(10), OUT outParam VARCHAR(10)) "
|
||||
session() << "CREATE PROCEDURE " << nm << "(inParam VARCHAR(10), OUT outParam VARCHAR(10)) "
|
||||
"BEGIN "
|
||||
" SET outParam = inParam; "
|
||||
" RETURN LENGTH(outParam);"//DB2 allows only integer as return type
|
||||
@ -386,21 +481,74 @@ void ODBCDB2Test::testStoredFunction()
|
||||
std::string inParam = "123456789";
|
||||
std::string outParam;
|
||||
int ret;
|
||||
*_pSession << "{? = call storedFunction(?,?)}", out(ret), in(inParam), out(outParam), now;
|
||||
session() << "{? = call " + db2Db() + "." << nm << "(?,?)}", out(ret), in(inParam), out(outParam), now;
|
||||
dropObject("PROCEDURE", nm + "(VARCHAR(10), VARCHAR(10))");
|
||||
assert(inParam == outParam);
|
||||
assert(ret == inParam.size());
|
||||
dropObject("PROCEDURE", "storedFunction");
|
||||
|
||||
k += 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ODBCDB2Test::testXMLColumn()
|
||||
{
|
||||
const std::string tbl = ExecUtil::mangleTable("xmlColumn");
|
||||
dropObject("TABLE", tbl);
|
||||
try {
|
||||
const std::string xmlStr = "<a> xml text </a>";
|
||||
Poco::UTF16String uStr;
|
||||
for (unsigned c = 0x400; c < 0x409; ++c) uStr.append(3, Poco::UTF16Char(c) );
|
||||
session() << "CREATE TABLE " << tbl << " (id integer, x XML, cl CLOB, dbcl DBCLOB)", now;
|
||||
session() << "INSERT INTO " << tbl << " (id , x, cl, dbcl) VALUES(1, '" << xmlStr << "', ?, ?)", bind(xmlStr), bind(uStr), now;
|
||||
Poco::Data::Statement stat(session());
|
||||
stat << "SELECT id, x,cl, dbcl FROM " << tbl, now;
|
||||
|
||||
Poco::Data::RecordSet rs(stat);
|
||||
assert(1 == rs.rowCount());
|
||||
assert(4 == rs.columnCount());
|
||||
int id = rs.value<int>(0);
|
||||
assert(1 == id);
|
||||
|
||||
Poco::Data::BLOB xml = rs.value<Poco::Data::BLOB>(1);
|
||||
std::string readStr(reinterpret_cast<const char*>(xml.rawContent()), xml.size());
|
||||
assert(readStr.find(xmlStr) < readStr.length());
|
||||
|
||||
Poco::Data::CLOB cl = rs.value<Poco::Data::CLOB>(2);
|
||||
assert(xmlStr == std::string(cl.rawContent(), cl.size()));
|
||||
|
||||
const Poco::UTF16String us = rs.value<Poco::UTF16String>(3);
|
||||
assert(uStr == us);
|
||||
// check nullables
|
||||
Poco::Nullable<Poco::Data::CLOB> ncl = Poco::Nullable<Poco::Data::CLOB>(Poco::Data::CLOB());
|
||||
assert(false == ncl.isNull());
|
||||
Poco::Nullable<Poco::Data::BLOB> nbl = Poco::Nullable<Poco::Data::BLOB>(Poco::Data::BLOB());
|
||||
assert(false == nbl.isNull());
|
||||
Poco::Nullable<Poco::UTF16String> usn(Poco::UTF16String(2, Poco::UTF16Char('a')));
|
||||
assert(false == usn.isNull());
|
||||
session() << "INSERT INTO " << tbl << " (id) VALUES (99) ", now;
|
||||
session() << "SELECT x,cl, dbcl FROM " << tbl << " WHERE id > 1", into(nbl), into(ncl), into(usn), now;
|
||||
|
||||
assert(true == ncl.isNull());
|
||||
assert(true == nbl.isNull());
|
||||
assert(true == usn.isNull());
|
||||
}
|
||||
catch (const Poco::Exception& e)
|
||||
{
|
||||
dropObject("TABLE", tbl);
|
||||
|
||||
std::cerr << e.message() << std::endl;
|
||||
throw;
|
||||
}
|
||||
dropObject("TABLE", tbl);
|
||||
}
|
||||
|
||||
|
||||
void ODBCDB2Test::dropObject(const std::string& type, const std::string& name)
|
||||
{
|
||||
try
|
||||
{
|
||||
*_pSession << format("DROP %s %s", type, name), now;
|
||||
session() << format("DROP %s %s", type, name), now;
|
||||
}
|
||||
catch (StatementException& ex)
|
||||
{
|
||||
@ -408,8 +556,9 @@ void ODBCDB2Test::dropObject(const std::string& type, const std::string& name)
|
||||
const StatementDiagnostics::FieldVec& flds = ex.diagnostics().fields();
|
||||
StatementDiagnostics::Iterator it = flds.begin();
|
||||
for (; it != flds.end(); ++it)
|
||||
{
|
||||
if (-204 == it->_nativeError)//(table does not exist)
|
||||
{
|
||||
//(table does not exist) // procedure not found
|
||||
if (-204 == it->_nativeError || (-458 == it->_nativeError) )
|
||||
{
|
||||
ignoreError = true;
|
||||
break;
|
||||
@ -423,17 +572,28 @@ void ODBCDB2Test::dropObject(const std::string& type, const std::string& name)
|
||||
|
||||
void ODBCDB2Test::recreateNullableTable()
|
||||
{
|
||||
dropObject("TABLE", "NullableTest");
|
||||
try { *_pSession << "CREATE TABLE NullableTest (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat FLOAT NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
dropObject("TABLE", ExecUtil::nullabletest());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::nullabletest() << " (EmptyString VARCHAR(30), EmptyInteger INTEGER , EmptyFloat FLOAT , EmptyDateTime TIMESTAMP)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
|
||||
void ODBCDB2Test::recreateNumericTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::numeric_tbl());
|
||||
try {
|
||||
session() << "CREATE TABLE " << ExecUtil::numeric_tbl() <<
|
||||
" (id integer, num8 NUMERIC(8), num16_3 NUMERIC(16,3), num18 NUMERIC(18), num18_8 NUMERIC(18,8), num22 NUMERIC(22))", now;
|
||||
}
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateNumericTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateNumericTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void ODBCDB2Test::recreatePersonTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() <<" (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -441,8 +601,8 @@ void ODBCDB2Test::recreatePersonTable()
|
||||
|
||||
void ODBCDB2Test::recreatePersonBLOBTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BLOB)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() <<" (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BLOB)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
}
|
||||
@ -450,8 +610,8 @@ void ODBCDB2Test::recreatePersonBLOBTable()
|
||||
|
||||
void ODBCDB2Test::recreatePersonDateTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() <<" (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTable()"); }
|
||||
}
|
||||
@ -459,8 +619,8 @@ void ODBCDB2Test::recreatePersonDateTable()
|
||||
|
||||
void ODBCDB2Test::recreatePersonTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornTime TIME)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() <<" (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornTime TIME)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTimeTable()"); }
|
||||
}
|
||||
@ -468,8 +628,8 @@ void ODBCDB2Test::recreatePersonTimeTable()
|
||||
|
||||
void ODBCDB2Test::recreatePersonDateTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born TIMESTAMP)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() <<" (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born TIMESTAMP)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
}
|
||||
@ -477,8 +637,8 @@ void ODBCDB2Test::recreatePersonDateTimeTable()
|
||||
|
||||
void ODBCDB2Test::recreateIntsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() << " (str INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
}
|
||||
@ -486,8 +646,8 @@ void ODBCDB2Test::recreateIntsTable()
|
||||
|
||||
void ODBCDB2Test::recreateStringsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() << " (str VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
}
|
||||
@ -495,8 +655,8 @@ void ODBCDB2Test::recreateStringsTable()
|
||||
|
||||
void ODBCDB2Test::recreateFloatsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str FLOAT)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() << " (str FLOAT)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
}
|
||||
@ -504,8 +664,8 @@ void ODBCDB2Test::recreateFloatsTable()
|
||||
|
||||
void ODBCDB2Test::recreateTuplesTable()
|
||||
{
|
||||
dropObject("TABLE", "Tuples");
|
||||
try { *_pSession << "CREATE TABLE Tuples "
|
||||
dropObject("TABLE", ExecUtil::tuples());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::tuples() <<
|
||||
"(int0 INTEGER, int1 INTEGER, int2 INTEGER, int3 INTEGER, int4 INTEGER, int5 INTEGER, int6 INTEGER, "
|
||||
"int7 INTEGER, int8 INTEGER, int9 INTEGER, int10 INTEGER, int11 INTEGER, int12 INTEGER, int13 INTEGER,"
|
||||
"int14 INTEGER, int15 INTEGER, int16 INTEGER, int17 INTEGER, int18 INTEGER, int19 INTEGER)", now; }
|
||||
@ -516,8 +676,8 @@ void ODBCDB2Test::recreateTuplesTable()
|
||||
|
||||
void ODBCDB2Test::recreateVectorsTable()
|
||||
{
|
||||
dropObject("TABLE", "Vectors");
|
||||
try { *_pSession << "CREATE TABLE Vectors (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::vectors());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::vectors() << " (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
}
|
||||
@ -525,8 +685,8 @@ void ODBCDB2Test::recreateVectorsTable()
|
||||
|
||||
void ODBCDB2Test::recreateAnysTable()
|
||||
{
|
||||
dropObject("TABLE", "Anys");
|
||||
try { *_pSession << "CREATE TABLE Anys (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::anys() );
|
||||
try { session() << "CREATE TABLE " << ExecUtil::anys() << " (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
}
|
||||
@ -534,8 +694,8 @@ void ODBCDB2Test::recreateAnysTable()
|
||||
|
||||
void ODBCDB2Test::recreateNullsTable(const std::string& notNull)
|
||||
{
|
||||
dropObject("TABLE", "NullTest");
|
||||
try { *_pSession << format("CREATE TABLE NullTest (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)",
|
||||
dropObject("TABLE", ExecUtil::nulltest());
|
||||
try { session() << format("CREATE TABLE %s (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)", ExecUtil::nulltest(),
|
||||
notNull,
|
||||
notNull,
|
||||
notNull), now; }
|
||||
@ -546,10 +706,10 @@ void ODBCDB2Test::recreateNullsTable(const std::string& notNull)
|
||||
|
||||
void ODBCDB2Test::recreateMiscTable()
|
||||
{
|
||||
dropObject("TABLE", "MiscTest");
|
||||
dropObject("TABLE", ExecUtil::misctest());
|
||||
try
|
||||
{
|
||||
session() << "CREATE TABLE MiscTest "
|
||||
session() << "CREATE TABLE " << ExecUtil::misctest() <<
|
||||
"(First VARCHAR(30),"
|
||||
"Second BLOB,"
|
||||
"Third INTEGER,"
|
||||
@ -562,8 +722,8 @@ void ODBCDB2Test::recreateMiscTable()
|
||||
|
||||
void ODBCDB2Test::recreateLogTable()
|
||||
{
|
||||
dropObject("TABLE", "T_POCO_LOG");
|
||||
dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
|
||||
dropObject("TABLE", ExecUtil::pocolog());;
|
||||
dropObject("TABLE", ExecUtil::pocolog_a());;
|
||||
|
||||
try
|
||||
{
|
||||
@ -577,8 +737,8 @@ void ODBCDB2Test::recreateLogTable()
|
||||
"Text VARCHAR(100),"
|
||||
"DateTime TIMESTAMP)";
|
||||
|
||||
session() << sql, "T_POCO_LOG", now;
|
||||
session() << sql, "T_POCO_LOG_ARCHIVE", now;
|
||||
session() << sql, ExecUtil::pocolog(), now;
|
||||
session() << sql, ExecUtil::pocolog_a(), now;
|
||||
|
||||
} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
@ -597,6 +757,7 @@ CppUnit::Test* ODBCDB2Test::suite()
|
||||
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testBareboneODBC);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testZeroRows);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testSyntaxError);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testSimpleAccess);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testComplexType);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testSimpleAccessVector);
|
||||
@ -666,13 +827,20 @@ CppUnit::Test* ODBCDB2Test::suite()
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testAny);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testDynamicAny);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testMultipleResults);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testMultipleResultsNoProj);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testSQLChannel);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testSQLLogger);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testSessionTransaction);
|
||||
//CppUnit_addTest(pSuite, ODBCDB2Test, testSessionTransaction); // this test fails when connection is fast
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testTransaction);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testTransactor);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testNullable);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testReconnect);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testNumeric);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testXMLColumn);
|
||||
CppUnit_addTest(pSuite, ODBCDB2Test, testInsertStatReuse);
|
||||
|
||||
ODBCDB2Test::_pExecutor = 0;
|
||||
ODBCDB2Test::_pSession = 0;
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
@ -41,6 +41,7 @@ public:
|
||||
void testStoredProcedureAny();
|
||||
void testStoredProcedureDynamicAny();
|
||||
void testStoredFunction();
|
||||
void testXMLColumn();
|
||||
|
||||
static CppUnit::Test* suite();
|
||||
|
||||
@ -61,6 +62,7 @@ private:
|
||||
void recreateNullsTable(const std::string& notNull = "");
|
||||
void recreateMiscTable();
|
||||
void recreateLogTable();
|
||||
void recreateNumericTable();
|
||||
|
||||
static ODBCTest::SessionPtr _pSession;
|
||||
static ODBCTest::ExecPtr _pExecutor;
|
||||
|
@ -77,7 +77,7 @@ void ODBCMySQLTest::testBareboneODBC()
|
||||
{
|
||||
if (!_pSession) fail ("Test not available.");
|
||||
|
||||
std::string tableCreateString = "CREATE TABLE Test "
|
||||
std::string tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third VARBINARY(30),"
|
||||
@ -97,7 +97,7 @@ has different SQL syntax for it and behaves differently
|
||||
compared to other DBMS systems in regards to SQLMoreResults.
|
||||
So, we skip this test.
|
||||
|
||||
tableCreateString = "CREATE TABLE Test "
|
||||
tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second INTEGER,"
|
||||
"Third FLOAT)";
|
||||
@ -236,7 +236,7 @@ void ODBCMySQLTest::testFilter()
|
||||
recreateVectorsTable();
|
||||
_pSession->setFeature("autoBind", bindValue(i));
|
||||
_pSession->setFeature("autoExtract", bindValue(i+1));
|
||||
_pExecutor->filter("SELECT * FROM Vectors ORDER BY i0 ASC", "i0");
|
||||
_pExecutor->filter("SELECT * FROM " + ExecUtil::vectors() + " ORDER BY i0 ASC", "i0");
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
@ -250,8 +250,8 @@ void ODBCMySQLTest::dropObject(const std::string& type, const std::string& name)
|
||||
|
||||
void ODBCMySQLTest::recreateNullableTable()
|
||||
{
|
||||
dropObject("TABLE", "NullableTest");
|
||||
try { *_pSession << "CREATE TABLE NullableTest (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat FLOAT NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
dropObject("TABLE", ExecUtil::nullabletest());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::nullabletest() << " (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat FLOAT NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -259,8 +259,8 @@ void ODBCMySQLTest::recreateNullableTable()
|
||||
|
||||
void ODBCMySQLTest::recreatePersonTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -268,8 +268,8 @@ void ODBCMySQLTest::recreatePersonTable()
|
||||
|
||||
void ODBCMySQLTest::recreatePersonBLOBTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BLOB)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BLOB)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
}
|
||||
@ -277,8 +277,8 @@ void ODBCMySQLTest::recreatePersonBLOBTable()
|
||||
|
||||
void ODBCMySQLTest::recreatePersonDateTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTable()"); }
|
||||
}
|
||||
@ -286,8 +286,8 @@ void ODBCMySQLTest::recreatePersonDateTable()
|
||||
|
||||
void ODBCMySQLTest::recreatePersonTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornTime TIME)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornTime TIME)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTimeTable()"); }
|
||||
}
|
||||
@ -295,8 +295,8 @@ void ODBCMySQLTest::recreatePersonTimeTable()
|
||||
|
||||
void ODBCMySQLTest::recreatePersonDateTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born DATETIME)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born DATETIME)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
}
|
||||
@ -304,8 +304,8 @@ void ODBCMySQLTest::recreatePersonDateTimeTable()
|
||||
|
||||
void ODBCMySQLTest::recreateIntsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::strings() << " (str INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
}
|
||||
@ -313,8 +313,8 @@ void ODBCMySQLTest::recreateIntsTable()
|
||||
|
||||
void ODBCMySQLTest::recreateStringsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::strings() << " (str VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
}
|
||||
@ -322,8 +322,8 @@ void ODBCMySQLTest::recreateStringsTable()
|
||||
|
||||
void ODBCMySQLTest::recreateFloatsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str FLOAT)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (str FLOAT)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
}
|
||||
@ -331,8 +331,8 @@ void ODBCMySQLTest::recreateFloatsTable()
|
||||
|
||||
void ODBCMySQLTest::recreateTuplesTable()
|
||||
{
|
||||
dropObject("TABLE", "Tuples");
|
||||
try { *_pSession << "CREATE TABLE Tuples "
|
||||
dropObject("TABLE", ExecUtil::tuples());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::tuples() <<
|
||||
"(i0 INTEGER, i1 INTEGER, i2 INTEGER, i3 INTEGER, i4 INTEGER, i5 INTEGER, i6 INTEGER, "
|
||||
"i7 INTEGER, i8 INTEGER, i9 INTEGER, i10 INTEGER, i11 INTEGER, i12 INTEGER, i13 INTEGER,"
|
||||
"i14 INTEGER, i15 INTEGER, i16 INTEGER, i17 INTEGER, i18 INTEGER, i19 INTEGER)", now; }
|
||||
@ -343,8 +343,8 @@ void ODBCMySQLTest::recreateTuplesTable()
|
||||
|
||||
void ODBCMySQLTest::recreateVectorsTable()
|
||||
{
|
||||
dropObject("TABLE", "Vectors");
|
||||
try { *_pSession << "CREATE TABLE Vectors (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::vectors() );
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::vectors() << " (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
}
|
||||
@ -352,8 +352,8 @@ void ODBCMySQLTest::recreateVectorsTable()
|
||||
|
||||
void ODBCMySQLTest::recreateAnysTable()
|
||||
{
|
||||
dropObject("TABLE", "Anys");
|
||||
try { *_pSession << "CREATE TABLE Anys (i0 INTEGER, flt0 DOUBLE, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::anys() );
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::anys() << " (i0 INTEGER, flt0 DOUBLE, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
}
|
||||
@ -361,8 +361,8 @@ void ODBCMySQLTest::recreateAnysTable()
|
||||
|
||||
void ODBCMySQLTest::recreateNullsTable(const std::string& notNull)
|
||||
{
|
||||
dropObject("TABLE", "NullTest");
|
||||
try { *_pSession << format("CREATE TABLE NullTest (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)",
|
||||
dropObject("TABLE", ExecUtil::nulltest());
|
||||
try { *_pSession << format("CREATE TABLE %s (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)", ExecUtil::nulltest(),
|
||||
notNull,
|
||||
notNull,
|
||||
notNull), now; }
|
||||
@ -373,8 +373,8 @@ void ODBCMySQLTest::recreateNullsTable(const std::string& notNull)
|
||||
|
||||
void ODBCMySQLTest::recreateMiscTable()
|
||||
{
|
||||
dropObject("TABLE", "MiscTest");
|
||||
try { *_pSession << "CREATE TABLE MiscTest "
|
||||
dropObject("TABLE", ExecUtil::misctest());
|
||||
try { *_pSession << "CREATE TABLE "<< ExecUtil::misctest() <<
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARBINARY(30),"
|
||||
"Third INTEGER,"
|
||||
@ -387,8 +387,8 @@ void ODBCMySQLTest::recreateMiscTable()
|
||||
|
||||
void ODBCMySQLTest::recreateLogTable()
|
||||
{
|
||||
dropObject("TABLE", "T_POCO_LOG");
|
||||
dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
|
||||
dropObject("TABLE", ExecUtil::pocolog());;
|
||||
dropObject("TABLE", ExecUtil::pocolog_a());;
|
||||
|
||||
try
|
||||
{
|
||||
@ -402,8 +402,8 @@ void ODBCMySQLTest::recreateLogTable()
|
||||
"Text VARCHAR(100),"
|
||||
"DateTime DATETIME)";
|
||||
|
||||
session() << sql, "T_POCO_LOG", now;
|
||||
session() << sql, "T_POCO_LOG_ARCHIVE", now;
|
||||
session() << sql, ExecUtil::pocolog(), now;
|
||||
session() << sql, ExecUtil::pocolog_a(), now;
|
||||
|
||||
} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
@ -422,6 +422,7 @@ CppUnit::Test* ODBCMySQLTest::suite()
|
||||
|
||||
CppUnit_addTest(pSuite, ODBCMySQLTest, testBareboneODBC);
|
||||
CppUnit_addTest(pSuite, ODBCMySQLTest, testZeroRows);
|
||||
CppUnit_addTest(pSuite, ODBCMySQLTest, testSyntaxError);
|
||||
CppUnit_addTest(pSuite, ODBCMySQLTest, testSimpleAccess);
|
||||
CppUnit_addTest(pSuite, ODBCMySQLTest, testComplexType);
|
||||
CppUnit_addTest(pSuite, ODBCMySQLTest, testSimpleAccessVector);
|
||||
|
@ -85,11 +85,11 @@ std::string ODBCOracleTest::_connectString = "DRIVER={" ORACLE_ODBC_DRI
|
||||
|
||||
const std::string ODBCOracleTest::MULTI_INSERT =
|
||||
"BEGIN "
|
||||
"INSERT INTO Test VALUES ('1', 2, 3.5);"
|
||||
"INSERT INTO Test VALUES ('2', 3, 4.5);"
|
||||
"INSERT INTO Test VALUES ('3', 4, 5.5);"
|
||||
"INSERT INTO Test VALUES ('4', 5, 6.5);"
|
||||
"INSERT INTO Test VALUES ('5', 6, 7.5);"
|
||||
"INSERT INTO " + ExecUtil::test_tbl() + " VALUES ('1', 2, 3.5);"
|
||||
"INSERT INTO " + ExecUtil::test_tbl() + " VALUES ('2', 3, 4.5);"
|
||||
"INSERT INTO " + ExecUtil::test_tbl() + " VALUES ('3', 4, 5.5);"
|
||||
"INSERT INTO " + ExecUtil::test_tbl() + " VALUES ('4', 5, 6.5);"
|
||||
"INSERT INTO " + ExecUtil::test_tbl() + " VALUES ('5', 6, 7.5);"
|
||||
"END;";
|
||||
|
||||
const std::string ODBCOracleTest::MULTI_SELECT =
|
||||
@ -109,7 +109,7 @@ ODBCOracleTest::~ODBCOracleTest()
|
||||
|
||||
void ODBCOracleTest::testBarebone()
|
||||
{
|
||||
std::string tableCreateString = "CREATE TABLE Test "
|
||||
std::string tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third BLOB,"
|
||||
@ -122,7 +122,7 @@ void ODBCOracleTest::testBarebone()
|
||||
_pExecutor->bareboneODBCTest(_connectString, tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL);
|
||||
_pExecutor->bareboneODBCTest(_connectString, tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND);
|
||||
|
||||
tableCreateString = "CREATE TABLE Test "
|
||||
tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second INTEGER,"
|
||||
"Third NUMBER)";
|
||||
@ -134,11 +134,11 @@ void ODBCOracleTest::testBarebone()
|
||||
"ret4 OUT SYS_REFCURSOR,"
|
||||
"ret5 OUT SYS_REFCURSOR) IS "
|
||||
"BEGIN "
|
||||
"OPEN ret1 FOR SELECT * FROM Test WHERE First = '1';"
|
||||
"OPEN ret2 FOR SELECT * FROM Test WHERE First = '2';"
|
||||
"OPEN ret3 FOR SELECT * FROM Test WHERE First = '3';"
|
||||
"OPEN ret4 FOR SELECT * FROM Test WHERE First = '4';"
|
||||
"OPEN ret5 FOR SELECT * FROM Test WHERE First = '5';"
|
||||
"OPEN ret1 FOR SELECT * FROM " + ExecUtil::test_tbl() + " WHERE First = '1';"
|
||||
"OPEN ret2 FOR SELECT * FROM " + ExecUtil::test_tbl() + " WHERE First = '2';"
|
||||
"OPEN ret3 FOR SELECT * FROM " + ExecUtil::test_tbl() + " WHERE First = '3';"
|
||||
"OPEN ret4 FOR SELECT * FROM " + ExecUtil::test_tbl() + " WHERE First = '4';"
|
||||
"OPEN ret5 FOR SELECT * FROM " + ExecUtil::test_tbl() + " WHERE First = '5';"
|
||||
"END multiResultsProcedure;" , now;
|
||||
|
||||
_pExecutor->bareboneODBCMultiResultTest(_connectString,
|
||||
@ -385,14 +385,14 @@ void ODBCOracleTest::testCursorStoredProcedure()
|
||||
people.push_back(Person("Simpson", "Homer", "Springfield", 42));
|
||||
people.push_back(Person("Simpson", "Bart", "Springfield", 12));
|
||||
people.push_back(Person("Simpson", "Lisa", "Springfield", 10));
|
||||
*_pSession << "INSERT INTO Person VALUES (?, ?, ?, ?)", use(people), now;
|
||||
*_pSession << "INSERT INTO " << ExecUtil::person() << " VALUES (?, ?, ?, ?)", use(people), now;
|
||||
|
||||
*_pSession << "CREATE OR REPLACE "
|
||||
"PROCEDURE storedCursorProcedure(ret OUT SYS_REFCURSOR, ageLimit IN NUMBER) IS "
|
||||
" BEGIN "
|
||||
" OPEN ret FOR "
|
||||
" SELECT * "
|
||||
" FROM Person "
|
||||
" FROM " << ExecUtil::person() <<
|
||||
" WHERE Age < ageLimit "
|
||||
" ORDER BY Age DESC; "
|
||||
" END storedCursorProcedure;" , now;
|
||||
@ -413,7 +413,7 @@ void ODBCOracleTest::testCursorStoredProcedure()
|
||||
assert (rs["Address"] == "Springfield");
|
||||
assert (rs["Age"] == 12);
|
||||
|
||||
dropObject("TABLE", "Person");
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
dropObject("PROCEDURE", "storedCursorProcedure");
|
||||
|
||||
k += 2;
|
||||
@ -523,7 +523,7 @@ void ODBCOracleTest::testCursorStoredFunction()
|
||||
people.push_back(Person("Simpson", "Homer", "Springfield", 42));
|
||||
people.push_back(Person("Simpson", "Bart", "Springfield", 12));
|
||||
people.push_back(Person("Simpson", "Lisa", "Springfield", 10));
|
||||
*_pSession << "INSERT INTO Person VALUES (?, ?, ?, ?)", use(people), now;
|
||||
*_pSession << "INSERT INTO " << ExecUtil::person() << " VALUES (?, ?, ?, ?)", use(people), now;
|
||||
|
||||
*_pSession << "CREATE OR REPLACE "
|
||||
"FUNCTION storedCursorFunction(ageLimit IN NUMBER) RETURN SYS_REFCURSOR IS "
|
||||
@ -531,7 +531,7 @@ void ODBCOracleTest::testCursorStoredFunction()
|
||||
" BEGIN "
|
||||
" OPEN ret FOR "
|
||||
" SELECT * "
|
||||
" FROM Person "
|
||||
" FROM " << ExecUtil::person() <<
|
||||
" WHERE Age < ageLimit "
|
||||
" ORDER BY Age DESC; "
|
||||
" RETURN ret; "
|
||||
@ -553,7 +553,7 @@ void ODBCOracleTest::testCursorStoredFunction()
|
||||
assert (rs["Address"] == "Springfield");
|
||||
assert (rs["Age"] == 12);
|
||||
|
||||
dropObject("TABLE", "Person");
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
dropObject("FUNCTION", "storedCursorFunction");
|
||||
|
||||
k += 2;
|
||||
@ -571,9 +571,9 @@ void ODBCOracleTest::testMultipleResults()
|
||||
" ret2 OUT SYS_REFCURSOR,"
|
||||
" ret3 OUT SYS_REFCURSOR) IS "
|
||||
"BEGIN "
|
||||
" OPEN ret1 FOR SELECT * FROM Person WHERE Age = paramAge1;"
|
||||
" OPEN ret2 FOR SELECT Age FROM Person WHERE FirstName = 'Bart';"
|
||||
" OPEN ret3 FOR SELECT * FROM Person WHERE Age = paramAge2 OR Age = paramAge3 ORDER BY Age;"
|
||||
" OPEN ret1 FOR SELECT * FROM " + ExecUtil::person() + " WHERE Age = paramAge1;"
|
||||
" OPEN ret2 FOR SELECT Age FROM " + ExecUtil::person() + " WHERE FirstName = 'Bart';"
|
||||
" OPEN ret3 FOR SELECT * FROM " + ExecUtil::person() + " WHERE Age = paramAge2 OR Age = paramAge3 ORDER BY Age;"
|
||||
"END multiResultsProcedure;";
|
||||
|
||||
for (int i = 0; i < 8;)
|
||||
@ -598,18 +598,18 @@ void ODBCOracleTest::testAutoTransaction()
|
||||
recreateIntsTable();
|
||||
|
||||
session().setFeature("autoCommit", true);
|
||||
session() << "INSERT INTO Strings VALUES (1)", now;
|
||||
localSession << "SELECT count(*) FROM Strings", into(count), now;
|
||||
session() << "INSERT INTO " << ExecUtil::strings() << " VALUES (1)", now;
|
||||
localSession << "SELECT count(*) FROM " << ExecUtil::person() , into(count), now;
|
||||
assert (1 == count);
|
||||
session() << "INSERT INTO Strings VALUES (2)", now;
|
||||
localSession << "SELECT count(*) FROM Strings", into(count), now;
|
||||
session() << "INSERT INTO " << ExecUtil::strings() << " VALUES (2)", now;
|
||||
localSession << "SELECT count(*) FROM " << ExecUtil::strings(), into(count), now;
|
||||
assert (2 == count);
|
||||
session() << "INSERT INTO Strings VALUES (3)", now;
|
||||
localSession << "SELECT count(*) FROM Strings", into(count), now;
|
||||
session() << "INSERT INTO " << ExecUtil::strings() << " VALUES (3)", now;
|
||||
localSession << "SELECT count(*) FROM " << ExecUtil::strings(), into(count), now;
|
||||
assert (3 == count);
|
||||
|
||||
session() << "DELETE FROM Strings", now;
|
||||
localSession << "SELECT count(*) FROM Strings", into(count), now;
|
||||
session() << "DELETE FROM " << ExecUtil::strings(), now;
|
||||
localSession << "SELECT count(*) FROM " << ExecUtil::strings(), into(count), now;
|
||||
assert (0 == count);
|
||||
|
||||
session().setFeature("autoCommit", false);
|
||||
@ -617,26 +617,26 @@ void ODBCOracleTest::testAutoTransaction()
|
||||
try
|
||||
{
|
||||
AutoTransaction at(session());
|
||||
session() << "INSERT INTO Strings VALUES (1)", now;
|
||||
session() << "INSERT INTO Strings VALUES (2)", now;
|
||||
session() << "INSERT INTO " << ExecUtil::strings() << " VALUES (1)", now;
|
||||
session() << "INSERT INTO " << ExecUtil::strings() << " VALUES (2)", now;
|
||||
session() << "BAD QUERY", now;
|
||||
} catch (Poco::Exception&) {}
|
||||
|
||||
session() << "SELECT count(*) FROM Strings", into(count), now;
|
||||
session() << "SELECT count(*) FROM " << ExecUtil::strings(), into(count), now;
|
||||
assert (0 == count);
|
||||
|
||||
AutoTransaction at(session());
|
||||
|
||||
session() << "INSERT INTO Strings VALUES (1)", now;
|
||||
session() << "INSERT INTO Strings VALUES (2)", now;
|
||||
session() << "INSERT INTO Strings VALUES (3)", now;
|
||||
session() << "INSERT INTO " << ExecUtil::strings() << " VALUES (1)", now;
|
||||
session() << "INSERT INTO " << ExecUtil::strings() << " VALUES (2)", now;
|
||||
session() << "INSERT INTO " << ExecUtil::strings() << " VALUES (3)", now;
|
||||
|
||||
localSession << "SELECT count(*) FROM Strings", into(count), now;
|
||||
localSession << "SELECT count(*) FROM " << ExecUtil::strings(), into(count), now;
|
||||
assert (0 == count);
|
||||
|
||||
at.commit();
|
||||
|
||||
localSession << "SELECT count(*) FROM Strings", into(count), now;
|
||||
localSession << "SELECT count(*) FROM " << ExecUtil::strings(), into(count), now;
|
||||
assert (3 == count);
|
||||
|
||||
session().setFeature("autoCommit", ac);
|
||||
@ -671,8 +671,8 @@ void ODBCOracleTest::dropObject(const std::string& type, const std::string& name
|
||||
|
||||
void ODBCOracleTest::recreateNullableTable()
|
||||
{
|
||||
dropObject("TABLE", "NullableTest");
|
||||
try { *_pSession << "CREATE TABLE NullableTest (EmptyString VARCHAR2(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat NUMBER NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
dropObject("TABLE", ExecUtil::nullabletest());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::nullabletest() << " (EmptyString VARCHAR2(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat NUMBER NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -680,8 +680,8 @@ void ODBCOracleTest::recreateNullableTable()
|
||||
|
||||
void ODBCOracleTest::recreatePersonTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR2(30), FirstName VARCHAR2(30), Address VARCHAR2(30), Age INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR2(30), FirstName VARCHAR2(30), Address VARCHAR2(30), Age INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -689,8 +689,8 @@ void ODBCOracleTest::recreatePersonTable()
|
||||
|
||||
void ODBCOracleTest::recreatePersonTupleTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName1 VARCHAR2(30), FirstName1 VARCHAR2(30), Address1 VARCHAR2(30), Age1 INTEGER,"
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName1 VARCHAR2(30), FirstName1 VARCHAR2(30), Address1 VARCHAR2(30), Age1 INTEGER,"
|
||||
"LastName2 VARCHAR2(30), FirstName2 VARCHAR2(30), Address2 VARCHAR2(30), Age2 INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTupleTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTupleTable()"); }
|
||||
@ -699,8 +699,8 @@ void ODBCOracleTest::recreatePersonTupleTable()
|
||||
|
||||
void ODBCOracleTest::recreatePersonBLOBTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BLOB)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BLOB)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
}
|
||||
@ -708,8 +708,8 @@ void ODBCOracleTest::recreatePersonBLOBTable()
|
||||
|
||||
void ODBCOracleTest::recreatePersonDateTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born TIMESTAMP)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born TIMESTAMP)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
}
|
||||
@ -717,8 +717,8 @@ void ODBCOracleTest::recreatePersonDateTimeTable()
|
||||
|
||||
void ODBCOracleTest::recreatePersonDateTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTable()"); }
|
||||
}
|
||||
@ -726,8 +726,8 @@ void ODBCOracleTest::recreatePersonDateTable()
|
||||
|
||||
void ODBCOracleTest::recreateIntsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::strings() <<" (str INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
}
|
||||
@ -735,8 +735,8 @@ void ODBCOracleTest::recreateIntsTable()
|
||||
|
||||
void ODBCOracleTest::recreateStringsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::strings() <<" (str VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
}
|
||||
@ -744,8 +744,8 @@ void ODBCOracleTest::recreateStringsTable()
|
||||
|
||||
void ODBCOracleTest::recreateFloatsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { *_pSession << "CREATE TABLE Strings (str NUMBER)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::strings() <<" (str NUMBER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
}
|
||||
@ -753,8 +753,8 @@ void ODBCOracleTest::recreateFloatsTable()
|
||||
|
||||
void ODBCOracleTest::recreateTuplesTable()
|
||||
{
|
||||
dropObject("TABLE", "Tuples");
|
||||
try { *_pSession << "CREATE TABLE Tuples "
|
||||
dropObject("TABLE", ExecUtil::tuples());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::tuples() <<
|
||||
"(int0 INTEGER, int1 INTEGER, int2 INTEGER, int3 INTEGER, int4 INTEGER, int5 INTEGER, int6 INTEGER, "
|
||||
"int7 INTEGER, int8 INTEGER, int9 INTEGER, int10 INTEGER, int11 INTEGER, int12 INTEGER, int13 INTEGER,"
|
||||
"int14 INTEGER, int15 INTEGER, int16 INTEGER, int17 INTEGER, int18 INTEGER, int19 INTEGER)", now; }
|
||||
@ -765,8 +765,8 @@ void ODBCOracleTest::recreateTuplesTable()
|
||||
|
||||
void ODBCOracleTest::recreateVectorsTable()
|
||||
{
|
||||
dropObject("TABLE", "Vectors");
|
||||
try { *_pSession << "CREATE TABLE Vectors (int0 INTEGER, flt0 NUMBER(5,2), str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::vectors());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::vectors() << " (int0 INTEGER, flt0 NUMBER(5,2), str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
}
|
||||
@ -774,8 +774,8 @@ void ODBCOracleTest::recreateVectorsTable()
|
||||
|
||||
void ODBCOracleTest::recreateAnysTable()
|
||||
{
|
||||
dropObject("TABLE", "Anys");
|
||||
try { *_pSession << "CREATE TABLE Anys (int0 INTEGER, flt0 NUMBER, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::anys() );
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::anys() << " (int0 INTEGER, flt0 NUMBER, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
}
|
||||
@ -783,8 +783,8 @@ void ODBCOracleTest::recreateAnysTable()
|
||||
|
||||
void ODBCOracleTest::recreateNullsTable(const std::string& notNull)
|
||||
{
|
||||
dropObject("TABLE", "NullTest");
|
||||
try { *_pSession << format("CREATE TABLE NullTest (i INTEGER %s, r NUMBER %s, v VARCHAR(30) %s)",
|
||||
dropObject("TABLE", ExecUtil::nulltest());
|
||||
try { *_pSession << format("CREATE TABLE %s (i INTEGER %s, r NUMBER %s, v VARCHAR(30) %s)",ExecUtil::nulltest(),
|
||||
notNull,
|
||||
notNull,
|
||||
notNull), now; }
|
||||
@ -795,10 +795,10 @@ void ODBCOracleTest::recreateNullsTable(const std::string& notNull)
|
||||
|
||||
void ODBCOracleTest::recreateMiscTable()
|
||||
{
|
||||
dropObject("TABLE", "MiscTest");
|
||||
dropObject("TABLE", ExecUtil::misctest());
|
||||
try
|
||||
{
|
||||
session() << "CREATE TABLE MiscTest "
|
||||
session() << "CREATE TABLE " << ExecUtil::misctest() <<
|
||||
"(First VARCHAR(30),"
|
||||
"Second BLOB,"
|
||||
"Third INTEGER,"
|
||||
@ -811,8 +811,8 @@ void ODBCOracleTest::recreateMiscTable()
|
||||
|
||||
void ODBCOracleTest::recreateLogTable()
|
||||
{
|
||||
dropObject("TABLE", "T_POCO_LOG");
|
||||
dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
|
||||
dropObject("TABLE", ExecUtil::pocolog());;
|
||||
dropObject("TABLE", ExecUtil::pocolog_a());;
|
||||
|
||||
try
|
||||
{
|
||||
@ -826,8 +826,8 @@ void ODBCOracleTest::recreateLogTable()
|
||||
"Text VARCHAR(100),"
|
||||
"DateTime TIMESTAMP)";
|
||||
|
||||
session() << sql, "T_POCO_LOG", now;
|
||||
session() << sql, "T_POCO_LOG_ARCHIVE", now;
|
||||
session() << sql, ExecUtil::pocolog(), now;
|
||||
session() << sql, ExecUtil::pocolog_a(), now;
|
||||
|
||||
} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
@ -857,6 +857,7 @@ CppUnit::Test* ODBCOracleTest::suite()
|
||||
|
||||
CppUnit_addTest(pSuite, ODBCOracleTest, testBareboneODBC);
|
||||
CppUnit_addTest(pSuite, ODBCOracleTest, testZeroRows);
|
||||
CppUnit_addTest(pSuite, ODBCOracleTest, testSyntaxError);
|
||||
CppUnit_addTest(pSuite, ODBCOracleTest, testSimpleAccess);
|
||||
CppUnit_addTest(pSuite, ODBCOracleTest, testComplexType);
|
||||
CppUnit_addTest(pSuite, ODBCOracleTest, testComplexTypeTuple);
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "Poco/Data/ODBC/Diagnostics.h"
|
||||
#include "Poco/Data/ODBC/ODBCException.h"
|
||||
#include <iostream>
|
||||
#include "Poco/Environment.h"
|
||||
|
||||
|
||||
using namespace Poco::Data::Keywords;
|
||||
@ -58,12 +59,42 @@ using Poco::DateTime;
|
||||
#endif
|
||||
|
||||
#define POSTGRESQL_SERVER POCO_ODBC_TEST_DATABASE_SERVER
|
||||
#define POSTGRESQL_PORT "5432"
|
||||
#define POSTGRESQL_DB "postgres"
|
||||
#define POSTGRESQL_UID "postgres"
|
||||
#define POSTGRESQL_PWD "postgres"
|
||||
|
||||
static std::string postgreSchema()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_POSTGRES_SCHEMA", "public");
|
||||
}
|
||||
|
||||
|
||||
static std::string postgreDriver()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_POSTGRES_DRIVER", POSTGRESQL_ODBC_DRIVER);
|
||||
}
|
||||
|
||||
static std::string postgreSettings()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_POSTGRES_SETTINGS", "");
|
||||
}
|
||||
|
||||
#define POSTGRESQL_VERSION "9.3"
|
||||
|
||||
static std::string postgreConnParams()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_POSTGRES_CONN", "DATABASE=postgres;"
|
||||
"SERVER=postgres;"
|
||||
"PORT=5432;");
|
||||
}
|
||||
|
||||
static std::string postgreUid()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_POSTGRES_UID", "");
|
||||
}
|
||||
|
||||
static std::string postgrePwd()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_POSTGRES_PWD", "");
|
||||
}
|
||||
|
||||
#ifdef POCO_OS_FAMILY_WINDOWS
|
||||
const std::string ODBCPostgreSQLTest::_libDir = "C:\\\\Program Files\\\\PostgreSQL\\\\" POSTGRESQL_VERSION "\\\\lib\\\\";
|
||||
#else
|
||||
@ -73,17 +104,15 @@ const std::string ODBCPostgreSQLTest::_libDir = "/usr/local/pgsql/lib/";
|
||||
|
||||
ODBCTest::SessionPtr ODBCPostgreSQLTest::_pSession;
|
||||
ODBCTest::ExecPtr ODBCPostgreSQLTest::_pExecutor;
|
||||
std::string ODBCPostgreSQLTest::_driver = POSTGRESQL_ODBC_DRIVER;
|
||||
std::string ODBCPostgreSQLTest::_driver = postgreDriver();
|
||||
std::string ODBCPostgreSQLTest::_dsn = POSTGRESQL_DSN;
|
||||
std::string ODBCPostgreSQLTest::_uid = POSTGRESQL_UID;
|
||||
std::string ODBCPostgreSQLTest::_pwd = POSTGRESQL_PWD;
|
||||
std::string ODBCPostgreSQLTest::_connectString =
|
||||
"DRIVER=" POSTGRESQL_ODBC_DRIVER ";"
|
||||
"DATABASE=" POSTGRESQL_DB ";"
|
||||
"SERVER=" POSTGRESQL_SERVER ";"
|
||||
"PORT=" POSTGRESQL_PORT ";"
|
||||
"UID=" POSTGRESQL_UID ";"
|
||||
"PWD=" POSTGRESQL_PWD ";"
|
||||
std::string ODBCPostgreSQLTest::_uid = postgreUid();
|
||||
std::string ODBCPostgreSQLTest::_pwd = postgrePwd();
|
||||
std::string ODBCPostgreSQLTest::_connectString =
|
||||
"DRIVER=" + postgreDriver() + ";"
|
||||
+ postgreConnParams() + ";" +
|
||||
"UID=" + postgreUid() + ";"
|
||||
"PWD=" + postgrePwd() + ";"
|
||||
"SSLMODE=prefer;"
|
||||
"LowerCaseIdentifier=0;"
|
||||
"UseServerSidePrepare=0;"
|
||||
@ -108,7 +137,7 @@ std::string ODBCPostgreSQLTest::_connectString =
|
||||
"UnknownSizes=0;"
|
||||
"Socket=8192;"
|
||||
"Fetch=100;"
|
||||
"ConnSettings=;"
|
||||
"ConnSettings=" + postgreSettings() + ";"
|
||||
"ShowSystemTables=0;"
|
||||
"RowVersioning=0;"
|
||||
"ShowOidColumn=0;"
|
||||
@ -129,7 +158,7 @@ ODBCPostgreSQLTest::~ODBCPostgreSQLTest()
|
||||
|
||||
void ODBCPostgreSQLTest::testBareboneODBC()
|
||||
{
|
||||
std::string tableCreateString = "CREATE TABLE Test "
|
||||
std::string tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third BYTEA,"
|
||||
@ -142,7 +171,7 @@ void ODBCPostgreSQLTest::testBareboneODBC()
|
||||
executor().bareboneODBCTest(_connectString, tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL);
|
||||
executor().bareboneODBCTest(_connectString, tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND);
|
||||
|
||||
tableCreateString = "CREATE TABLE Test "
|
||||
tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third BYTEA,"
|
||||
@ -157,7 +186,7 @@ void ODBCPostgreSQLTest::testBareboneODBC()
|
||||
|
||||
//neither pSQL ODBC nor Mammoth drivers support multiple results properly
|
||||
/*
|
||||
tableCreateString = "CREATE TABLE Test "
|
||||
tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second INTEGER,"
|
||||
"Third FLOAT)";
|
||||
@ -201,17 +230,18 @@ void ODBCPostgreSQLTest::testStoredFunction()
|
||||
{
|
||||
configurePLPgSQL();
|
||||
|
||||
std::string func("testStoredFunction()");
|
||||
const std::string func("testStoredFunction()");
|
||||
const std::string nm = ExecUtil::stored_func();
|
||||
|
||||
for (int k = 0; k < 8;)
|
||||
{
|
||||
session().setFeature("autoBind", bindValue(k));
|
||||
session().setFeature("autoExtract", bindValue(k+1));
|
||||
|
||||
dropObject("FUNCTION", "storedFunction()");
|
||||
dropObject("FUNCTION", nm + "()");
|
||||
try
|
||||
{
|
||||
session() << "CREATE FUNCTION storedFunction() RETURNS INTEGER AS '"
|
||||
session() << "CREATE FUNCTION " << nm << "() RETURNS INTEGER AS '"
|
||||
"BEGIN "
|
||||
" return -1; "
|
||||
"END;'"
|
||||
@ -221,13 +251,13 @@ void ODBCPostgreSQLTest::testStoredFunction()
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (func); }
|
||||
|
||||
int i = 0;
|
||||
session() << "{? = call storedFunction()}", out(i), now;
|
||||
session() << "{? = call "<< nm << "()}", out(i), now;
|
||||
assert(-1 == i);
|
||||
dropObject("FUNCTION", "storedFunction()");
|
||||
dropObject("FUNCTION", nm + "(INTEGER)");
|
||||
|
||||
try
|
||||
{
|
||||
session() << "CREATE FUNCTION storedFunction(INTEGER) RETURNS INTEGER AS '"
|
||||
session() << "CREATE FUNCTION " << nm << "(INTEGER) RETURNS INTEGER AS '"
|
||||
"BEGIN "
|
||||
" RETURN $1 * $1; "
|
||||
"END;'"
|
||||
@ -238,14 +268,14 @@ void ODBCPostgreSQLTest::testStoredFunction()
|
||||
|
||||
i = 2;
|
||||
int result = 0;
|
||||
session() << "{? = call storedFunction(?)}", out(result), in(i), now;
|
||||
session() << "{? = call " << nm << "(?)}", out(result), in(i), now;
|
||||
assert(4 == result);
|
||||
dropObject("FUNCTION", "storedFunction(INTEGER)");
|
||||
dropObject("FUNCTION", nm + "(INTEGER)");
|
||||
|
||||
dropObject("FUNCTION", "storedFunction(TIMESTAMP)");
|
||||
dropObject("FUNCTION", nm + "(TIMESTAMP)");
|
||||
try
|
||||
{
|
||||
session() << "CREATE FUNCTION storedFunction(TIMESTAMP) RETURNS TIMESTAMP AS '"
|
||||
session() << "CREATE FUNCTION " << nm << "(TIMESTAMP) RETURNS TIMESTAMP AS '"
|
||||
"BEGIN "
|
||||
" RETURN $1; "
|
||||
"END;'"
|
||||
@ -256,14 +286,14 @@ void ODBCPostgreSQLTest::testStoredFunction()
|
||||
|
||||
DateTime dtIn(1965, 6, 18, 5, 35, 1);
|
||||
DateTime dtOut;
|
||||
session() << "{? = call storedFunction(?)}", out(dtOut), in(dtIn), now;
|
||||
session() << "{? = call " << nm << "(?)}", out(dtOut), in(dtIn), now;
|
||||
assert(dtOut == dtIn);
|
||||
dropObject("FUNCTION", "storedFunction(TIMESTAMP)");
|
||||
dropObject("FUNCTION", nm + "(TIMESTAMP)");
|
||||
|
||||
dropObject("FUNCTION", "storedFunction(TEXT, TEXT)");
|
||||
dropObject("FUNCTION", nm + "(TEXT, TEXT)");
|
||||
try
|
||||
{
|
||||
session() << "CREATE FUNCTION storedFunction(TEXT,TEXT) RETURNS TEXT AS '"
|
||||
session() << "CREATE FUNCTION " << nm << "(TEXT,TEXT) RETURNS TEXT AS '"
|
||||
"BEGIN "
|
||||
" RETURN $1 || '', '' || $2 || ''!'';"
|
||||
"END;'"
|
||||
@ -277,13 +307,13 @@ void ODBCPostgreSQLTest::testStoredFunction()
|
||||
std::string ret;
|
||||
try
|
||||
{
|
||||
session() << "{? = call storedFunction(?,?)}", out(ret), in(param1), in(param2), now;
|
||||
session() << "{? = call " << nm << "(?,?)}", out(ret), in(param1), in(param2), now;
|
||||
}
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (func); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (func); }
|
||||
|
||||
assert(ret == "Hello, world!");
|
||||
dropObject("FUNCTION", "storedFunction(TEXT, TEXT)");
|
||||
dropObject("FUNCTION", nm + "(TEXT, TEXT)");
|
||||
|
||||
k += 2;
|
||||
}
|
||||
@ -292,7 +322,10 @@ void ODBCPostgreSQLTest::testStoredFunction()
|
||||
|
||||
void ODBCPostgreSQLTest::testStoredFunctionAny()
|
||||
{
|
||||
session() << "CREATE FUNCTION storedFunction(INTEGER) RETURNS INTEGER AS '"
|
||||
const std::string nm = ExecUtil::stored_func();
|
||||
|
||||
dropObject("FUNCTION", nm + "(INTEGER)");
|
||||
session() << "CREATE FUNCTION "<< nm << "(INTEGER) RETURNS INTEGER AS '"
|
||||
"BEGIN "
|
||||
" RETURN $1 * $1; "
|
||||
"END;'"
|
||||
@ -305,19 +338,23 @@ void ODBCPostgreSQLTest::testStoredFunctionAny()
|
||||
|
||||
Any i = 2;
|
||||
Any result = 0;
|
||||
session() << "{? = call storedFunction(?)}", out(result), in(i), now;
|
||||
session() << "{? = call " << nm << "(?)}", out(result), in(i), now;
|
||||
assert(4 == AnyCast<int>(result));
|
||||
|
||||
k += 2;
|
||||
}
|
||||
|
||||
dropObject("FUNCTION", "storedFunction(INTEGER)");
|
||||
dropObject("FUNCTION", nm + "(INTEGER)");
|
||||
}
|
||||
|
||||
|
||||
void ODBCPostgreSQLTest::testStoredFunctionDynamicAny()
|
||||
{
|
||||
session() << "CREATE FUNCTION storedFunction(INTEGER) RETURNS INTEGER AS '"
|
||||
const std::string nm = ExecUtil::stored_func();
|
||||
|
||||
dropObject("FUNCTION", nm + "(INTEGER)");
|
||||
|
||||
session() << "CREATE FUNCTION " << nm << "(INTEGER) RETURNS INTEGER AS '"
|
||||
"BEGIN "
|
||||
" RETURN $1 * $1; "
|
||||
"END;'"
|
||||
@ -330,13 +367,13 @@ void ODBCPostgreSQLTest::testStoredFunctionDynamicAny()
|
||||
|
||||
DynamicAny i = 2;
|
||||
DynamicAny result = 0;
|
||||
session() << "{? = call storedFunction(?)}", out(result), in(i), now;
|
||||
session() << "{? = call " << nm << "(?)}", out(result), in(i), now;
|
||||
assert(4 == result);
|
||||
|
||||
k += 2;
|
||||
}
|
||||
|
||||
dropObject("FUNCTION", "storedFunction(INTEGER)");
|
||||
dropObject("FUNCTION", nm + "(INTEGER)");
|
||||
}
|
||||
|
||||
|
||||
@ -390,8 +427,8 @@ void ODBCPostgreSQLTest::dropObject(const std::string& type, const std::string&
|
||||
|
||||
void ODBCPostgreSQLTest::recreateNullableTable()
|
||||
{
|
||||
dropObject("TABLE", "NullableTest");
|
||||
try { *_pSession << "CREATE TABLE NullableTest (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat FLOAT NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
dropObject("TABLE", ExecUtil::nullabletest());
|
||||
try { *_pSession << "CREATE TABLE "<< ExecUtil::nullabletest() << " (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat FLOAT NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -399,8 +436,8 @@ void ODBCPostgreSQLTest::recreateNullableTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreatePersonTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -408,8 +445,8 @@ void ODBCPostgreSQLTest::recreatePersonTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreatePersonBLOBTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BYTEA)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BYTEA)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
}
|
||||
@ -418,8 +455,8 @@ void ODBCPostgreSQLTest::recreatePersonBLOBTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreatePersonDateTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born TIMESTAMP)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born TIMESTAMP)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
}
|
||||
@ -427,8 +464,8 @@ void ODBCPostgreSQLTest::recreatePersonDateTimeTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreatePersonDateTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTable()"); }
|
||||
}
|
||||
@ -436,8 +473,8 @@ void ODBCPostgreSQLTest::recreatePersonDateTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreatePersonTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornTime TIME)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornTime TIME)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTimeTable()"); }
|
||||
}
|
||||
@ -445,8 +482,8 @@ void ODBCPostgreSQLTest::recreatePersonTimeTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateIntsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
}
|
||||
@ -454,8 +491,8 @@ void ODBCPostgreSQLTest::recreateIntsTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateStringsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
}
|
||||
@ -463,8 +500,8 @@ void ODBCPostgreSQLTest::recreateStringsTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateFloatsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str FLOAT)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str FLOAT)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
}
|
||||
@ -472,8 +509,8 @@ void ODBCPostgreSQLTest::recreateFloatsTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateTuplesTable()
|
||||
{
|
||||
dropObject("TABLE", "Tuples");
|
||||
try { session() << "CREATE TABLE Tuples "
|
||||
dropObject("TABLE", ExecUtil::tuples());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::tuples() <<
|
||||
"(int0 INTEGER, int1 INTEGER, int2 INTEGER, int3 INTEGER, int4 INTEGER, int5 INTEGER, int6 INTEGER, "
|
||||
"int7 INTEGER, int8 INTEGER, int9 INTEGER, int10 INTEGER, int11 INTEGER, int12 INTEGER, int13 INTEGER,"
|
||||
"int14 INTEGER, int15 INTEGER, int16 INTEGER, int17 INTEGER, int18 INTEGER, int19 INTEGER)", now; }
|
||||
@ -484,8 +521,8 @@ void ODBCPostgreSQLTest::recreateTuplesTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateVectorsTable()
|
||||
{
|
||||
dropObject("TABLE", "Vectors");
|
||||
try { session() << "CREATE TABLE Vectors (int0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::vectors());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::vectors() << " (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
}
|
||||
@ -493,8 +530,8 @@ void ODBCPostgreSQLTest::recreateVectorsTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateAnysTable()
|
||||
{
|
||||
dropObject("TABLE", "Anys");
|
||||
try { session() << "CREATE TABLE Anys (int0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::anys() );
|
||||
try { session() << "CREATE TABLE " << ExecUtil::anys() << " (int0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
}
|
||||
@ -502,8 +539,8 @@ void ODBCPostgreSQLTest::recreateAnysTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateNullsTable(const std::string& notNull)
|
||||
{
|
||||
dropObject("TABLE", "NullTest");
|
||||
try { session() << format("CREATE TABLE NullTest (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)",
|
||||
dropObject("TABLE", ExecUtil::nulltest());
|
||||
try { session() << format("CREATE TABLE %s (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)",ExecUtil::nulltest(),
|
||||
notNull,
|
||||
notNull,
|
||||
notNull), now; }
|
||||
@ -523,11 +560,11 @@ void ODBCPostgreSQLTest::recreateBoolTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateMiscTable()
|
||||
{
|
||||
dropObject("TABLE", "MiscTest");
|
||||
dropObject("TABLE", ExecUtil::misctest());
|
||||
try
|
||||
{
|
||||
// Mammoth does not bind columns properly
|
||||
session() << "CREATE TABLE MiscTest "
|
||||
session() << "CREATE TABLE "<< ExecUtil::misctest() <<
|
||||
"(First VARCHAR(30),"
|
||||
"Second BYTEA,"
|
||||
"Third INTEGER,"
|
||||
@ -540,8 +577,8 @@ void ODBCPostgreSQLTest::recreateMiscTable()
|
||||
|
||||
void ODBCPostgreSQLTest::recreateLogTable()
|
||||
{
|
||||
dropObject("TABLE", "T_POCO_LOG");
|
||||
dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
|
||||
dropObject("TABLE", ExecUtil::pocolog());;
|
||||
dropObject("TABLE", ExecUtil::pocolog_a());;
|
||||
|
||||
try
|
||||
{
|
||||
@ -555,8 +592,8 @@ void ODBCPostgreSQLTest::recreateLogTable()
|
||||
"Text VARCHAR,"
|
||||
"DateTime TIMESTAMP)";
|
||||
|
||||
session() << sql, "T_POCO_LOG", now;
|
||||
session() << sql, "T_POCO_LOG_ARCHIVE", now;
|
||||
session() << sql, ExecUtil::pocolog(), now;
|
||||
session() << sql, ExecUtil::pocolog_a(), now;
|
||||
|
||||
} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
@ -580,12 +617,20 @@ CppUnit::Test* ODBCPostgreSQLTest::suite()
|
||||
{
|
||||
std::cout << "*** Connected to [" << _driver << "] test database." << std::endl;
|
||||
|
||||
_pExecutor = new SQLExecutor(_driver + " SQL Executor", _pSession);
|
||||
std::string initSql;
|
||||
if (!postgreSchema().empty())
|
||||
{
|
||||
initSql = "SET search_path TO " + postgreSchema() + (postgreSchema() != std::string("public") ? ", public;" : ";");
|
||||
(*_pSession) << initSql, now;
|
||||
}
|
||||
|
||||
_pExecutor = new SQLExecutor(_driver + " SQL Executor", _pSession, initSql, postgreSchema());
|
||||
|
||||
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ODBCPostgreSQLTest");
|
||||
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testBareboneODBC);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testZeroRows);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testSyntaxError);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testSimpleAccess);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testComplexType);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testSimpleAccessVector);
|
||||
@ -668,7 +713,8 @@ CppUnit::Test* ODBCPostgreSQLTest::suite()
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testAny);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testDynamicAny);
|
||||
//neither pSQL ODBC nor Mammoth drivers support multiple results properly
|
||||
//CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testMultipleResults);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testMultipleResults);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testMultipleResultsNoProj);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testSQLChannel);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testSQLLogger);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testSessionTransaction);
|
||||
@ -677,6 +723,7 @@ CppUnit::Test* ODBCPostgreSQLTest::suite()
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testNullable);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testUnicode);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testReconnect);
|
||||
CppUnit_addTest(pSuite, ODBCPostgreSQLTest, testInsertStatReuse);
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ ODBCSQLServerTest::~ODBCSQLServerTest()
|
||||
|
||||
void ODBCSQLServerTest::testBareboneODBC()
|
||||
{
|
||||
std::string tableCreateString = "CREATE TABLE Test "
|
||||
std::string tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third VARBINARY(30),"
|
||||
@ -138,7 +138,7 @@ void ODBCSQLServerTest::testBareboneODBC()
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString,
|
||||
SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND, true, "CONVERT(VARBINARY(30),?)");
|
||||
|
||||
tableCreateString = "CREATE TABLE Test "
|
||||
tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second INTEGER,"
|
||||
"Third FLOAT)";
|
||||
@ -334,13 +334,13 @@ void ODBCSQLServerTest::testCursorStoredProcedure()
|
||||
people.push_back(Person("Simpson", "Homer", "Springfield", 42));
|
||||
people.push_back(Person("Simpson", "Bart", "Springfield", 12));
|
||||
people.push_back(Person("Simpson", "Lisa", "Springfield", 10));
|
||||
session() << "INSERT INTO Person VALUES (?, ?, ?, ?)", use(people), now;
|
||||
session() << "INSERT INTO " << ExecUtil::person() << " VALUES (?, ?, ?, ?)", use(people), now;
|
||||
|
||||
dropObject("PROCEDURE", "storedCursorProcedure");
|
||||
session() << "CREATE PROCEDURE storedCursorProcedure(@ageLimit int) AS "
|
||||
"BEGIN "
|
||||
" SELECT * "
|
||||
" FROM Person "
|
||||
" FROM " << ExecUtil::person() <<
|
||||
" WHERE Age < @ageLimit "
|
||||
" ORDER BY Age DESC; "
|
||||
"END;"
|
||||
@ -362,7 +362,7 @@ void ODBCSQLServerTest::testCursorStoredProcedure()
|
||||
assert (rs["Address"] == "Springfield");
|
||||
assert (rs["Age"] == 12);
|
||||
|
||||
dropObject("TABLE", "Person");
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
dropObject("PROCEDURE", "storedCursorProcedure");
|
||||
|
||||
k += 2;
|
||||
@ -553,8 +553,8 @@ void ODBCSQLServerTest::dropObject(const std::string& type, const std::string& n
|
||||
|
||||
void ODBCSQLServerTest::recreateNullableTable()
|
||||
{
|
||||
dropObject("TABLE", "NullableTest");
|
||||
try { *_pSession << "CREATE TABLE NullableTest (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat FLOAT NULL , EmptyDateTime DATETIME NULL)", now; }
|
||||
dropObject("TABLE", ExecUtil::nullabletest());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::nullabletest() << " (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat FLOAT NULL , EmptyDateTime DATETIME NULL)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -562,8 +562,8 @@ void ODBCSQLServerTest::recreateNullableTable()
|
||||
|
||||
void ODBCSQLServerTest::recreatePersonTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -571,8 +571,8 @@ void ODBCSQLServerTest::recreatePersonTable()
|
||||
|
||||
void ODBCSQLServerTest::recreatePersonBLOBTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image VARBINARY(MAX))", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image VARBINARY(MAX))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
}
|
||||
@ -580,8 +580,8 @@ void ODBCSQLServerTest::recreatePersonBLOBTable()
|
||||
|
||||
void ODBCSQLServerTest::recreatePersonDateTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born DATETIME)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born DATETIME)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
}
|
||||
@ -589,8 +589,8 @@ void ODBCSQLServerTest::recreatePersonDateTimeTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateIntsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
}
|
||||
@ -598,8 +598,8 @@ void ODBCSQLServerTest::recreateIntsTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateStringsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
}
|
||||
@ -607,8 +607,8 @@ void ODBCSQLServerTest::recreateStringsTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateFloatsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str FLOAT)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str FLOAT)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
}
|
||||
@ -616,8 +616,8 @@ void ODBCSQLServerTest::recreateFloatsTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateTuplesTable()
|
||||
{
|
||||
dropObject("TABLE", "Tuples");
|
||||
try { session() << "CREATE TABLE Tuples "
|
||||
dropObject("TABLE", ExecUtil::tuples());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::tuples() <<
|
||||
"(int0 INTEGER, int1 INTEGER, int2 INTEGER, int3 INTEGER, int4 INTEGER, int5 INTEGER, int6 INTEGER, "
|
||||
"int7 INTEGER, int8 INTEGER, int9 INTEGER, int10 INTEGER, int11 INTEGER, int12 INTEGER, int13 INTEGER,"
|
||||
"int14 INTEGER, int15 INTEGER, int16 INTEGER, int17 INTEGER, int18 INTEGER, int19 INTEGER)", now; }
|
||||
@ -637,8 +637,8 @@ void ODBCSQLServerTest::recreateVectorTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateVectorsTable()
|
||||
{
|
||||
dropObject("TABLE", "Vectors");
|
||||
try { session() << "CREATE TABLE Vectors (int0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::vectors());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::vectors() << " (int0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
}
|
||||
@ -646,8 +646,8 @@ void ODBCSQLServerTest::recreateVectorsTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateAnysTable()
|
||||
{
|
||||
dropObject("TABLE", "Anys");
|
||||
try { session() << "CREATE TABLE Anys (int0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::anys() );
|
||||
try { session() << "CREATE TABLE " << ExecUtil::anys() << " (int0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
}
|
||||
@ -655,8 +655,8 @@ void ODBCSQLServerTest::recreateAnysTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateNullsTable(const std::string& notNull)
|
||||
{
|
||||
dropObject("TABLE", "NullTest");
|
||||
try { session() << format("CREATE TABLE NullTest (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)",
|
||||
dropObject("TABLE", ExecUtil::nulltest());
|
||||
try { session() << format("CREATE TABLE %s (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)", ExecUtil::nulltest(),
|
||||
notNull,
|
||||
notNull,
|
||||
notNull), now; }
|
||||
@ -675,10 +675,10 @@ void ODBCSQLServerTest::recreateBoolTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateMiscTable()
|
||||
{
|
||||
dropObject("TABLE", "MiscTest");
|
||||
dropObject("TABLE", ExecUtil::misctest());
|
||||
try
|
||||
{
|
||||
session() << "CREATE TABLE MiscTest "
|
||||
session() << "CREATE TABLE "<< ExecUtil::misctest() <<
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARBINARY(30),"
|
||||
"Third INTEGER,"
|
||||
@ -692,8 +692,8 @@ void ODBCSQLServerTest::recreateMiscTable()
|
||||
|
||||
void ODBCSQLServerTest::recreateLogTable()
|
||||
{
|
||||
dropObject("TABLE", "T_POCO_LOG");
|
||||
dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
|
||||
dropObject("TABLE", ExecUtil::pocolog());;
|
||||
dropObject("TABLE", ExecUtil::pocolog_a());;
|
||||
|
||||
try
|
||||
{
|
||||
@ -707,8 +707,8 @@ void ODBCSQLServerTest::recreateLogTable()
|
||||
"Text VARCHAR(max),"
|
||||
"DateTime DATETIME)";
|
||||
|
||||
session() << sql, "T_POCO_LOG", now;
|
||||
session() << sql, "T_POCO_LOG_ARCHIVE", now;
|
||||
session() << sql, ExecUtil::pocolog(), now;
|
||||
session() << sql, ExecUtil::pocolog_a(), now;
|
||||
|
||||
} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
@ -738,6 +738,7 @@ CppUnit::Test* ODBCSQLServerTest::suite()
|
||||
|
||||
CppUnit_addTest(pSuite, ODBCSQLServerTest, testBareboneODBC);
|
||||
CppUnit_addTest(pSuite, ODBCSQLServerTest, testZeroRows);
|
||||
CppUnit_addTest(pSuite, ODBCSQLServerTest, testSyntaxError);
|
||||
CppUnit_addTest(pSuite, ODBCSQLServerTest, testSimpleAccess);
|
||||
CppUnit_addTest(pSuite, ODBCSQLServerTest, testComplexType);
|
||||
CppUnit_addTest(pSuite, ODBCSQLServerTest, testSimpleAccessVector);
|
||||
|
@ -64,7 +64,7 @@ ODBCSQLiteTest::~ODBCSQLiteTest()
|
||||
|
||||
void ODBCSQLiteTest::testBareboneODBC()
|
||||
{
|
||||
std::string tableCreateString = "CREATE TABLE Test "
|
||||
std::string tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third BLOB,"
|
||||
@ -77,7 +77,7 @@ void ODBCSQLiteTest::testBareboneODBC()
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL);
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND);
|
||||
|
||||
tableCreateString = "CREATE TABLE Test "
|
||||
tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third BLOB,"
|
||||
@ -90,7 +90,7 @@ void ODBCSQLiteTest::testBareboneODBC()
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL);
|
||||
executor().bareboneODBCTest(dbConnString(), tableCreateString, SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND);
|
||||
|
||||
tableCreateString = "CREATE TABLE Test "
|
||||
tableCreateString = "CREATE TABLE " + ExecUtil::test_tbl() +
|
||||
"(First VARCHAR(30),"
|
||||
"Second VARCHAR(30),"
|
||||
"Third BLOB,"
|
||||
@ -169,8 +169,8 @@ void ODBCSQLiteTest::dropObject(const std::string& type, const std::string& name
|
||||
|
||||
void ODBCSQLiteTest::recreateNullableTable()
|
||||
{
|
||||
dropObject("TABLE", "NullableTest");
|
||||
try { *_pSession << "CREATE TABLE NullableTest (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat REAL NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
dropObject("TABLE", ExecUtil::nullabletest());
|
||||
try { *_pSession << "CREATE TABLE " << ExecUtil::nullabletest() << " (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat REAL NULL , EmptyDateTime TIMESTAMP NULL)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -178,8 +178,8 @@ void ODBCSQLiteTest::recreateNullableTable()
|
||||
|
||||
void ODBCSQLiteTest::recreatePersonTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonTable()"); }
|
||||
}
|
||||
@ -187,8 +187,8 @@ void ODBCSQLiteTest::recreatePersonTable()
|
||||
|
||||
void ODBCSQLiteTest::recreatePersonBLOBTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BLOB)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image BLOB)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonBLOBTable()"); }
|
||||
}
|
||||
@ -196,8 +196,8 @@ void ODBCSQLiteTest::recreatePersonBLOBTable()
|
||||
|
||||
void ODBCSQLiteTest::recreatePersonDateTimeTable()
|
||||
{
|
||||
dropObject("TABLE", "Person");
|
||||
try { session() << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born TIMESTAMP)", now; }
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born TIMESTAMP)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreatePersonDateTimeTable()"); }
|
||||
}
|
||||
@ -205,8 +205,8 @@ void ODBCSQLiteTest::recreatePersonDateTimeTable()
|
||||
|
||||
void ODBCSQLiteTest::recreateIntsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str INTEGER)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str INTEGER)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateIntsTable()"); }
|
||||
}
|
||||
@ -214,8 +214,8 @@ void ODBCSQLiteTest::recreateIntsTable()
|
||||
|
||||
void ODBCSQLiteTest::recreateStringsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str VARCHAR(30))", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str VARCHAR(30))", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateStringsTable()"); }
|
||||
}
|
||||
@ -223,8 +223,8 @@ void ODBCSQLiteTest::recreateStringsTable()
|
||||
|
||||
void ODBCSQLiteTest::recreateFloatsTable()
|
||||
{
|
||||
dropObject("TABLE", "Strings");
|
||||
try { session() << "CREATE TABLE Strings (str REAL)", now; }
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() <<" (str REAL)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateFloatsTable()"); }
|
||||
}
|
||||
@ -232,8 +232,8 @@ void ODBCSQLiteTest::recreateFloatsTable()
|
||||
|
||||
void ODBCSQLiteTest::recreateTuplesTable()
|
||||
{
|
||||
dropObject("TABLE", "Tuples");
|
||||
try { session() << "CREATE TABLE Tuples "
|
||||
dropObject("TABLE", ExecUtil::tuples());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::tuples() <<
|
||||
"(int0 INTEGER, int1 INTEGER, int2 INTEGER, int3 INTEGER, int4 INTEGER, int5 INTEGER, int6 INTEGER, "
|
||||
"int7 INTEGER, int8 INTEGER, int9 INTEGER, int10 INTEGER, int11 INTEGER, int12 INTEGER, int13 INTEGER,"
|
||||
"int14 INTEGER, int15 INTEGER, int16 INTEGER, int17 INTEGER, int18 INTEGER, int19 INTEGER)", now; }
|
||||
@ -244,8 +244,8 @@ void ODBCSQLiteTest::recreateTuplesTable()
|
||||
|
||||
void ODBCSQLiteTest::recreateVectorsTable()
|
||||
{
|
||||
dropObject("TABLE", "Vectors");
|
||||
try { session() << "CREATE TABLE Vectors (int0 INTEGER, flt0 REAL, str0 VARCHAR)", now; }
|
||||
dropObject("TABLE", ExecUtil::vectors() );
|
||||
try { session() << "CREATE TABLE " << ExecUtil::vectors() << " (int0 INTEGER, flt0 REAL, str0 VARCHAR)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateVectorsTable()"); }
|
||||
}
|
||||
@ -253,8 +253,8 @@ void ODBCSQLiteTest::recreateVectorsTable()
|
||||
|
||||
void ODBCSQLiteTest::recreateAnysTable()
|
||||
{
|
||||
dropObject("TABLE", "Anys");
|
||||
try { session() << "CREATE TABLE Anys (int0 INTEGER, flt0 REAL, str0 VARCHAR)", now; }
|
||||
dropObject("TABLE", ExecUtil::anys() );
|
||||
try { session() << "CREATE TABLE " << ExecUtil::anys() << " (int0 INTEGER, flt0 REAL, str0 VARCHAR)", now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateAnysTable()"); }
|
||||
}
|
||||
@ -262,8 +262,8 @@ void ODBCSQLiteTest::recreateAnysTable()
|
||||
|
||||
void ODBCSQLiteTest::recreateNullsTable(const std::string& notNull)
|
||||
{
|
||||
dropObject("TABLE", "NullTest");
|
||||
try { session() << format("CREATE TABLE NullTest (i INTEGER %s, r REAL %s, v VARCHAR(30) %s)",
|
||||
dropObject("TABLE", ExecUtil::nulltest());
|
||||
try { session() << format("CREATE TABLE %s (i INTEGER %s, r REAL %s, v VARCHAR(30) %s)",ExecUtil::nulltest(),
|
||||
notNull,
|
||||
notNull,
|
||||
notNull), now; }
|
||||
@ -274,11 +274,11 @@ void ODBCSQLiteTest::recreateNullsTable(const std::string& notNull)
|
||||
|
||||
void ODBCSQLiteTest::recreateMiscTable()
|
||||
{
|
||||
dropObject("TABLE", "MiscTest");
|
||||
dropObject("TABLE", ExecUtil::misctest());
|
||||
try
|
||||
{
|
||||
// SQLite fails with BLOB bulk operations
|
||||
session() << "CREATE TABLE MiscTest "
|
||||
session() << "CREATE TABLE "<< ExecUtil::misctest() <<
|
||||
"(First VARCHAR(30),"
|
||||
//"Second BLOB,"
|
||||
"Third INTEGER,"
|
||||
@ -291,8 +291,8 @@ void ODBCSQLiteTest::recreateMiscTable()
|
||||
|
||||
void ODBCSQLiteTest::recreateLogTable()
|
||||
{
|
||||
dropObject("TABLE", "T_POCO_LOG");
|
||||
dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
|
||||
dropObject("TABLE", ExecUtil::pocolog());;
|
||||
dropObject("TABLE", ExecUtil::pocolog_a());;
|
||||
|
||||
try
|
||||
{
|
||||
@ -306,8 +306,8 @@ void ODBCSQLiteTest::recreateLogTable()
|
||||
"Text VARCHAR,"
|
||||
"DateTime DATETIME)";
|
||||
|
||||
session() << sql, "T_POCO_LOG", now;
|
||||
session() << sql, "T_POCO_LOG_ARCHIVE", now;
|
||||
session() << sql, ExecUtil::pocolog(), now;
|
||||
session() << sql, ExecUtil::pocolog_a(), now;
|
||||
|
||||
} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
|
||||
@ -326,6 +326,7 @@ CppUnit::Test* ODBCSQLiteTest::suite()
|
||||
|
||||
CppUnit_addTest(pSuite, ODBCSQLiteTest, testBareboneODBC);
|
||||
CppUnit_addTest(pSuite, ODBCSQLiteTest, testZeroRows);
|
||||
CppUnit_addTest(pSuite, ODBCSQLiteTest, testSyntaxError);
|
||||
CppUnit_addTest(pSuite, ODBCSQLiteTest, testSimpleAccess);
|
||||
CppUnit_addTest(pSuite, ODBCSQLiteTest, testComplexType);
|
||||
CppUnit_addTest(pSuite, ODBCSQLiteTest, testSimpleAccessVector);
|
||||
|
678
Data/ODBC/testsuite/src/ODBCSybaseTest.cpp
Normal file
678
Data/ODBC/testsuite/src/ODBCSybaseTest.cpp
Normal file
@ -0,0 +1,678 @@
|
||||
/*
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#include "ODBCSybaseTest.h"
|
||||
#include "CppUnit/TestCaller.h"
|
||||
#include "CppUnit/TestSuite.h"
|
||||
#include "Poco/String.h"
|
||||
#include "Poco/Format.h"
|
||||
#include "Poco/Any.h"
|
||||
#include "Poco/DynamicAny.h"
|
||||
#include "Poco/Tuple.h"
|
||||
#include "Poco/Exception.h"
|
||||
#include "Poco/Data/LOB.h"
|
||||
#include "Poco/Data/RecordSet.h"
|
||||
#include "Poco/Data/StatementImpl.h"
|
||||
#include "Poco/Data/ODBC/Connector.h"
|
||||
#include "Poco/Data/ODBC/Utility.h"
|
||||
#include "Poco/Data/ODBC/Diagnostics.h"
|
||||
#include "Poco/Data/ODBC/ODBCException.h"
|
||||
#include "Poco/Data/ODBC/ODBCStatementImpl.h"
|
||||
#include <sqltypes.h>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
using namespace Poco::Data::Keywords;
|
||||
using Poco::Data::DataException;
|
||||
using Poco::Data::ODBC::Utility;
|
||||
using Poco::Data::ODBC::ConnectionException;
|
||||
using Poco::Data::ODBC::StatementException;
|
||||
using Poco::Data::ODBC::StatementDiagnostics;
|
||||
using Poco::format;
|
||||
using Poco::Tuple;
|
||||
using Poco::Any;
|
||||
using Poco::AnyCast;
|
||||
using Poco::DynamicAny;
|
||||
using Poco::NotFoundException;
|
||||
|
||||
#include "CppUnit/TestCaller.h"
|
||||
#include "CppUnit/TestSuite.h"
|
||||
|
||||
#define SYBASE_DSN ""
|
||||
#define SYBASE_UID ""
|
||||
#define SYBASE_PWD ""
|
||||
#define SYBASE_DB "mstk"
|
||||
|
||||
|
||||
static std::string sybaseDriver()
|
||||
{
|
||||
return Poco::Environment::get("POCO_TEST_SYBASE_DRIVER",
|
||||
#if defined(POCO_OS_FAMILY_WINDOWS)
|
||||
"{Adaptive Server Enterprise}"
|
||||
#else
|
||||
"libsybdrvodb-sqllen8.so"
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
static std::string sybaseExtra()
|
||||
{
|
||||
std::string e = Poco::Environment::get("POCO_TEST_SYBASE_EXTRA", "");
|
||||
return (e.empty() ? "" : e + ";");
|
||||
}
|
||||
|
||||
|
||||
std::string SybaseODBC::_connectString =
|
||||
"driver=" + sybaseDriver() + ";" +
|
||||
sybaseExtra() +
|
||||
"db=" SYBASE_DB ";"
|
||||
"uid=" SYBASE_UID ";"
|
||||
"pwd=" SYBASE_PWD ";"
|
||||
"DynamicPrepare=1;"
|
||||
#if !defined(POCO_OS_FAMILY_WINDOWS)
|
||||
"CS=iso_1;"
|
||||
#endif
|
||||
;
|
||||
|
||||
|
||||
|
||||
ODBCTest::SessionPtr SybaseODBC::_pSession;
|
||||
ODBCTest::ExecPtr SybaseODBC::_pExecutor;
|
||||
std::string SybaseODBC::_driver = "";
|
||||
std::string SybaseODBC::_dsn = SYBASE_DSN;
|
||||
std::string SybaseODBC::_uid = SYBASE_UID;
|
||||
std::string SybaseODBC::_pwd = SYBASE_PWD;
|
||||
|
||||
|
||||
SybaseODBC::SybaseODBC(const std::string& name) :
|
||||
ODBCTest(name, _pSession, _pExecutor, _dsn, _uid, _pwd, _connectString)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void SybaseODBC::testBareboneODBC()
|
||||
{
|
||||
if (!&session()) fail("Test not available.");
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::dropObject(const std::string& type, const std::string& name)
|
||||
{
|
||||
try
|
||||
{
|
||||
session() << format("DROP %s %s", type, name), now;
|
||||
}
|
||||
catch (StatementException& ex)
|
||||
{
|
||||
bool ignoreError = false;
|
||||
const StatementDiagnostics::FieldVec& flds = ex.diagnostics().fields();
|
||||
StatementDiagnostics::Iterator it = flds.begin();
|
||||
for (; it != flds.end(); ++it)
|
||||
{
|
||||
if ((-204 == it->_nativeError) || (3701 /* Sybase */ == it->_nativeError))//(table does not exist)
|
||||
{
|
||||
ignoreError = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ignoreError) throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateNullableTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::nullabletest());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::nullabletest() << " (EmptyString VARCHAR(30) NULL, EmptyInteger INTEGER NULL, EmptyFloat FLOAT NULL , EmptyDateTime DATETIME NULL)", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateNullableTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateNullableTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateNumericTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::numeric_tbl());
|
||||
try {
|
||||
session() << "CREATE TABLE " << ExecUtil::numeric_tbl() <<
|
||||
" (id integer, num8 NUMERIC(8), num16_3 NUMERIC(16,3), num18 NUMERIC(18), num18_8 NUMERIC(18,8), num22 NUMERIC(22))", now;
|
||||
}
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateNumericTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateNumericTable()"); }
|
||||
}
|
||||
|
||||
void SybaseODBC::recreatePersonTable()
|
||||
{
|
||||
doPersonTable();
|
||||
}
|
||||
|
||||
void SybaseODBC::doPersonTable(const std::string& lnAttr)
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30)" << lnAttr << ", FirstName VARCHAR(30), Address VARCHAR(30), Age INTEGER)", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreatePersonTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreatePersonTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreatePersonBLOBTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Image VARBINARY(10240))", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreatePersonBLOBTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreatePersonBLOBTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreatePersonDateTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornDate DATE)", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreatePersonDateTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreatePersonDateTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreatePersonTimeTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), BornTime TIME)", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreatePersonTimeTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreatePersonTimeTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreatePersonDateTimeTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::person());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::person() << " (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Born DATETIME)", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreatePersonDateTimeTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreatePersonDateTimeTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateIntsTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() << " (str INTEGER)", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateIntsTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateIntsTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateStringsTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() << " (str VARCHAR(30))", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateStringsTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateStringsTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateFloatsTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::strings());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::strings() << " (str FLOAT)", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateFloatsTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateFloatsTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateTuplesTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::tuples());
|
||||
try {
|
||||
session() << "CREATE TABLE " << ExecUtil::tuples() <<
|
||||
"(int0 INTEGER, int1 INTEGER, int2 INTEGER, int3 INTEGER, int4 INTEGER, int5 INTEGER, int6 INTEGER, "
|
||||
"int7 INTEGER, int8 INTEGER, int9 INTEGER, int10 INTEGER, int11 INTEGER, int12 INTEGER, int13 INTEGER,"
|
||||
"int14 INTEGER, int15 INTEGER, int16 INTEGER, int17 INTEGER, int18 INTEGER, int19 INTEGER)", now;
|
||||
}
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateTuplesTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateTuplesTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateVectorsTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::vectors());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::vectors() << " (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateVectorsTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateVectorsTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateAnysTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::anys());
|
||||
try { session() << "CREATE TABLE " << ExecUtil::anys() << " (i0 INTEGER, flt0 FLOAT, str0 VARCHAR(30))", now; }
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateAnysTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateAnysTable()"); }
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateNullsTable(const std::string& notNull)
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::nulltest());
|
||||
std::string nl = (notNull.empty() ? " NULL " : notNull);
|
||||
try {
|
||||
session() << format("CREATE TABLE %s (i INTEGER %s, r FLOAT %s, v VARCHAR(30) %s)", ExecUtil::nulltest(),
|
||||
nl,
|
||||
nl,
|
||||
nl), now;
|
||||
}
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateNullsTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateNullsTable()"); }
|
||||
}
|
||||
|
||||
void SybaseODBC::doMiscTable(bool haveSecCol)
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::misctest());
|
||||
try
|
||||
{
|
||||
session() << "CREATE TABLE " << ExecUtil::misctest() <<
|
||||
"(First VARCHAR(30),"
|
||||
<< (haveSecCol ? "Second VARBINARY(10240)," : "") <<
|
||||
"Third INTEGER,"
|
||||
"Fourth FLOAT,"
|
||||
"Fifth DATETIME)", now;
|
||||
}
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateMiscTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateMiscTable()"); }
|
||||
}
|
||||
|
||||
void SybaseODBC::testBulkPerformance()
|
||||
{
|
||||
session().setFeature("autoBind", true);
|
||||
session().setFeature("autoExtract", true);
|
||||
|
||||
doMiscTable(false);
|
||||
executor().doBulkPerformance(1000);
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::recreateMiscTable()
|
||||
{
|
||||
doMiscTable(true);
|
||||
}
|
||||
|
||||
void SybaseODBC::recreateLogTable()
|
||||
{
|
||||
dropObject("TABLE", ExecUtil::pocolog());
|
||||
dropObject("TABLE", ExecUtil::pocolog_a());;
|
||||
|
||||
try
|
||||
{
|
||||
std::string sql = "CREATE TABLE %s "
|
||||
"(Source VARCHAR(100),"
|
||||
"Name VARCHAR(100),"
|
||||
"ProcessId INTEGER,"
|
||||
"Thread VARCHAR(100), "
|
||||
"ThreadId INTEGER,"
|
||||
"Priority INTEGER,"
|
||||
"Text VARCHAR(100),"
|
||||
"DateTime DATETIME)";
|
||||
|
||||
session() << sql, ExecUtil::pocolog(), now;
|
||||
session() << sql, ExecUtil::pocolog_a(), now;
|
||||
|
||||
}
|
||||
catch (ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail("recreateLogTable()"); }
|
||||
catch (StatementException& se){ std::cout << se.toString() << std::endl; fail("recreateLogTable()"); }
|
||||
}
|
||||
|
||||
void SybaseODBC::testStoredProcedure()
|
||||
{
|
||||
const std::string nm(ExecUtil::stored_proc());
|
||||
dropObject("procedure", nm);
|
||||
|
||||
for (int k = 0; k < 8;)
|
||||
{
|
||||
session().setFeature("autoBind", bindValue(k));
|
||||
session().setFeature("autoExtract", bindValue(k + 1));
|
||||
|
||||
{
|
||||
session() << "create procedure " + nm + " "
|
||||
"as "
|
||||
"select -1 where 1 = 2 ", now;
|
||||
Poco::Data::Statement stat(session());
|
||||
stat << "{ call " << nm << "() }", now;
|
||||
Poco::Data::RecordSet rs(stat);
|
||||
dropObject("procedure", nm);
|
||||
assert(0 == rs.rowCount());
|
||||
}
|
||||
{
|
||||
Poco::Nullable<std::string> ins;
|
||||
Poco::Nullable<std::string> os = Poco::Nullable<std::string>("ab");
|
||||
Poco::Nullable<int> oi(12);
|
||||
Poco::Nullable<Poco::Data::Date> od = Poco::Nullable<Poco::Data::Date>(Poco::Data::Date());
|
||||
Poco::Nullable<Poco::DateTime> odtm = Poco::Nullable<Poco::DateTime>(Poco::DateTime());
|
||||
session() << "create procedure " + nm + " @ins varchar(40), @oi integer output, @os varchar(10) output, @od date output, @dtm datetime output "
|
||||
"as "
|
||||
"begin "
|
||||
"select @oi = null;"
|
||||
"select @os = @ins;"
|
||||
"select @od = null;"
|
||||
"select @dtm = null;"
|
||||
" end"
|
||||
, now;
|
||||
session() << "{ call " << nm << "(?, ?, ?, ?, ?) }", in(ins), out(oi), out(os), out(od), out(odtm), now;
|
||||
dropObject("procedure", nm);
|
||||
assert(oi.isNull());
|
||||
assert(os.isNull());
|
||||
assert(od.isNull());
|
||||
assert(odtm.isNull());
|
||||
}
|
||||
{
|
||||
session() << "create procedure " << nm << " @c char(8) AS select @c", now;
|
||||
Poco::Nullable<std::string> ns;
|
||||
Poco::Data::Statement stat(session());
|
||||
stat << "{ call " << nm << "(?) }", use(ns), now;
|
||||
dropObject("procedure", nm);
|
||||
Poco::Data::RecordSet rs(stat);
|
||||
assert(1 == rs.rowCount());
|
||||
bool nl = rs.isNull(size_t(0), 0);
|
||||
assert( nl );
|
||||
}
|
||||
{
|
||||
Poco::Data::Statement stat(session());
|
||||
stat << "{ exec -- @exType='mdExch', @exList='TRAD' }", Poco::Data::Keywords::limit(1);
|
||||
while (!stat.done())
|
||||
{
|
||||
stat.execute();
|
||||
Poco::Data::RecordSet rs(stat);
|
||||
assert(0 == rs.rowCount());
|
||||
}
|
||||
}
|
||||
|
||||
session() << "create procedure " + nm + " "
|
||||
"@outParam int output "
|
||||
"as "
|
||||
"select @outParam = -1", now;
|
||||
|
||||
int i = 0;
|
||||
session() << "{ call " << nm << "(?) }", out(i), now;
|
||||
dropObject("procedure", nm);
|
||||
assert(-1 == i);
|
||||
|
||||
session() << "create procedure " + nm + " "
|
||||
"@inParam int, @outParam int output "
|
||||
"as "
|
||||
"select @outParam = @inParam * @inParam"
|
||||
, now;
|
||||
|
||||
i = 2;
|
||||
int j = 0;
|
||||
session() << "{ call " << nm << "(?, ?)} ", in(i), out(j), now;
|
||||
dropObject("procedure", nm);
|
||||
assert(4 == j);
|
||||
|
||||
session() << "create procedure " + nm + " "
|
||||
"@ioParam int output "
|
||||
"as "
|
||||
"select @ioParam = @ioParam * @ioParam"
|
||||
, now;
|
||||
|
||||
i = 2;
|
||||
session() << "{ call " << nm << "(?) }", io(i), now;
|
||||
dropObject("procedure", nm);
|
||||
assert(4 == i);
|
||||
|
||||
session() << "create procedure " + nm + " "
|
||||
"@inParam varchar(1000), @outParam varchar(1000) output "
|
||||
"as "
|
||||
"select @outParam = @inParam"
|
||||
, now;
|
||||
|
||||
std::string inParam =
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
|
||||
std::string outParam;
|
||||
session() << "{ call " << nm << "(?,?) }", in(inParam), out(outParam), now;
|
||||
dropObject("procedure", nm);
|
||||
assert(inParam == outParam);
|
||||
|
||||
k += 2;
|
||||
}
|
||||
}
|
||||
|
||||
void SybaseODBC::testStoredProcedureDynamicAny()
|
||||
{
|
||||
const std::string nm(ExecUtil::stored_proc());
|
||||
dropObject("procedure", nm);
|
||||
|
||||
for (int k = 0; k < 8;)
|
||||
{
|
||||
session().setFeature("autoBind", bindValue(k));
|
||||
|
||||
DynamicAny i = 2;
|
||||
DynamicAny j = 0;
|
||||
|
||||
session() << "create procedure " << nm << " "
|
||||
"@inParam int, @outParam int output "
|
||||
"as "
|
||||
"select @outParam = @inParam * @inParam"
|
||||
, now;
|
||||
|
||||
session() << "{ call " << nm << "(?, ?) }", in(i), out(j), now;
|
||||
dropObject("procedure", nm);
|
||||
assert(4 == j);
|
||||
|
||||
session() << "create procedure " << nm << " @outParam int output "
|
||||
"as "
|
||||
"select @outParam = @outParam * @outParam"
|
||||
, now;
|
||||
|
||||
i = 2;
|
||||
session() << "{ call " << nm << "(?) }", io(i), now;
|
||||
dropObject("procedure", nm);
|
||||
assert(4 == i);
|
||||
|
||||
k += 2;
|
||||
}
|
||||
}
|
||||
|
||||
void SybaseODBC::testStoredProcedureAny()
|
||||
{
|
||||
const std::string nm(ExecUtil::stored_proc());
|
||||
dropObject("procedure", nm);
|
||||
|
||||
for (int k = 0; k < 8;)
|
||||
{
|
||||
session().setFeature("autoBind", bindValue(k));
|
||||
session().setFeature("autoExtract", bindValue(k + 1));
|
||||
|
||||
Any i = 2;
|
||||
Any j = 0;
|
||||
|
||||
session() << "create procedure " << nm << " "
|
||||
"@inParam int, @outParam int output "
|
||||
"as "
|
||||
"select @outParam = @inParam * @inParam"
|
||||
, now;
|
||||
|
||||
session() << "{ call " << nm << "(?, ?) }", in(i), out(j), now;
|
||||
|
||||
dropObject("procedure", nm);
|
||||
assert(4 == AnyCast<int>(j));
|
||||
|
||||
session() << "create procedure " << nm << " @outParam int output "
|
||||
"as "
|
||||
"select @outParam = @outParam * @outParam"
|
||||
, now;
|
||||
|
||||
i = 2;
|
||||
session() << "{ call " << nm << "(?) }", io(i), now;
|
||||
dropObject("procedure", nm);
|
||||
assert(4 == AnyCast<int>(i));
|
||||
|
||||
session() << "create procedure " << nm << " "
|
||||
"@i int , @f float , @s1 varchar(10) , @d date , @t time , @dt datetime , @bin binary , @res int output"
|
||||
" as "
|
||||
"select @res = 11 where (@i is null) and (@f is null) and (@s1 is null) and (@d is null) and (@t is null) and (@dt is null) and (@bin is null)"
|
||||
, now;
|
||||
Poco::Dynamic::Var res(0);
|
||||
Poco::Dynamic::Var null;
|
||||
Poco::Data::Statement stat(session());
|
||||
stat << "{ call " << nm << "(?,?,?,?,?,?,? ?) }";
|
||||
stat.addBind(Poco::Data::Keywords::bind(Poco::Data::DATA_NULL_INTEGER));
|
||||
stat.addBind(Poco::Data::Keywords::bind(Poco::Data::DATA_NULL_FLOAT));
|
||||
stat.addBind(Poco::Data::Keywords::bind(Poco::Data::DATA_NULL_STRING));
|
||||
stat.addBind(Poco::Data::Keywords::bind(Poco::Data::DATA_NULL_DATE));
|
||||
stat.addBind(Poco::Data::Keywords::bind(Poco::Dynamic::Var(Poco::Data::DATA_NULL_TIME)));
|
||||
stat.addBind(Poco::Data::Keywords::bind(Poco::Data::DATA_NULL_DATETIME));
|
||||
stat.addBind(Poco::Data::Keywords::bind(Poco::Dynamic::Var(Poco::Data::DATA_NULL_BLOB)));
|
||||
|
||||
stat.addBind(Poco::Data::Keywords::out(res));
|
||||
stat.execute();
|
||||
dropObject("procedure", nm);
|
||||
assert(11 == res.extract<int>());
|
||||
|
||||
k += 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SybaseODBC::testTransaction()
|
||||
{
|
||||
if (!&session())fail("Test not available.");
|
||||
|
||||
for (int i = 0; i < 8;)
|
||||
{
|
||||
doPersonTable(" UNIQUE ");
|
||||
session().setFeature("autoBind", bindValue(i));
|
||||
session().setFeature("autoExtract", bindValue(i + 1));
|
||||
executor().transaction(dbConnString());
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
|
||||
/*static*/
|
||||
CppUnit::Test* SybaseODBC::suite()
|
||||
{
|
||||
if ((_pSession = init(_driver, _dsn, _uid, _pwd, _connectString)))
|
||||
{
|
||||
std::cout << "*** Connected to [" << _driver << "] test database." << std::endl;
|
||||
|
||||
_pExecutor = new SQLExecutor(_driver + " SQL Executor", _pSession);
|
||||
|
||||
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("SybaseODBC");
|
||||
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testBareboneODBC);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSyntaxError);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSimpleAccess);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testComplexType);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSimpleAccessVector);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testComplexTypeVector);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSharedPtrComplexTypeVector);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testAutoPtrComplexTypeVector);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertVector);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertEmptyVector);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSimpleAccessList);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testComplexTypeList);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertList);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertEmptyList);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSimpleAccessDeque);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testComplexTypeDeque);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertDeque);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertEmptyDeque);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testAffectedRows);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertSingleBulk);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertSingleBulkVec);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testLimit);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testLimitOnce);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testLimitPrepare);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testLimitZero);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testPrepare);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testBulk);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testBulkPerformance);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSetSimple);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSetComplex);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSetComplexUnique);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testMultiSetSimple);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testMultiSetComplex);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testMapComplex);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testMapComplexUnique);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testMultiMapComplex);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSelectIntoSingle);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSelectIntoSingleStep);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSelectIntoSingleFail);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testLowerLimitOk);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testLowerLimitFail);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testCombinedLimits);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testCombinedIllegalLimits);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testRange);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testIllegalRange);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSingleSelect);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testEmptyDB);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testBLOB);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testBLOBContainer);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testBLOBStmt);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testDate);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testTime);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testDateTime);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testFloat);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testDouble);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testTuple);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testTupleVector);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInternalExtraction);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testFilter);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInternalBulkExtraction);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInternalStorageType);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testStoredProcedure);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testStoredProcedureAny);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testStoredProcedureDynamicAny);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testNull);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testRowIterator);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testAsync);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testAny);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testDynamicAny);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testMultipleResults);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testMultipleResultsNoProj);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSQLChannel); // this test may suffer from race conditions
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testSQLLogger);
|
||||
//CppUnit_addTest(pSuite, SybaseODBC, testSessionTransaction); // this test fails when connection is fast
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testTransaction);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testTransactor);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testNullable);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testReconnect);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testNumeric);
|
||||
CppUnit_addTest(pSuite, SybaseODBC, testInsertStatReuse);
|
||||
|
||||
_pExecutor = 0;
|
||||
_pSession = 0;
|
||||
|
||||
return pSuite;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
87
Data/ODBC/testsuite/src/ODBCSybaseTest.h
Normal file
87
Data/ODBC/testsuite/src/ODBCSybaseTest.h
Normal file
@ -0,0 +1,87 @@
|
||||
/*
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef ODBCSybaseTest_INCLUDED
|
||||
#define ODBCSybaseTest_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Data/ODBC/ODBC.h"
|
||||
#include "ODBCTest.h"
|
||||
#include "Poco/Format.h"
|
||||
|
||||
class SybaseODBC : public ODBCTest {
|
||||
public:
|
||||
SybaseODBC(const std::string& name);
|
||||
static CppUnit::Test* suite();
|
||||
|
||||
virtual void testBareboneODBC();
|
||||
virtual void testBulkPerformance();
|
||||
private:
|
||||
void dropObject(const std::string& type, const std::string& tableName);
|
||||
void recreateNullableTable();
|
||||
void recreatePersonTable();
|
||||
void recreatePersonBLOBTable();
|
||||
void recreatePersonDateTable();
|
||||
void recreatePersonTimeTable();
|
||||
void recreatePersonDateTimeTable();
|
||||
void recreateStringsTable();
|
||||
void recreateIntsTable();
|
||||
void recreateFloatsTable();
|
||||
void recreateTuplesTable();
|
||||
void recreateVectorsTable();
|
||||
void recreateAnysTable();
|
||||
void recreateNullsTable(const std::string& notNull = "");
|
||||
void recreateMiscTable();
|
||||
void recreateLogTable();
|
||||
void recreateNumericTable();
|
||||
void testStoredProcedure();
|
||||
void testStoredProcedureDynamicAny();
|
||||
void testStoredProcedureAny();
|
||||
void testTransaction();
|
||||
|
||||
virtual std::string str2NumExpr(const std::string& num, unsigned len, unsigned dec)
|
||||
{
|
||||
std::string res;
|
||||
Poco::format(res, " CONVERT(NUMERIC(%u, %u), '%s') ", len, dec, num);
|
||||
return res;
|
||||
}
|
||||
|
||||
bool emptyStringIsSpace() { return true; }
|
||||
|
||||
void doMiscTable(bool haveSecCol);
|
||||
void doPersonTable(const std::string& lnAttr = "");
|
||||
|
||||
static ODBCTest::SessionPtr _pSession;
|
||||
static ODBCTest::ExecPtr _pExecutor;
|
||||
static std::string _driver;
|
||||
static std::string _dsn;
|
||||
static std::string _uid;
|
||||
static std::string _pwd;
|
||||
static std::string _connectString;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
@ -22,6 +22,7 @@
|
||||
#include "Poco/Exception.h"
|
||||
#include "Poco/Data/LOB.h"
|
||||
#include "Poco/Data/StatementImpl.h"
|
||||
#include "Poco/Data/RecordSet.h"
|
||||
#include "Poco/Data/ODBC/Connector.h"
|
||||
#include "Poco/Data/ODBC/Utility.h"
|
||||
#include "Poco/Data/ODBC/Diagnostics.h"
|
||||
@ -41,6 +42,7 @@ using Poco::Data::ODBC::ODBCException;
|
||||
using Poco::Data::ODBC::ConnectionException;
|
||||
using Poco::Data::ODBC::StatementException;
|
||||
using Poco::Data::ODBC::StatementDiagnostics;
|
||||
using Poco::Data::Statement;
|
||||
using Poco::format;
|
||||
using Poco::Tuple;
|
||||
using Poco::Any;
|
||||
@ -1029,7 +1031,7 @@ void ODBCTest::testNull()
|
||||
recreateNullsTable();
|
||||
_pSession->setFeature("autoBind", bindValue(i));
|
||||
_pSession->setFeature("autoExtract", bindValue(i+1));
|
||||
_pExecutor->nulls();
|
||||
_pExecutor->nulls(emptyStringIsSpace());
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
@ -1127,6 +1129,20 @@ void ODBCTest::testMultipleResults()
|
||||
}
|
||||
}
|
||||
|
||||
void ODBCTest::testMultipleResultsNoProj()
|
||||
{
|
||||
if (! &session()) fail("Test not available.");
|
||||
session().setFeature("autoBind", true); // DB2 fails without that
|
||||
for (int autoE = 0; autoE < 2; ++autoE)
|
||||
{
|
||||
recreatePersonTable();
|
||||
_pSession->setFeature("autoExtract", autoE != 0);
|
||||
_pExecutor->multipleResultsNoProj("SELECT * FROM " + ExecUtil::person() + " WHERE Age = ?; "
|
||||
"SELECT Age FROM " + ExecUtil::person() + " WHERE FirstName = ?; "
|
||||
"SELECT * FROM " + ExecUtil::person() + " WHERE Age = ? OR Age = ? ORDER BY Age;");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ODBCTest::testSQLChannel()
|
||||
{
|
||||
@ -1219,6 +1235,46 @@ void ODBCTest::testNullable()
|
||||
}
|
||||
}
|
||||
|
||||
void ODBCTest::testNumeric()
|
||||
{
|
||||
if (!_pSession) fail("Test not available.");
|
||||
|
||||
recreateNumericTable();
|
||||
std::vector<std::string> vals;
|
||||
vals.push_back("12345678");
|
||||
vals.push_back("123456789012.123");
|
||||
vals.push_back("123456789012345678");
|
||||
vals.push_back("1234567890.12345678");
|
||||
vals.push_back("1234567890123456789012");
|
||||
|
||||
const std::string sqlStr = std::string("INSERT INTO ") + ExecUtil::numeric_tbl() +
|
||||
"(id, num8, num16_3, num18, num18_8, num22) VALUES (1, " + str2NumExpr(vals[0],8,0) + " , " + str2NumExpr(vals[1],16,3) + ", " + str2NumExpr(vals[2], 18,0)
|
||||
+ " , " + str2NumExpr(vals[3], 18, 8) + " , " + str2NumExpr(vals[4], 22, 0) + ")";
|
||||
|
||||
session() << sqlStr, now;
|
||||
|
||||
for (int i = 0; i < 8;)
|
||||
{
|
||||
_pSession->setFeature("autoBind", bindValue(i));
|
||||
_pSession->setFeature("autoExtract", bindValue(i + 1));
|
||||
_pExecutor->numericTypes(vals);
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ODBCTest::testInsertStatReuse()
|
||||
{
|
||||
for (int i = 0; i < 8; i += 2)
|
||||
{
|
||||
recreatePersonTable();
|
||||
session().setFeature("autoBind", bindValue(i));
|
||||
session().setFeature("autoExtract", bindValue(i + 1));
|
||||
|
||||
_pExecutor->insertStatReuse();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ODBCTest::testUnicode()
|
||||
{
|
||||
@ -1256,6 +1312,28 @@ void ODBCTest::testReconnect()
|
||||
}
|
||||
|
||||
|
||||
void ODBCTest::testSyntaxError()
|
||||
{
|
||||
try {
|
||||
session() << "select fro oops", now;
|
||||
fail("Expected syntax error exception");
|
||||
}
|
||||
catch (const StatementException&)
|
||||
{
|
||||
}
|
||||
|
||||
try {
|
||||
Statement stat(session());
|
||||
stat << "select fro oops";
|
||||
stat.execute();
|
||||
fail("Expected syntax error exception");
|
||||
}
|
||||
catch (const StatementException&)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool ODBCTest::canConnect(const std::string& driver,
|
||||
std::string& dsn,
|
||||
std::string& uid,
|
||||
@ -1274,7 +1352,7 @@ bool ODBCTest::canConnect(const std::string& driver,
|
||||
}
|
||||
}
|
||||
|
||||
if (_drivers.end() == itDrv)
|
||||
if ((_drivers.end() == itDrv) && (driver.length() != 0) && (driver[0] != '/'))
|
||||
{
|
||||
dsn = "";
|
||||
uid = "";
|
||||
|
@ -141,6 +141,7 @@ public:
|
||||
virtual void testDynamicAny();
|
||||
|
||||
virtual void testMultipleResults();
|
||||
virtual void testMultipleResultsNoProj();
|
||||
|
||||
virtual void testSQLChannel();
|
||||
virtual void testSQLLogger();
|
||||
@ -153,6 +154,9 @@ public:
|
||||
virtual void testUnicode();
|
||||
|
||||
virtual void testReconnect();
|
||||
virtual void testNumeric();
|
||||
virtual void testSyntaxError();
|
||||
virtual void testInsertStatReuse();
|
||||
|
||||
protected:
|
||||
typedef Poco::Data::ODBC::Utility::DriverMap Drivers;
|
||||
@ -176,6 +180,9 @@ protected:
|
||||
virtual void recreateMiscTable();
|
||||
virtual void recreateLogTable();
|
||||
virtual void recreateUnicodeTable();
|
||||
virtual void recreateNumericTable();
|
||||
virtual bool emptyStringIsSpace() { return false; }
|
||||
virtual std::string str2NumExpr(const std::string& num, unsigned len, unsigned dec) { return num; }
|
||||
|
||||
static SessionPtr init(const std::string& driver,
|
||||
std::string& dsn,
|
||||
@ -264,6 +271,11 @@ inline void ODBCTest::recreateNullableTable()
|
||||
throw Poco::NotImplementedException("ODBCTest::recreateNullableTable()");
|
||||
}
|
||||
|
||||
inline void ODBCTest::recreateNumericTable()
|
||||
{
|
||||
throw Poco::NotImplementedException("ODBCTest::recreateNumericTable()");
|
||||
}
|
||||
|
||||
|
||||
inline void ODBCTest::recreatePersonTable()
|
||||
{
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
#include "ODBCTestSuite.h"
|
||||
#include "ODBCDB2Test.h"
|
||||
#include "ODBCSybaseTest.h"
|
||||
#include "ODBCMySQLTest.h"
|
||||
#include "ODBCOracleTest.h"
|
||||
#include "ODBCPostgreSQLTest.h"
|
||||
@ -44,6 +45,7 @@ CppUnit::Test* ODBCTestSuite::suite()
|
||||
addTest(pSuite, ODBCPostgreSQLTest::suite());
|
||||
addTest(pSuite, ODBCSQLiteTest::suite());
|
||||
addTest(pSuite, ODBCSQLServerTest::suite());
|
||||
addTest(pSuite, SybaseODBC::suite());
|
||||
addTest(pSuite, ODBCDB2Test::suite());
|
||||
// MS Access driver does not support connection status detection
|
||||
// disabled for the time being
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -73,6 +73,81 @@
|
||||
using Poco::Data::ODBC::ConnectionException; \
|
||||
using Poco::Data::ODBC::StatementException
|
||||
|
||||
struct ExecUtil
|
||||
{
|
||||
static std::string mangleTable(const std::string& name);
|
||||
|
||||
static std::string person()
|
||||
{
|
||||
return mangleTable("Person");
|
||||
}
|
||||
|
||||
static std::string strings()
|
||||
{
|
||||
return mangleTable("Strings");
|
||||
}
|
||||
|
||||
static std::string tuples()
|
||||
{
|
||||
return mangleTable("Tuples");
|
||||
}
|
||||
|
||||
static std::string vectors()
|
||||
{
|
||||
return mangleTable("Vectors");
|
||||
}
|
||||
|
||||
static std::string anys()
|
||||
{
|
||||
return mangleTable("Anys");
|
||||
}
|
||||
|
||||
static std::string nulltest()
|
||||
{
|
||||
return mangleTable("NullTest");
|
||||
}
|
||||
|
||||
static std::string misctest()
|
||||
{
|
||||
return mangleTable("MiscTest");
|
||||
}
|
||||
|
||||
static std::string nullabletest()
|
||||
{
|
||||
return mangleTable("NullableTest");
|
||||
}
|
||||
|
||||
static std::string pocolog()
|
||||
{
|
||||
return mangleTable("POCO_LOG");
|
||||
}
|
||||
|
||||
static std::string pocolog_a()
|
||||
{
|
||||
return mangleTable("POCO_LOG_A");
|
||||
}
|
||||
|
||||
static std::string stored_func()
|
||||
{
|
||||
return mangleTable("storedFunc");
|
||||
}
|
||||
|
||||
static std::string stored_proc()
|
||||
{
|
||||
return mangleTable("storedProc");
|
||||
}
|
||||
|
||||
static std::string test_tbl()
|
||||
{
|
||||
return mangleTable("Test");
|
||||
}
|
||||
|
||||
static std::string numeric_tbl()
|
||||
{
|
||||
return mangleTable("numer_t");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class SQLExecutor: public CppUnit::TestCase
|
||||
{
|
||||
@ -89,7 +164,7 @@ public:
|
||||
DE_BOUND
|
||||
};
|
||||
|
||||
SQLExecutor(const std::string& name, Poco::Data::Session* _pSession);
|
||||
SQLExecutor(const std::string& name, Poco::Data::Session* _pSession, const std::string& connInitSql = std::string(), const std::string& schemaName = std::string());
|
||||
~SQLExecutor();
|
||||
|
||||
void execute(const std::string& sql);
|
||||
@ -147,6 +222,8 @@ public:
|
||||
void limitPrepare();
|
||||
void limitZero();
|
||||
void prepare();
|
||||
void numericTypes(const std::vector<std::string>& vals);
|
||||
void insertStatReuse();
|
||||
|
||||
template <typename C1, typename C2, typename C3, typename C4, typename C5, typename C6>
|
||||
void doBulkWithBool(Poco::UInt32 size, const std::string& blobPlaceholder="?")
|
||||
@ -173,7 +250,7 @@ public:
|
||||
try
|
||||
{
|
||||
session() <<
|
||||
Poco::format("INSERT INTO MiscTest VALUES (?,%s,?,?,?,?)", blobPlaceholder),
|
||||
Poco::format("INSERT INTO %s VALUES (?,%s,?,?,?,?)", ExecUtil::misctest(), blobPlaceholder),
|
||||
use(strings),
|
||||
use(blobs),
|
||||
use(ints),
|
||||
@ -183,14 +260,14 @@ public:
|
||||
} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
|
||||
|
||||
try { session() << "DELETE FROM MiscTest", now; }
|
||||
try { session() << "DELETE FROM "<< ExecUtil::misctest(), now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
|
||||
|
||||
try
|
||||
{
|
||||
session() <<
|
||||
Poco::format("INSERT INTO MiscTest VALUES (?,%s,?,?,?,?)", blobPlaceholder),
|
||||
Poco::format("INSERT INTO %s VALUES (?,%s,?,?,?,?)", ExecUtil::misctest(), blobPlaceholder),
|
||||
use(strings, bulk),
|
||||
use(blobs, bulk),
|
||||
use(ints, bulk),
|
||||
@ -209,7 +286,7 @@ public:
|
||||
|
||||
try
|
||||
{
|
||||
session() << "SELECT * FROM MiscTest ORDER BY Third",
|
||||
session() << "SELECT * FROM "<< ExecUtil::misctest() <<" ORDER BY Third",
|
||||
into(strings),
|
||||
into(blobs),
|
||||
into(ints),
|
||||
@ -239,14 +316,14 @@ public:
|
||||
|
||||
try
|
||||
{
|
||||
session() << "SELECT First FROM MiscTest", into(ints, bulk(size)), limit(size+1), now;
|
||||
session() << "SELECT First FROM "<< ExecUtil::misctest(), into(ints, bulk(size)), limit(size+1), now;
|
||||
fail ("must fail");
|
||||
}
|
||||
catch(Poco::InvalidArgumentException&){ }
|
||||
|
||||
try
|
||||
{
|
||||
session() << "SELECT First FROM MiscTest", into(ints), bulk(size), now;
|
||||
session() << "SELECT First FROM "<< ExecUtil::misctest(), into(ints), bulk(size), now;
|
||||
fail ("must fail");
|
||||
}
|
||||
catch(Poco::InvalidAccessException&){ }
|
||||
@ -263,7 +340,7 @@ public:
|
||||
|
||||
try
|
||||
{
|
||||
session() << "SELECT First, Second, Third, Fourth, Fifth, Sixth FROM MiscTest ORDER BY Third",
|
||||
session() << "SELECT First, Second, Third, Fourth, Fifth, Sixth FROM "<< ExecUtil::misctest() <<" ORDER BY Third",
|
||||
into(strings, bulk),
|
||||
into(blobs, bulk(size)),
|
||||
into(ints, bulk(size)),
|
||||
@ -313,7 +390,7 @@ public:
|
||||
|
||||
try
|
||||
{
|
||||
session() << "INSERT INTO MiscTest VALUES (?,?,?,?,?)",
|
||||
session() << "INSERT INTO "<< ExecUtil::misctest() <<" VALUES (?,?,?,?,?)",
|
||||
use(strings),
|
||||
use(blobs),
|
||||
use(ints),
|
||||
@ -322,13 +399,13 @@ public:
|
||||
} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
|
||||
|
||||
try { session() << "DELETE FROM MiscTest", now; }
|
||||
try { session() << "DELETE FROM "<< ExecUtil::misctest(), now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
|
||||
|
||||
try
|
||||
{
|
||||
session() << "INSERT INTO MiscTest VALUES (?,?,?,?,?)",
|
||||
session() << "INSERT INTO "<< ExecUtil::misctest() <<" VALUES (?,?,?,?,?)",
|
||||
use(strings, bulk),
|
||||
use(blobs, bulk),
|
||||
use(ints, bulk),
|
||||
@ -345,7 +422,7 @@ public:
|
||||
|
||||
try
|
||||
{
|
||||
session() << "SELECT * FROM MiscTest ORDER BY First",
|
||||
session() << "SELECT * FROM "<< ExecUtil::misctest() <<" ORDER BY First",
|
||||
into(strings),
|
||||
into(blobs),
|
||||
into(ints),
|
||||
@ -372,14 +449,14 @@ public:
|
||||
|
||||
try
|
||||
{
|
||||
session() << "SELECT First FROM MiscTest", into(ints, bulk(size)), limit(size+1), now;
|
||||
session() << "SELECT First FROM "<< ExecUtil::misctest(), into(ints, bulk(size)), limit(size+1), now;
|
||||
fail ("must fail");
|
||||
}
|
||||
catch(Poco::InvalidArgumentException&){ }
|
||||
|
||||
try
|
||||
{
|
||||
session() << "SELECT First FROM MiscTest", into(ints), bulk(size), now;
|
||||
session() << "SELECT First FROM "<< ExecUtil::misctest(), into(ints), bulk(size), now;
|
||||
fail ("must fail");
|
||||
}
|
||||
catch(Poco::InvalidAccessException&){ }
|
||||
@ -392,7 +469,7 @@ public:
|
||||
|
||||
try
|
||||
{
|
||||
session() << "SELECT * FROM MiscTest ORDER BY First",
|
||||
session() << "SELECT * FROM "<< ExecUtil::misctest() <<" ORDER BY First",
|
||||
into(strings, bulk(size)),
|
||||
into(blobs, bulk(size)),
|
||||
into(ints, bulk(size)),
|
||||
@ -435,6 +512,17 @@ public:
|
||||
void singleSelect();
|
||||
void emptyDB();
|
||||
|
||||
void assertImpl(bool condition, const std::string& conditionExpression, long lineNumber, const std::string& fileName)
|
||||
{
|
||||
assertImplementation(condition, conditionExpression, lineNumber, fileName);
|
||||
}
|
||||
|
||||
void failImpl(const std::string& message, long lineNumber, const std::string& fileName)
|
||||
{
|
||||
fail(message, lineNumber, fileName);
|
||||
}
|
||||
|
||||
|
||||
void blob(int bigSize = 1024, const std::string& blobPlaceholder = "?");
|
||||
|
||||
template <typename C1, typename C2>
|
||||
@ -448,16 +536,16 @@ public:
|
||||
C1 address(size, "Address");
|
||||
C2 img(size, CLOB("0123456789", 10));
|
||||
int count = 0;
|
||||
try { session() << "INSERT INTO Person VALUES (?,?,?,?)", use(lastName), use(firstName), use(address), use(img), now; }
|
||||
try { session() << "INSERT INTO " << ExecUtil::person() << " VALUES (?,?,?,?)", use(lastName), use(firstName), use(address), use(img), now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
|
||||
try { session() << "SELECT COUNT(*) FROM Person", into(count), now; }
|
||||
try { session() << "SELECT COUNT(*) FROM " << ExecUtil::person(), into(count), now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
|
||||
assert (count == size);
|
||||
|
||||
C2 res;
|
||||
try { session() << "SELECT Image FROM Person", into(res), now; }
|
||||
try { session() << "SELECT Image FROM " << ExecUtil::person(), into(res), now; }
|
||||
catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
|
||||
catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
|
||||
assert (res.size() == img.size());
|
||||
@ -476,13 +564,13 @@ public:
|
||||
|
||||
void internalExtraction();
|
||||
void filter(const std::string& query =
|
||||
"SELECT * FROM Vectors ORDER BY int0 ASC",
|
||||
const std::string& intFldName = "int0");
|
||||
"SELECT * FROM " + ExecUtil::vectors() + " ORDER BY i0 ASC",
|
||||
const std::string& intFldName = "i0");
|
||||
|
||||
void internalBulkExtraction();
|
||||
void internalBulkExtractionUTF16();
|
||||
void internalStorageType();
|
||||
void nulls();
|
||||
void nulls(bool emptyStrIsSpace = false);
|
||||
void notNulls(const std::string& sqlState = "23502");
|
||||
void rowIterator();
|
||||
void stdVectorBool();
|
||||
@ -493,9 +581,11 @@ public:
|
||||
void dynamicAny();
|
||||
|
||||
void multipleResults(const std::string& sql =
|
||||
"SELECT * FROM Person WHERE Age = ?; "
|
||||
"SELECT Age FROM Person WHERE FirstName = 'Bart'; "
|
||||
"SELECT * FROM Person WHERE Age = ? OR Age = ? ORDER BY Age;");
|
||||
"SELECT * FROM " + ExecUtil::person() + " WHERE Age = ?; "
|
||||
"SELECT Age FROM " + ExecUtil::person() +" WHERE FirstName = 'Bart'; "
|
||||
"SELECT * FROM " + ExecUtil::person() + " WHERE Age = ? OR Age = ? ORDER BY Age;");
|
||||
|
||||
void multipleResultsNoProj(const std::string& sql);
|
||||
|
||||
void sqlChannel(const std::string& connect);
|
||||
void sqlLogger(const std::string& connect);
|
||||
@ -514,9 +604,12 @@ private:
|
||||
static const std::string MULTI_SELECT;
|
||||
|
||||
void setTransactionIsolation(Poco::Data::Session& session, Poco::UInt32 ti);
|
||||
std::string schemaTable(const std::string& tblName) const;
|
||||
|
||||
Poco::Data::Session& session();
|
||||
Poco::Data::Session* _pSession;
|
||||
std::string _connInitSql;
|
||||
std::string _schemaName;
|
||||
};
|
||||
|
||||
|
||||
@ -527,4 +620,10 @@ inline Poco::Data::Session& SQLExecutor::session()
|
||||
}
|
||||
|
||||
|
||||
inline std::string SQLExecutor::schemaTable(const std::string& tblName) const
|
||||
{
|
||||
return _schemaName.empty() ? tblName : _schemaName + "." + tblName;
|
||||
}
|
||||
|
||||
|
||||
#endif // SQLExecutor_INCLUDED
|
||||
|
34
Data/PostgreSQL/CMakeLists.txt
Normal file
34
Data/PostgreSQL/CMakeLists.txt
Normal file
@ -0,0 +1,34 @@
|
||||
set(LIBNAME "DataPostgreSQL")
|
||||
set(POCO_LIBNAME "Poco${LIBNAME}")
|
||||
|
||||
# Sources
|
||||
file(GLOB SRCS_G "src/*.cpp")
|
||||
POCO_SOURCES_AUTO( POSTGRESQL_SRCS ${SRCS_G})
|
||||
|
||||
# Headers
|
||||
file(GLOB_RECURSE HDRS_G "include/*.h" )
|
||||
POCO_HEADERS_AUTO( POSTGRESQL_SRCS ${HDRS_G})
|
||||
|
||||
add_library( "${LIBNAME}" ${LIB_MODE} ${POSTGRESQL_SRCS} )
|
||||
add_library( "${POCO_LIBNAME}" ALIAS "${LIBNAME}")
|
||||
set_target_properties( "${LIBNAME}"
|
||||
PROPERTIES
|
||||
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
|
||||
OUTPUT_NAME ${POCO_LIBNAME}
|
||||
DEFINE_SYMBOL PostgreSQL_EXPORTS
|
||||
)
|
||||
|
||||
target_link_libraries( "${LIBNAME}" Foundation Data ${PostgreSQL_LIBRARIES})
|
||||
target_include_directories( "${LIBNAME}"
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||
$<INSTALL_INTERFACE:include>
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
)
|
||||
|
||||
POCO_INSTALL("${LIBNAME}")
|
||||
POCO_GENERATE_PACKAGE("${LIBNAME}")
|
||||
|
||||
if (ENABLE_TESTS)
|
||||
add_subdirectory(testsuite)
|
||||
endif ()
|
23
Data/PostgreSQL/Makefile
Normal file
23
Data/PostgreSQL/Makefile
Normal file
@ -0,0 +1,23 @@
|
||||
#
|
||||
# Makefile
|
||||
#
|
||||
# $Id: //poco/1.5/Data/PostgreSQL/Makefile#1 $
|
||||
#
|
||||
# Makefile for Poco PostgreSQL
|
||||
#
|
||||
|
||||
include $(POCO_BASE)/build/rules/global
|
||||
|
||||
INCLUDE += -I/usr/include/postgresql -I/usr/local/include/postgresql -I/usr/local/postgresql/include -I/opt/postgresql/include
|
||||
|
||||
SYSLIBS += -L/usr/lib$(LIB64SUFFIX)/postgresql -L/usr/local/lib$(LIB64SUFFIX)/postgresql -L/usr/local/postgresql/lib$(LIB64SUFFIX) -L/opt/postgresql/lib$(LIB64SUFFIX) -lpq
|
||||
|
||||
objects = Extractor Binder SessionImpl Connector \
|
||||
PostgreSQLStatementImpl PostgreSQLException \
|
||||
SessionHandle StatementExecutor PostgreSQLTypes Utility
|
||||
|
||||
target = PocoDataPostgreSQL
|
||||
target_version = $(LIBVERSION)
|
||||
target_libs = PocoData PocoFoundation
|
||||
|
||||
include $(POCO_BASE)/build/rules/lib
|
17
Data/PostgreSQL/PostgreSQL.progen
Normal file
17
Data/PostgreSQL/PostgreSQL.progen
Normal file
@ -0,0 +1,17 @@
|
||||
vc.project.guid = 73E19FDE-1570-488C-B3DB-72A60FADD408
|
||||
vc.project.name = PostgreSQL
|
||||
vc.project.target = PocoDataPostgreSQL
|
||||
vc.project.type = library
|
||||
vc.project.pocobase = ..\\..
|
||||
vc.project.outdir = ${vc.project.pocobase}
|
||||
vc.project.platforms = Win32, x64
|
||||
vc.project.configurations = debug_shared, release_shared, debug_static_mt, release_static_mt, debug_static_md, release_static_md
|
||||
vc.project.prototype = ${vc.project.name}_vs90.vcproj
|
||||
vc.project.compiler.include = ..\\..\\Foundation\\include;..\\..\\Data\\include
|
||||
vc.project.compiler.defines =
|
||||
vc.project.compiler.defines.shared = ${vc.project.name}_EXPORTS
|
||||
vc.project.compiler.defines.debug_shared = ${vc.project.compiler.defines.shared}
|
||||
vc.project.compiler.defines.release_shared = ${vc.project.compiler.defines.shared}
|
||||
vc.project.linker.dependencies = libpq.lib
|
||||
vc.solution.create = true
|
||||
vc.solution.include = testsuite\\TestSuite
|
60
Data/PostgreSQL/PostgreSQL_VS90.sln
Normal file
60
Data/PostgreSQL/PostgreSQL_VS90.sln
Normal file
@ -0,0 +1,60 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_vs90.vcproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs90.vcproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|Win32 = debug_shared|Win32
|
||||
release_shared|Win32 = release_shared|Win32
|
||||
debug_static_mt|Win32 = debug_static_mt|Win32
|
||||
release_static_mt|Win32 = release_static_mt|Win32
|
||||
debug_static_md|Win32 = debug_static_md|Win32
|
||||
release_static_md|Win32 = release_static_md|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Deploy.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Deploy.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
449
Data/PostgreSQL/PostgreSQL_VS90.vcproj
Normal file
449
Data/PostgreSQL/PostgreSQL_VS90.vcproj
Normal file
@ -0,0 +1,449 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
Name="PostgreSQL"
|
||||
Version="9.00"
|
||||
ProjectType="Visual C++"
|
||||
ProjectGUID="{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
RootNamespace="PostgreSQL"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<ToolFiles/>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="debug_shared|Win32"
|
||||
OutputDirectory="obj\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS"
|
||||
StringPooling="true"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
BufferSecurityCheck="true"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libpq.lib"
|
||||
OutputFile="..\..\bin\PocoDataPostgreSQLd.dll"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="true"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="..\..\bin\PocoDataPostgreSQLd.pdb"
|
||||
AdditionalLibraryDirectories="..\..\lib"
|
||||
SubSystem="1"
|
||||
ImportLibrary="..\..\lib\PocoDataPostgreSQLd.lib"
|
||||
TargetMachine="1"
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCManifestTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="release_shared|Win32"
|
||||
OutputDirectory="obj\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="4"
|
||||
InlineFunctionExpansion="1"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libpq.lib"
|
||||
OutputFile="..\..\bin\PocoDataPostgreSQL.dll"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
GenerateDebugInformation="false"
|
||||
AdditionalLibraryDirectories="..\..\lib"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
ImportLibrary="..\..\lib\PocoDataPostgreSQL.lib"
|
||||
TargetMachine="1"
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCManifestTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="debug_static_mt|Win32"
|
||||
OutputDirectory="obj\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_STATIC;"
|
||||
StringPooling="true"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
BufferSecurityCheck="true"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="..\..\lib\PocoDataPostgreSQLmtd.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\lib\PocoDataPostgreSQLmtd.lib"/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="release_static_mt|Win32"
|
||||
OutputDirectory="obj\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="4"
|
||||
InlineFunctionExpansion="1"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_STATIC;"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
BufferSecurityCheck="false"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\lib\PocoDataPostgreSQLmt.lib"/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="debug_static_md|Win32"
|
||||
OutputDirectory="obj\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_STATIC;"
|
||||
StringPooling="true"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
BufferSecurityCheck="true"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="..\..\lib\PocoDataPostgreSQLmdd.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\lib\PocoDataPostgreSQLmdd.lib"/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="release_static_md|Win32"
|
||||
OutputDirectory="obj\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="4"
|
||||
InlineFunctionExpansion="1"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_STATIC;"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\lib\PocoDataPostgreSQLmd.lib"/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References/>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath=".\src\Binder.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\Connector.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\Extractor.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\PostgreSQLException.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\PostgreSQLStatementImpl.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\PostgreSQLTypes.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\SessionHandle.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\SessionImpl.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\StatementExecutor.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\Utility.cpp"/>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\Binder.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\Connector.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\Extractor.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\PostgreSQL.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\PostgreSQLException.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\PostgreSQLTypes.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\SessionHandle.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\SessionImpl.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\StatementExecutor.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\Utility.h"/>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"/>
|
||||
</Files>
|
||||
<Globals/>
|
||||
</VisualStudioProject>
|
60
Data/PostgreSQL/PostgreSQL_vs100.sln
Normal file
60
Data/PostgreSQL/PostgreSQL_vs100.sln
Normal file
@ -0,0 +1,60 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_vs100.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs100.vcxproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|Win32 = debug_shared|Win32
|
||||
release_shared|Win32 = release_shared|Win32
|
||||
debug_static_mt|Win32 = debug_static_mt|Win32
|
||||
release_static_mt|Win32 = release_static_mt|Win32
|
||||
debug_static_md|Win32 = debug_static_md|Win32
|
||||
release_static_md|Win32 = release_static_md|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Deploy.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Deploy.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
304
Data/PostgreSQL/PostgreSQL_vs100.vcxproj
Normal file
304
Data/PostgreSQL/PostgreSQL_vs100.vcxproj
Normal file
@ -0,0 +1,304 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|Win32">
|
||||
<Configuration>debug_shared</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_md|Win32">
|
||||
<Configuration>debug_static_md</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_mt|Win32">
|
||||
<Configuration>debug_static_mt</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_shared|Win32">
|
||||
<Configuration>release_shared</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_md|Win32">
|
||||
<Configuration>release_static_md</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_mt|Win32">
|
||||
<Configuration>release_static_mt</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>PostgreSQL</ProjectName>
|
||||
<ProjectGuid>{73E19FDE-1570-488C-B3DB-72A60FADD408}</ProjectGuid>
|
||||
<RootNamespace>PostgreSQL</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">..\..\bin\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">true</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">..\..\bin\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">false</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">..\..\lib\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">..\..\lib\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">..\..\lib\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">..\..\lib\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoDataPostgreSQLd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoDataPostgreSQLmdd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoDataPostgreSQLmtd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">PocoDataPostgreSQL</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">PocoDataPostgreSQLmd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">PocoDataPostgreSQLmt</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin\PocoDataPostgreSQLd.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>..\..\bin\PocoDataPostgreSQLd.pdb</ProgramDatabaseFile>
|
||||
<AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>..\..\lib\PocoDataPostgreSQLd.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin\PocoDataPostgreSQL.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>..\..\lib\PocoDataPostgreSQL.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmtd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmt.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmdd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp"/>
|
||||
<ClCompile Include="src\Connector.cpp"/>
|
||||
<ClCompile Include="src\Extractor.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLException.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp"/>
|
||||
<ClCompile Include="src\SessionHandle.cpp"/>
|
||||
<ClCompile Include="src\SessionImpl.cpp"/>
|
||||
<ClCompile Include="src\StatementExecutor.cpp"/>
|
||||
<ClCompile Include="src\Utility.cpp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
</Project>
|
84
Data/PostgreSQL/PostgreSQL_vs100.vcxproj.filters
Normal file
84
Data/PostgreSQL/PostgreSQL_vs100.vcxproj.filters
Normal file
@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Connector.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Extractor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLException.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionHandle.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\StatementExecutor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Utility.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
60
Data/PostgreSQL/PostgreSQL_vs110.sln
Normal file
60
Data/PostgreSQL/PostgreSQL_vs110.sln
Normal file
@ -0,0 +1,60 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_vs110.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs110.vcxproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|Win32 = debug_shared|Win32
|
||||
release_shared|Win32 = release_shared|Win32
|
||||
debug_static_mt|Win32 = debug_static_mt|Win32
|
||||
release_static_mt|Win32 = release_static_mt|Win32
|
||||
debug_static_md|Win32 = debug_static_md|Win32
|
||||
release_static_md|Win32 = release_static_md|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Deploy.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Deploy.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
309
Data/PostgreSQL/PostgreSQL_vs110.vcxproj
Normal file
309
Data/PostgreSQL/PostgreSQL_vs110.vcxproj
Normal file
@ -0,0 +1,309 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|Win32">
|
||||
<Configuration>debug_shared</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_md|Win32">
|
||||
<Configuration>debug_static_md</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_mt|Win32">
|
||||
<Configuration>debug_static_mt</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_shared|Win32">
|
||||
<Configuration>release_shared</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_md|Win32">
|
||||
<Configuration>release_static_md</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_mt|Win32">
|
||||
<Configuration>release_static_mt</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>PostgreSQL</ProjectName>
|
||||
<ProjectGuid>{73E19FDE-1570-488C-B3DB-72A60FADD408}</ProjectGuid>
|
||||
<RootNamespace>PostgreSQL</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings" />
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoDataPostgreSQLd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoDataPostgreSQLmdd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoDataPostgreSQLmtd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">PocoDataPostgreSQL</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">PocoDataPostgreSQLmd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">PocoDataPostgreSQLmt</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
|
||||
<OutDir>..\..\bin\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<IncludePath>$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">
|
||||
<OutDir>..\..\bin\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">
|
||||
<OutDir>..\..\lib\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">
|
||||
<OutDir>..\..\lib\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">
|
||||
<OutDir>..\..\lib\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">
|
||||
<OutDir>..\..\lib\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin\PocoDataPostgreSQLd.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>..\..\bin\PocoDataPostgreSQLd.pdb</ProgramDatabaseFile>
|
||||
<AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>..\..\lib\PocoDataPostgreSQLd.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin\PocoDataPostgreSQL.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>..\..\lib\PocoDataPostgreSQL.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmtd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmt.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmdd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp" />
|
||||
<ClCompile Include="src\Connector.cpp" />
|
||||
<ClCompile Include="src\Extractor.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLException.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp" />
|
||||
<ClCompile Include="src\SessionHandle.cpp" />
|
||||
<ClCompile Include="src\SessionImpl.cpp" />
|
||||
<ClCompile Include="src\StatementExecutor.cpp" />
|
||||
<ClCompile Include="src\Utility.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
84
Data/PostgreSQL/PostgreSQL_vs110.vcxproj.filters
Normal file
84
Data/PostgreSQL/PostgreSQL_vs110.vcxproj.filters
Normal file
@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Connector.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Extractor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLException.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionHandle.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\StatementExecutor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Utility.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
50
Data/PostgreSQL/PostgreSQL_vs120.sln
Normal file
50
Data/PostgreSQL/PostgreSQL_vs120.sln
Normal file
@ -0,0 +1,50 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Express 2013 for Windows Desktop
|
||||
VisualStudioVersion = 12.0.40629.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_vs120.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs120.vcxproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|Win32 = debug_shared|Win32
|
||||
debug_static_md|Win32 = debug_static_md|Win32
|
||||
debug_static_mt|Win32 = debug_static_mt|Win32
|
||||
release_shared|Win32 = release_shared|Win32
|
||||
release_static_md|Win32 = release_static_md|Win32
|
||||
release_static_mt|Win32 = release_static_mt|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
308
Data/PostgreSQL/PostgreSQL_vs120.vcxproj
Normal file
308
Data/PostgreSQL/PostgreSQL_vs120.vcxproj
Normal file
@ -0,0 +1,308 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|Win32">
|
||||
<Configuration>debug_shared</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_md|Win32">
|
||||
<Configuration>debug_static_md</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_mt|Win32">
|
||||
<Configuration>debug_static_mt</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_shared|Win32">
|
||||
<Configuration>release_shared</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_md|Win32">
|
||||
<Configuration>release_static_md</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_mt|Win32">
|
||||
<Configuration>release_static_mt</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>PostgreSQL</ProjectName>
|
||||
<ProjectGuid>{73E19FDE-1570-488C-B3DB-72A60FADD408}</ProjectGuid>
|
||||
<RootNamespace>PostgreSQL</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings" />
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">PocoDataPostgreSQLd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">PocoDataPostgreSQLmdd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">PocoDataPostgreSQLmtd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">PocoDataPostgreSQL</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">PocoDataPostgreSQLmd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">PocoDataPostgreSQLmt</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
|
||||
<OutDir>..\..\bin\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">
|
||||
<OutDir>..\..\bin\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">
|
||||
<OutDir>..\..\lib\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">
|
||||
<OutDir>..\..\lib\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">
|
||||
<OutDir>..\..\lib\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">
|
||||
<OutDir>..\..\lib\</OutDir>
|
||||
<IntDir>obj\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin\PocoDataPostgreSQLd.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>..\..\bin\PocoDataPostgreSQLd.pdb</ProgramDatabaseFile>
|
||||
<AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>..\..\lib\PocoDataPostgreSQLd.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>CppUnit.lib;libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin\PocoDataPostgreSQL.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>..\..\lib\PocoDataPostgreSQL.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmtd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmt.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmdd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib\PocoDataPostgreSQLmd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\lib\PocoDataPostgreSQLmd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp" />
|
||||
<ClCompile Include="src\Connector.cpp" />
|
||||
<ClCompile Include="src\Extractor.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLException.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp" />
|
||||
<ClCompile Include="src\SessionHandle.cpp" />
|
||||
<ClCompile Include="src\SessionImpl.cpp" />
|
||||
<ClCompile Include="src\StatementExecutor.cpp" />
|
||||
<ClCompile Include="src\Utility.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
84
Data/PostgreSQL/PostgreSQL_vs120.vcxproj.filters
Normal file
84
Data/PostgreSQL/PostgreSQL_vs120.vcxproj.filters
Normal file
@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Connector.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Extractor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLException.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionHandle.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\StatementExecutor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Utility.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
60
Data/PostgreSQL/PostgreSQL_vs140.sln
Normal file
60
Data/PostgreSQL/PostgreSQL_vs140.sln
Normal file
@ -0,0 +1,60 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 14.00
|
||||
# Visual Studio 2015
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_vs140.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs140.vcxproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|Win32 = debug_shared|Win32
|
||||
release_shared|Win32 = release_shared|Win32
|
||||
debug_static_mt|Win32 = debug_static_mt|Win32
|
||||
release_static_mt|Win32 = release_static_mt|Win32
|
||||
debug_static_md|Win32 = debug_static_md|Win32
|
||||
release_static_md|Win32 = release_static_md|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Deploy.0 = release_shared|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Build.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.ActiveCfg = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Build.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|Win32.Deploy.0 = release_shared|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Build.0 = release_static_md|Win32
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
60
Data/PostgreSQL/PostgreSQL_x64_vs100.sln
Normal file
60
Data/PostgreSQL/PostgreSQL_x64_vs100.sln
Normal file
@ -0,0 +1,60 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_x64_vs100.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs100.vcxproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|x64 = debug_shared|x64
|
||||
release_shared|x64 = release_shared|x64
|
||||
debug_static_mt|x64 = debug_static_mt|x64
|
||||
release_static_mt|x64 = release_static_mt|x64
|
||||
debug_static_md|x64 = debug_static_md|x64
|
||||
release_static_md|x64 = release_static_md|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Deploy.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Deploy.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Deploy.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Deploy.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Deploy.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Deploy.0 = release_static_md|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
302
Data/PostgreSQL/PostgreSQL_x64_vs100.vcxproj
Normal file
302
Data/PostgreSQL/PostgreSQL_x64_vs100.vcxproj
Normal file
@ -0,0 +1,302 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|x64">
|
||||
<Configuration>debug_shared</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_md|x64">
|
||||
<Configuration>debug_static_md</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_mt|x64">
|
||||
<Configuration>debug_static_mt</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_shared|x64">
|
||||
<Configuration>release_shared</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_md|x64">
|
||||
<Configuration>release_static_md</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_mt|x64">
|
||||
<Configuration>release_static_mt</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>PostgreSQL</ProjectName>
|
||||
<ProjectGuid>{73E19FDE-1570-488C-B3DB-72A60FADD408}</ProjectGuid>
|
||||
<RootNamespace>PostgreSQL</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">..\..\bin64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">true</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">..\..\bin64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">false</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">..\..\lib64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">..\..\lib64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">..\..\lib64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">..\..\lib64\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">PocoDataPostgreSQL64d</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">PocoDataPostgreSQLmdd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">PocoDataPostgreSQLmtd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">PocoDataPostgreSQL64</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">PocoDataPostgreSQLmd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">PocoDataPostgreSQLmt</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin64\PocoDataPostgreSQL64d.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>..\..\bin64\PocoDataPostgreSQL64d.pdb</ProgramDatabaseFile>
|
||||
<AdditionalLibraryDirectories>..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>..\..\lib64\PocoDataPostgreSQLd.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin64\PocoDataPostgreSQL64.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>..\..\lib64\PocoDataPostgreSQL.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<ProgramDataBaseFileName>..\..\lib64\PocoDataPostgreSQLmtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmtd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmt.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<ProgramDataBaseFileName>..\..\lib64\PocoDataPostgreSQLmdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmdd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp"/>
|
||||
<ClCompile Include="src\Connector.cpp"/>
|
||||
<ClCompile Include="src\Extractor.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLException.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp"/>
|
||||
<ClCompile Include="src\SessionHandle.cpp"/>
|
||||
<ClCompile Include="src\SessionImpl.cpp"/>
|
||||
<ClCompile Include="src\StatementExecutor.cpp"/>
|
||||
<ClCompile Include="src\Utility.cpp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
</Project>
|
84
Data/PostgreSQL/PostgreSQL_x64_vs100.vcxproj.filters
Normal file
84
Data/PostgreSQL/PostgreSQL_x64_vs100.vcxproj.filters
Normal file
@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Connector.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Extractor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLException.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionHandle.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\StatementExecutor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Utility.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
60
Data/PostgreSQL/PostgreSQL_x64_vs110.sln
Normal file
60
Data/PostgreSQL/PostgreSQL_x64_vs110.sln
Normal file
@ -0,0 +1,60 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_x64_vs110.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs110.vcxproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|x64 = debug_shared|x64
|
||||
release_shared|x64 = release_shared|x64
|
||||
debug_static_mt|x64 = debug_static_mt|x64
|
||||
release_static_mt|x64 = release_static_mt|x64
|
||||
debug_static_md|x64 = debug_static_md|x64
|
||||
release_static_md|x64 = release_static_md|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Deploy.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Deploy.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Deploy.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Deploy.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Deploy.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Deploy.0 = release_static_md|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
306
Data/PostgreSQL/PostgreSQL_x64_vs110.vcxproj
Normal file
306
Data/PostgreSQL/PostgreSQL_x64_vs110.vcxproj
Normal file
@ -0,0 +1,306 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|x64">
|
||||
<Configuration>debug_shared</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_md|x64">
|
||||
<Configuration>debug_static_md</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_mt|x64">
|
||||
<Configuration>debug_static_mt</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_shared|x64">
|
||||
<Configuration>release_shared</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_md|x64">
|
||||
<Configuration>release_static_md</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_mt|x64">
|
||||
<Configuration>release_static_mt</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>PostgreSQL</ProjectName>
|
||||
<ProjectGuid>{73E19FDE-1570-488C-B3DB-72A60FADD408}</ProjectGuid>
|
||||
<RootNamespace>PostgreSQL</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props"/>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props"/>
|
||||
<ImportGroup Label="ExtensionSettings"/>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"/>
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros"/>
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">PocoDataPostgreSQL64d</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">PocoDataPostgreSQLmdd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">PocoDataPostgreSQLmtd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">PocoDataPostgreSQL64</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">PocoDataPostgreSQLmd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">PocoDataPostgreSQLmt</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">
|
||||
<OutDir>..\..\bin64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">
|
||||
<OutDir>..\..\bin64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">
|
||||
<OutDir>..\..\lib64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">
|
||||
<OutDir>..\..\lib64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">
|
||||
<OutDir>..\..\lib64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">
|
||||
<OutDir>..\..\lib64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin64\PocoDataPostgreSQL64d.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>..\..\bin64\PocoDataPostgreSQL64d.pdb</ProgramDatabaseFile>
|
||||
<AdditionalLibraryDirectories>..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>..\..\lib64\PocoDataPostgreSQLd.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin64\PocoDataPostgreSQL64.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>..\..\lib64\PocoDataPostgreSQL.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<ProgramDataBaseFileName>..\..\lib64\PocoDataPostgreSQLmtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmtd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmt.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<ProgramDataBaseFileName>..\..\lib64\PocoDataPostgreSQLmdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmdd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader/>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat/>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp"/>
|
||||
<ClCompile Include="src\Connector.cpp"/>
|
||||
<ClCompile Include="src\Extractor.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLException.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp"/>
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp"/>
|
||||
<ClCompile Include="src\SessionHandle.cpp"/>
|
||||
<ClCompile Include="src\SessionImpl.cpp"/>
|
||||
<ClCompile Include="src\StatementExecutor.cpp"/>
|
||||
<ClCompile Include="src\Utility.cpp"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h"/>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h"/>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"/>
|
||||
<ImportGroup Label="ExtensionTargets"/>
|
||||
</Project>
|
84
Data/PostgreSQL/PostgreSQL_x64_vs110.vcxproj.filters
Normal file
84
Data/PostgreSQL/PostgreSQL_x64_vs110.vcxproj.filters
Normal file
@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Connector.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Extractor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLException.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionHandle.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\SessionImpl.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\StatementExecutor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Utility.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
47
Data/PostgreSQL/PostgreSQL_x64_vs120.sln
Normal file
47
Data/PostgreSQL/PostgreSQL_x64_vs120.sln
Normal file
@ -0,0 +1,47 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Express 2013 for Windows Desktop
|
||||
VisualStudioVersion = 12.0.40629.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_x64_vs120.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs120.vcxproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|x64 = debug_shared|x64
|
||||
debug_static_md|x64 = debug_static_md|x64
|
||||
debug_static_mt|x64 = debug_static_mt|x64
|
||||
release_shared|x64 = release_shared|x64
|
||||
release_static_md|x64 = release_static_md|x64
|
||||
release_static_mt|x64 = release_static_mt|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
306
Data/PostgreSQL/PostgreSQL_x64_vs120.vcxproj
Normal file
306
Data/PostgreSQL/PostgreSQL_x64_vs120.vcxproj
Normal file
@ -0,0 +1,306 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="debug_shared|x64">
|
||||
<Configuration>debug_shared</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_md|x64">
|
||||
<Configuration>debug_static_md</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="debug_static_mt|x64">
|
||||
<Configuration>debug_static_mt</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_shared|x64">
|
||||
<Configuration>release_shared</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_md|x64">
|
||||
<Configuration>release_static_md</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="release_static_mt|x64">
|
||||
<Configuration>release_static_mt</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>PostgreSQL</ProjectName>
|
||||
<ProjectGuid>{73E19FDE-1570-488C-B3DB-72A60FADD408}</ProjectGuid>
|
||||
<RootNamespace>PostgreSQL</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings" />
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'" Label="PropertySheets">
|
||||
<Import Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">PocoDataPostgreSQL64d</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">PocoDataPostgreSQLmdd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">PocoDataPostgreSQLmtd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">PocoDataPostgreSQL64</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">PocoDataPostgreSQLmd</TargetName>
|
||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">PocoDataPostgreSQLmt</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">
|
||||
<OutDir>..\..\bin64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">
|
||||
<OutDir>..\..\bin64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">
|
||||
<OutDir>..\..\lib64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">
|
||||
<OutDir>..\..\lib64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">
|
||||
<OutDir>..\..\lib64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">
|
||||
<OutDir>..\..\lib64\</OutDir>
|
||||
<IntDir>obj64\PostgreSQL\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_shared|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin64\PocoDataPostgreSQL64d.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>..\..\bin64\PocoDataPostgreSQL64d.pdb</ProgramDatabaseFile>
|
||||
<AdditionalLibraryDirectories>..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<ImportLibrary>..\..\lib64\PocoDataPostgreSQLd.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_shared|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libpq.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>..\..\bin64\PocoDataPostgreSQL64.dll</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<ImportLibrary>..\..\lib64\PocoDataPostgreSQL.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_mt|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib64\PocoDataPostgreSQLmtd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmtd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_mt|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmt.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug_static_md|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>true</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<ProgramDataBaseFileName>..\..\lib64\PocoDataPostgreSQLmdd.pdb</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmdd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release_static_md|x64'">
|
||||
<ClCompile>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>.\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||
<ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat />
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>..\..\lib64\PocoDataPostgreSQLmd.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\Binder.cpp" />
|
||||
<ClCompile Include="src\Connector.cpp" />
|
||||
<ClCompile Include="src\Extractor.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLException.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLStatementImpl.cpp" />
|
||||
<ClCompile Include="src\PostgreSQLTypes.cpp" />
|
||||
<ClCompile Include="src\SessionHandle.cpp" />
|
||||
<ClCompile Include="src\SessionImpl.cpp" />
|
||||
<ClCompile Include="src\StatementExecutor.cpp" />
|
||||
<ClCompile Include="src\Utility.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Binder.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Connector.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Extractor.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQL.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLException.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\PostgreSQLTypes.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionHandle.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\SessionImpl.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\StatementExecutor.h" />
|
||||
<ClInclude Include="include\Poco\Data\PostgreSQL\Utility.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets" />
|
||||
</Project>
|
60
Data/PostgreSQL/PostgreSQL_x64_vs140.sln
Normal file
60
Data/PostgreSQL/PostgreSQL_x64_vs140.sln
Normal file
@ -0,0 +1,60 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 14.00
|
||||
# Visual Studio 2015
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_x64_vs140.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs140.vcxproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|x64 = debug_shared|x64
|
||||
release_shared|x64 = release_shared|x64
|
||||
debug_static_mt|x64 = debug_static_mt|x64
|
||||
release_static_mt|x64 = release_static_mt|x64
|
||||
debug_static_md|x64 = debug_static_md|x64
|
||||
release_static_md|x64 = release_static_md|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Deploy.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Deploy.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Deploy.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Deploy.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Deploy.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Deploy.0 = release_static_md|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
60
Data/PostgreSQL/PostgreSQL_x64_vs90.sln
Normal file
60
Data/PostgreSQL/PostgreSQL_x64_vs90.sln
Normal file
@ -0,0 +1,60 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_x64_vs90.vcproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_x64_vs90.vcproj", "{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
debug_shared|x64 = debug_shared|x64
|
||||
release_shared|x64 = release_shared|x64
|
||||
debug_static_mt|x64 = debug_static_mt|x64
|
||||
release_static_mt|x64 = release_static_mt|x64
|
||||
debug_static_md|x64 = debug_static_md|x64
|
||||
release_static_md|x64 = release_static_md|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Deploy.0 = debug_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Deploy.0 = release_shared|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Deploy.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.ActiveCfg = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Build.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_shared|x64.Deploy.0 = debug_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.ActiveCfg = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Build.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_shared|x64.Deploy.0 = release_shared|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Build.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Build.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.ActiveCfg = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Build.0 = release_static_md|x64
|
||||
{45528A81-2523-48DD-AEB3-6B6BD73A2C5D}.release_static_md|x64.Deploy.0 = release_static_md|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
454
Data/PostgreSQL/PostgreSQL_x64_vs90.vcproj
Normal file
454
Data/PostgreSQL/PostgreSQL_x64_vs90.vcproj
Normal file
@ -0,0 +1,454 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
Name="PostgreSQL"
|
||||
Version="9.00"
|
||||
ProjectType="Visual C++"
|
||||
ProjectGUID="{73E19FDE-1570-488C-B3DB-72A60FADD408}"
|
||||
RootNamespace="PostgreSQL"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="x64"/>
|
||||
</Platforms>
|
||||
<ToolFiles/>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="debug_shared|x64"
|
||||
OutputDirectory="obj64\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj64\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS"
|
||||
StringPooling="true"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
BufferSecurityCheck="true"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libpq.lib"
|
||||
OutputFile="..\..\bin64\PocoDataPostgreSQL64d.dll"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="true"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="..\..\bin64\PocoDataPostgreSQL64d.pdb"
|
||||
AdditionalLibraryDirectories="..\..\lib64"
|
||||
SubSystem="1"
|
||||
ImportLibrary="..\..\lib64\PocoDataPostgreSQLd.lib"
|
||||
TargetMachine="17"
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCManifestTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="release_shared|x64"
|
||||
OutputDirectory="obj64\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj64\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="4"
|
||||
InlineFunctionExpansion="1"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libpq.lib"
|
||||
OutputFile="..\..\bin64\PocoDataPostgreSQL64.dll"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
GenerateDebugInformation="false"
|
||||
AdditionalLibraryDirectories="..\..\lib64"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
OptimizeForWindows98="0"
|
||||
ImportLibrary="..\..\lib64\PocoDataPostgreSQL.lib"
|
||||
TargetMachine="17"
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCManifestTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="debug_static_mt|x64"
|
||||
OutputDirectory="obj64\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj64\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_STATIC;"
|
||||
StringPooling="true"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
BufferSecurityCheck="true"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="..\..\lib64\PocoDataPostgreSQLmtd.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\lib64\PocoDataPostgreSQLmtd.lib"
|
||||
TargetMachine="17"/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="release_static_mt|x64"
|
||||
OutputDirectory="obj64\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj64\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="4"
|
||||
InlineFunctionExpansion="1"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_STATIC;"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
BufferSecurityCheck="false"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\lib64\PocoDataPostgreSQLmt.lib"
|
||||
TargetMachine="17"/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="debug_static_md|x64"
|
||||
OutputDirectory="obj64\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj64\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;POCO_STATIC;"
|
||||
StringPooling="true"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
BufferSecurityCheck="true"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
ProgramDataBaseFileName="..\..\lib64\PocoDataPostgreSQLmdd.pdb"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\lib64\PocoDataPostgreSQLmdd.lib"
|
||||
TargetMachine="17"/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="release_static_md|x64"
|
||||
OutputDirectory="obj64\$(ConfigurationName)"
|
||||
IntermediateDirectory="obj64\$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="4"
|
||||
InlineFunctionExpansion="1"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories=".\include;..\..\Foundation\include;..\..\Data\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;POCO_STATIC;"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
BufferSecurityCheck="false"
|
||||
TreatWChar_tAsBuiltInType="true"
|
||||
ForceConformanceInForLoopScope="true"
|
||||
RuntimeTypeInfo="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="false"
|
||||
DebugInformationFormat="0"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings=""
|
||||
AdditionalOptions=""/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\lib64\PocoDataPostgreSQLmd.lib"
|
||||
TargetMachine="17"/>
|
||||
<Tool
|
||||
Name="VCALinkTool"/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References/>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath=".\src\Binder.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\Connector.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\Extractor.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\PostgreSQLException.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\PostgreSQLStatementImpl.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\PostgreSQLTypes.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\SessionHandle.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\SessionImpl.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\StatementExecutor.cpp"/>
|
||||
<File
|
||||
RelativePath=".\src\Utility.cpp"/>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\Binder.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\Connector.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\Extractor.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\PostgreSQL.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\PostgreSQLException.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\PostgreSQLStatementImpl.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\PostgreSQLTypes.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\SessionHandle.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\SessionImpl.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\StatementExecutor.h"/>
|
||||
<File
|
||||
RelativePath=".\include\Poco\Data\PostgreSQL\Utility.h"/>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"/>
|
||||
</Files>
|
||||
<Globals/>
|
||||
</VisualStudioProject>
|
4
Data/PostgreSQL/cmake/PocoDataPostgreSQLConfig.cmake
Normal file
4
Data/PostgreSQL/cmake/PocoDataPostgreSQLConfig.cmake
Normal file
@ -0,0 +1,4 @@
|
||||
include(CMakeFindDependencyMacro)
|
||||
find_dependency(PocoFoundation)
|
||||
find_dependency(PocoData)
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/PocoDataPostgreSQLTargets.cmake")
|
2
Data/PostgreSQL/dependencies
Normal file
2
Data/PostgreSQL/dependencies
Normal file
@ -0,0 +1,2 @@
|
||||
Foundation
|
||||
Data
|
285
Data/PostgreSQL/include/Poco/Data/PostgreSQL/Binder.h
Normal file
285
Data/PostgreSQL/include/Poco/Data/PostgreSQL/Binder.h
Normal file
@ -0,0 +1,285 @@
|
||||
//
|
||||
// Binder.h
|
||||
//
|
||||
// $Id: //poco/1.5/Data/PostgreSQL/include/Poco/Data/PostgreSQL/Binder.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: Binder
|
||||
//
|
||||
// Definition of the Binder class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
|
||||
#ifndef Data_PostgreSQL_Binder_INCLUDED
|
||||
#define Data_PostgreSQL_Binder_INCLUDED
|
||||
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQL.h"
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQLTypes.h"
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQLException.h"
|
||||
|
||||
#include "Poco/Data/AbstractBinder.h"
|
||||
#include "Poco/Data/MetaColumn.h"
|
||||
#include "Poco/Data/LOB.h"
|
||||
#include "Poco/Types.h"
|
||||
|
||||
#include <libpq-fe.h>
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
|
||||
class PostgreSQL_API Binder: public Poco::Data::AbstractBinder
|
||||
/// Binds INPUT (only) placeholders in the sql query to the provided values.
|
||||
/// Allows data type mapping at statement execution time.
|
||||
{
|
||||
public:
|
||||
typedef SharedPtr<Binder> Ptr;
|
||||
|
||||
Binder();
|
||||
/// Creates the Binder.
|
||||
|
||||
virtual ~Binder();
|
||||
/// Destroys the Binder.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Int8& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an Int8.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::UInt8& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an UInt8.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Int16& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an Int16.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::UInt16& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an UInt16.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Int32& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an Int32.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::UInt32& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an UInt32.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Int64& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an Int64.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::UInt64& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an UInt64.
|
||||
|
||||
#ifndef POCO_LONG_IS_64_BIT
|
||||
|
||||
virtual void bind(std::size_t pos, const long& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a long.
|
||||
|
||||
virtual void bind(std::size_t pos, const unsigned long& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds an unsigned long.
|
||||
|
||||
#endif // POCO_LONG_IS_64_BIT
|
||||
|
||||
virtual void bind(std::size_t pos, const bool& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a boolean.
|
||||
|
||||
virtual void bind(std::size_t pos, const float& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a float.
|
||||
|
||||
virtual void bind(std::size_t pos, const double& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a double.
|
||||
|
||||
virtual void bind(std::size_t pos, const char& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a single character.
|
||||
|
||||
virtual void bind(std::size_t pos, const std::string& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a string.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Data::BLOB& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a BLOB.
|
||||
|
||||
virtual void bind(std::size_t pos, const Poco::Data::CLOB& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a CLOB.
|
||||
|
||||
virtual void bind(std::size_t pos, const DateTime& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a DateTime.
|
||||
|
||||
virtual void bind(std::size_t pos, const Date& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a Date.
|
||||
|
||||
virtual void bind(std::size_t pos, const Time& val, Direction dir = PD_IN, const WhenNullCb& nullCb = WhenNullCb());
|
||||
/// Binds a Time.
|
||||
|
||||
virtual void bind(std::size_t pos, const NullData& val, Direction dir = PD_IN, const std::type_info& bindType = typeid(void));
|
||||
/// Binds a null.
|
||||
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Poco::Int8>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Poco::Int8>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Poco::Int8>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Poco::UInt8>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Poco::UInt8>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Poco::UInt8>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Poco::Int16>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Poco::Int16>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Poco::Int16>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Poco::UInt16>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Poco::UInt16>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Poco::UInt16>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Poco::Int32>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Poco::Int32>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Poco::Int32>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Poco::UInt32>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Poco::UInt32>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Poco::UInt32>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Poco::Int64>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Poco::Int64>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Poco::Int64>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Poco::UInt64>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Poco::UInt64>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Poco::UInt64>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<bool>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<bool>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<bool>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<float>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<float>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<float>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<double>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<double>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<double>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<char>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<char>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<char>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<BLOB>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<BLOB>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<BLOB>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<CLOB>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<CLOB>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<CLOB>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<DateTime>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<DateTime>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<DateTime>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Date>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Date>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Date>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<Time>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<Time>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<Time>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<NullData>& val, Direction dir = PD_IN, const std::type_info& bindType = typeid(void));
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<NullData>& val, Direction dir = PD_IN, const std::type_info& bindType = typeid(void));
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<NullData>& val, Direction dir = PD_IN, const std::type_info& bindType = typeid(void));
|
||||
|
||||
virtual void bind(std::size_t pos, const std::vector<std::string>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::deque<std::string>& val, Direction dir = PD_IN);
|
||||
|
||||
virtual void bind(std::size_t pos, const std::list<std::string>& val, Direction dir = PD_IN);
|
||||
|
||||
std::size_t size() const;
|
||||
/// Return count of bound parameters
|
||||
|
||||
InputParameterVector bindVector() const;
|
||||
/// Return the vector of bound parameters.
|
||||
|
||||
void updateBindVectorToCurrentValues();
|
||||
/// obtain the current version of the bound data and update the internal representation
|
||||
|
||||
private:
|
||||
Binder(const Binder&);
|
||||
/// Don't copy the binder
|
||||
|
||||
virtual void bind(std::size_t, const char* const&, Direction, const WhenNullCb&)
|
||||
/// Binds a const char ptr.
|
||||
/// This is a private no-op in this implementation
|
||||
/// due to security risk.
|
||||
{
|
||||
}
|
||||
|
||||
void realBind(std::size_t aPosition, Poco::Data::MetaColumn::ColumnDataType aFieldType, const void* aBufferPtr, std::size_t aLength);
|
||||
/// Common bind implementation
|
||||
|
||||
private:
|
||||
|
||||
InputParameterVector _bindVector;
|
||||
};
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::PostgreSQL
|
||||
|
||||
|
||||
#endif // Data_PostgreSQL_Binder_INCLUDED
|
141
Data/PostgreSQL/include/Poco/Data/PostgreSQL/Connector.h
Normal file
141
Data/PostgreSQL/include/Poco/Data/PostgreSQL/Connector.h
Normal file
@ -0,0 +1,141 @@
|
||||
//
|
||||
// Connector.h
|
||||
//
|
||||
// $Id: //poco/1.5/Data/PostgreSQL/include/Poco/Data/PostgreSQL/Connector.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: Connector
|
||||
//
|
||||
// Definition of the Connector class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
#ifndef Data_PostgreSQL_Connector_INCLUDED
|
||||
#define Data_PostgreSQL_Connector_INCLUDED
|
||||
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQL.h"
|
||||
#include "Poco/Data/SessionImpl.h"
|
||||
#include "Poco/Data/Connector.h"
|
||||
|
||||
#include "Poco/AutoPtr.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
// Note: to avoid static (de)initialization problems,
|
||||
// during connector automatic (un)registration, it is
|
||||
// best to have this as a macro.
|
||||
|
||||
#define POCO_DATA_POSTGRESQL_CONNECTOR_NAME "postgresql"
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
class PostgreSQL_API Connector: public Poco::Data::Connector
|
||||
/// Connector instantiates PostgreSQL SessionImpl objects.
|
||||
{
|
||||
public:
|
||||
|
||||
static std::string KEY;
|
||||
|
||||
Connector();
|
||||
/// Creates the Connector.
|
||||
|
||||
virtual ~Connector();
|
||||
/// Destroys the Connector.
|
||||
|
||||
virtual const std::string& name() const;
|
||||
/// Returns the name associated with this connector.
|
||||
|
||||
virtual Poco::AutoPtr<Poco::Data::SessionImpl> createSession(const std::string& aConnectionString,
|
||||
std::size_t aTimeout = Poco::Data::SessionImpl::LOGIN_TIMEOUT_DEFAULT);
|
||||
/// Creates a PostgreSQL SessionImpl object and initializes it with the given connectionString.
|
||||
|
||||
static void registerConnector();
|
||||
/// Registers the Connector under the Keyword Connector::KEY at the Poco::Data::SessionFactory
|
||||
|
||||
static void unregisterConnector();
|
||||
/// Unregisters the Connector under the Keyword Connector::KEY at the Poco::Data::SessionFactory
|
||||
};
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::PostgreSQL
|
||||
|
||||
|
||||
//
|
||||
// Automatic Connector registration
|
||||
//
|
||||
|
||||
struct PostgreSQL_API PostgreSQLConnectorRegistrator
|
||||
/// Connector registering class.
|
||||
/// A global instance of this class is instantiated
|
||||
/// with sole purpose to automatically register the
|
||||
/// PostgreSQL connector with central Poco Data registry.
|
||||
{
|
||||
PostgreSQLConnectorRegistrator()
|
||||
/// Calls Poco::Data::PostgreSQL::registerConnector();
|
||||
{
|
||||
Poco::Data::PostgreSQL::Connector::registerConnector();
|
||||
}
|
||||
|
||||
~PostgreSQLConnectorRegistrator()
|
||||
/// Calls Poco::Data::PostgreSQL::unregisterConnector();
|
||||
{
|
||||
Poco::Data::PostgreSQL::Connector::unregisterConnector();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#if !defined(POCO_NO_AUTOMATIC_LIB_INIT)
|
||||
#if defined(POCO_OS_FAMILY_WINDOWS)
|
||||
extern "C" const struct PostgreSQL_API PostgreSQLConnectorRegistrator pocoPostgreSQLConnectorRegistrator;
|
||||
#if defined(PostgreSQL_EXPORTS)
|
||||
#if defined(_WIN64)
|
||||
#define POCO_DATA_POSTGRESQL_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:"#s))
|
||||
#elif defined(_WIN32)
|
||||
#define POCO_DATA_POSTGRESQL_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:_"#s))
|
||||
#endif
|
||||
#else // !PostgreSQL_EXPORTS
|
||||
#if defined(_WIN64)
|
||||
#define POCO_DATA_POSTGRESQL_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:"#s))
|
||||
#elif defined(_WIN32)
|
||||
#define POCO_DATA_POSTGRESQL_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:_"#s))
|
||||
#endif
|
||||
#endif // PostgreSQL_EXPORTS
|
||||
#else // !POCO_OS_FAMILY_WINDOWS
|
||||
#define POCO_DATA_POSTGRESQL_FORCE_SYMBOL(s) extern "C" const struct PostgreSQLConnectorRegistrator s;
|
||||
#endif // POCO_OS_FAMILY_WINDOWS
|
||||
POCO_DATA_POSTGRESQL_FORCE_SYMBOL(pocoPostgreSQLConnectorRegistrator)
|
||||
#endif // POCO_NO_AUTOMATIC_LIB_INIT
|
||||
|
||||
//
|
||||
// End automatic Connector registration
|
||||
//
|
||||
|
||||
|
||||
#endif // Data_PostgreSQL_Connector_INCLUDED
|
390
Data/PostgreSQL/include/Poco/Data/PostgreSQL/Extractor.h
Normal file
390
Data/PostgreSQL/include/Poco/Data/PostgreSQL/Extractor.h
Normal file
@ -0,0 +1,390 @@
|
||||
//
|
||||
// Extractor.h
|
||||
//
|
||||
// $Id: //poco/1.5/Data/PostgreSQL/include/Poco/Data/PostgreSQL/Extractor.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: Extractor
|
||||
//
|
||||
// Definition of the Extractor class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
|
||||
#ifndef Data_PostgreSQL_Extractor_INCLUDED
|
||||
#define Data_PostgreSQL_Extractor_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQL.h"
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQLTypes.h"
|
||||
#include "Poco/Data/PostgreSQL/StatementExecutor.h"
|
||||
|
||||
#include "Poco/Data/AbstractExtractor.h"
|
||||
#include "Poco/Data/LOB.h"
|
||||
|
||||
#include "Poco/Types.h"
|
||||
#include "Poco/Any.h"
|
||||
#include "Poco/DynamicAny.h"
|
||||
#include "Poco/Dynamic/Var.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
|
||||
//namespace Dynamic {
|
||||
// class Var;
|
||||
//}
|
||||
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
|
||||
class PostgreSQL_API Extractor: public Poco::Data::AbstractExtractor
|
||||
/// Extracts and converts data values from the result row returned by PostgreSQL.
|
||||
/// If NULL is received, the incoming val value is not changed and false is returned
|
||||
{
|
||||
public:
|
||||
typedef SharedPtr<Extractor> Ptr;
|
||||
|
||||
Extractor(StatementExecutor& st);
|
||||
/// Creates the Extractor.
|
||||
|
||||
virtual ~Extractor();
|
||||
/// Destroys the Extractor.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::Int8& val);
|
||||
/// Extracts an Int8.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::UInt8& val);
|
||||
/// Extracts an UInt8.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::Int16& val);
|
||||
/// Extracts an Int16.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::UInt16& val);
|
||||
/// Extracts an UInt16.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::Int32& val);
|
||||
/// Extracts an Int32.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::UInt32& val);
|
||||
/// Extracts an UInt32.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::Int64& val);
|
||||
/// Extracts an Int64.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::UInt64& val);
|
||||
/// Extracts an UInt64.
|
||||
|
||||
#ifndef POCO_LONG_IS_64_BIT
|
||||
virtual bool extract(std::size_t pos, long& val);
|
||||
/// Extracts a long. Returns false if null was received.
|
||||
|
||||
|
||||
virtual bool extract(std::size_t pos, unsigned long& val);
|
||||
/// Extracts an unsigned long. Returns false if null was received.
|
||||
#endif
|
||||
|
||||
virtual bool extract(std::size_t pos, bool& val);
|
||||
/// Extracts a boolean.
|
||||
|
||||
virtual bool extract(std::size_t pos, float& val);
|
||||
/// Extracts a float.
|
||||
|
||||
virtual bool extract(std::size_t pos, double& val);
|
||||
/// Extracts a double.
|
||||
|
||||
virtual bool extract(std::size_t pos, char& val);
|
||||
/// Extracts a single character.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::string& val);
|
||||
/// Extracts a string.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::Data::BLOB& val);
|
||||
/// Extracts a BLOB.
|
||||
|
||||
virtual bool extract(std::size_t pos, Poco::Data::CLOB& val);
|
||||
/// Extracts a CLOB.
|
||||
|
||||
virtual bool extract(std::size_t pos, DateTime& val);
|
||||
/// Extracts a DateTime. Returns false if null was received.
|
||||
|
||||
virtual bool extract(std::size_t pos, Date& val);
|
||||
/// Extracts a Date. Returns false if null was received.
|
||||
|
||||
virtual bool extract(std::size_t pos, Time& val);
|
||||
/// Extracts a Time. Returns false if null was received.
|
||||
|
||||
virtual bool extract(std::size_t pos, Any& val);
|
||||
/// Extracts an Any. Returns false if null was received.
|
||||
|
||||
virtual bool extract(std::size_t pos, Dynamic::Var& val);
|
||||
/// Extracts a Dynamic::Var. Returns false if null was received.
|
||||
|
||||
virtual bool isNull(std::size_t col, std::size_t row);
|
||||
/// Returns true if the value at [col,row] position is null.
|
||||
|
||||
virtual void reset();
|
||||
/// Resets any information internally cached by the extractor.
|
||||
|
||||
////////////
|
||||
// Not implemented extract functions
|
||||
////////////
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Poco::Int8>& val);
|
||||
/// Extracts an Int8 vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Poco::Int8>& val);
|
||||
/// Extracts an Int8 deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Poco::Int8>& val);
|
||||
/// Extracts an Int8 list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Poco::UInt8>& val);
|
||||
/// Extracts an UInt8 vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Poco::UInt8>& val);
|
||||
/// Extracts an UInt8 deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Poco::UInt8>& val);
|
||||
/// Extracts an UInt8 list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Poco::Int16>& val);
|
||||
/// Extracts an Int16 vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Poco::Int16>& val);
|
||||
/// Extracts an Int16 deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Poco::Int16>& val);
|
||||
/// Extracts an Int16 list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Poco::UInt16>& val);
|
||||
/// Extracts an UInt16 vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Poco::UInt16>& val);
|
||||
/// Extracts an UInt16 deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Poco::UInt16>& val);
|
||||
/// Extracts an UInt16 list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Poco::Int32>& val);
|
||||
/// Extracts an Int32 vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Poco::Int32>& val);
|
||||
/// Extracts an Int32 deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Poco::Int32>& val);
|
||||
/// Extracts an Int32 list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Poco::UInt32>& val);
|
||||
/// Extracts an UInt32 vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Poco::UInt32>& val);
|
||||
/// Extracts an UInt32 deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Poco::UInt32>& val);
|
||||
/// Extracts an UInt32 list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Poco::Int64>& val);
|
||||
/// Extracts an Int64 vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Poco::Int64>& val);
|
||||
/// Extracts an Int64 deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Poco::Int64>& val);
|
||||
/// Extracts an Int64 list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Poco::UInt64>& val);
|
||||
/// Extracts an UInt64 vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Poco::UInt64>& val);
|
||||
/// Extracts an UInt64 deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Poco::UInt64>& val);
|
||||
/// Extracts an UInt64 list.
|
||||
|
||||
#ifndef POCO_LONG_IS_64_BIT
|
||||
virtual bool extract(std::size_t pos, std::vector<long>& val);
|
||||
/// Extracts a long vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<long>& val);
|
||||
/// Extracts a long deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<long>& val);
|
||||
/// Extracts a long list.
|
||||
#endif
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<bool>& val);
|
||||
/// Extracts a boolean vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<bool>& val);
|
||||
/// Extracts a boolean deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<bool>& val);
|
||||
/// Extracts a boolean list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<float>& val);
|
||||
/// Extracts a float vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<float>& val);
|
||||
/// Extracts a float deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<float>& val);
|
||||
/// Extracts a float list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<double>& val);
|
||||
/// Extracts a double vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<double>& val);
|
||||
/// Extracts a double deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<double>& val);
|
||||
/// Extracts a double list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<char>& val);
|
||||
/// Extracts a character vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<char>& val);
|
||||
/// Extracts a character deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<char>& val);
|
||||
/// Extracts a character list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<std::string>& val);
|
||||
/// Extracts a string vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<std::string>& val);
|
||||
/// Extracts a string deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<std::string>& val);
|
||||
/// Extracts a string list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<BLOB>& val);
|
||||
/// Extracts a BLOB vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<BLOB>& val);
|
||||
/// Extracts a BLOB deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<BLOB>& val);
|
||||
/// Extracts a BLOB list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<CLOB>& val);
|
||||
/// Extracts a CLOB vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<CLOB>& val);
|
||||
/// Extracts a CLOB deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<CLOB>& val);
|
||||
/// Extracts a CLOB list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<DateTime>& val);
|
||||
/// Extracts a DateTime vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<DateTime>& val);
|
||||
/// Extracts a DateTime deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<DateTime>& val);
|
||||
/// Extracts a DateTime list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Date>& val);
|
||||
/// Extracts a Date vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Date>& val);
|
||||
/// Extracts a Date deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Date>& val);
|
||||
/// Extracts a Date list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Time>& val);
|
||||
/// Extracts a Time vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Time>& val);
|
||||
/// Extracts a Time deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Time>& val);
|
||||
/// Extracts a Time list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Any>& val);
|
||||
/// Extracts an Any vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Any>& val);
|
||||
/// Extracts an Any deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Any>& val);
|
||||
/// Extracts an Any list.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::vector<Dynamic::Var>& val);
|
||||
/// Extracts a Dynamic::Var vector.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::deque<Dynamic::Var>& val);
|
||||
/// Extracts a Dynamic::Var deque.
|
||||
|
||||
virtual bool extract(std::size_t pos, std::list<Dynamic::Var>& val);
|
||||
/// Extracts a Dynamic::Var list.
|
||||
|
||||
private:
|
||||
|
||||
const OutputParameter& extractPreamble(std::size_t aPosition) const;
|
||||
|
||||
bool isColumnNull(const OutputParameter& anOutputParameter) const;
|
||||
|
||||
template <typename T>
|
||||
bool extractStringImpl(std::size_t pos, T& val)
|
||||
/// Utility function for extraction of Any and DynamicAny.
|
||||
{
|
||||
OutputParameter outputParameter = extractPreamble(pos);
|
||||
|
||||
if (isColumnNull(outputParameter))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string tempString; // since the postgreSQL API in use is all about strings...
|
||||
|
||||
bool returnValue = extract(pos, tempString);
|
||||
|
||||
if (returnValue)
|
||||
{
|
||||
val = tempString;
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
|
||||
// Prevent VC8 warning "operator= could not be generated"
|
||||
Extractor& operator=(const Extractor&);
|
||||
|
||||
private:
|
||||
|
||||
StatementExecutor& _statementExecutor;
|
||||
};
|
||||
|
||||
} } } // namespace Poco::Data::PostgreSQL
|
||||
|
||||
|
||||
#endif // Data_PostgreSQL_Extractor_INCLUDED
|
82
Data/PostgreSQL/include/Poco/Data/PostgreSQL/PostgreSQL.h
Normal file
82
Data/PostgreSQL/include/Poco/Data/PostgreSQL/PostgreSQL.h
Normal file
@ -0,0 +1,82 @@
|
||||
//
|
||||
// PostgreSQL.h
|
||||
//
|
||||
// $Id: //poco/1.5/Data/PostgreSQL/include/Poco/Data/PostgreSQL/PostgreSQL.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: PostgreSQL
|
||||
//
|
||||
// Basic definitions for the PostgreSQL library.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
|
||||
#ifndef Data_PostgreSQL_INCLUDED
|
||||
#define Data_PostgreSQL_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Foundation.h"
|
||||
|
||||
|
||||
//
|
||||
// The following block is the standard way of creating macros which make exporting
|
||||
// from a DLL simpler. All files within this DLL are compiled with the ODBC_EXPORTS
|
||||
// symbol defined on the command line. this symbol should not be defined on any project
|
||||
// that uses this DLL. This way any other project whose source files include this file see
|
||||
// ODBC_API functions as being imported from a DLL, wheras this DLL sees symbols
|
||||
// defined with this macro as being exported.
|
||||
//
|
||||
#if defined(_WIN32) && defined(POCO_DLL)
|
||||
#if defined(PostgreSQL_EXPORTS)
|
||||
#define PostgreSQL_API __declspec(dllexport)
|
||||
#else
|
||||
#define PostgreSQL_API __declspec(dllimport)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#if !defined(PostgreSQL_API)
|
||||
#if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4)
|
||||
#define PostgreSQL_API __attribute__ ((visibility ("default")))
|
||||
#else
|
||||
#define PostgreSQL_API
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
//
|
||||
// Automatically link Data library.
|
||||
//
|
||||
#if defined(_MSC_VER)
|
||||
#if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(PostgreSQL_EXPORTS)
|
||||
#pragma comment(lib, "PocoDataPostgreSQL" POCO_LIB_SUFFIX)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif // Data_PostgreSQL_INCLUDED
|
@ -0,0 +1,157 @@
|
||||
//
|
||||
// PostgreSQLException.h
|
||||
//
|
||||
// $Id: //poco/1.5/Data/PostgreSQL/include/Poco/Data/PostgreSQL/PostgreSQLException.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: PostgreSQLException
|
||||
//
|
||||
// Definition of the PostgreSQLException class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
|
||||
#ifndef Data_PostgreSQL_PostgreSQLException_INCLUDED
|
||||
#define Data_PostgreSQL_PostgreSQLException_INCLUDED
|
||||
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQL.h"
|
||||
#include "Poco/Data/DataException.h"
|
||||
|
||||
#include <typeinfo>
|
||||
#include <string>
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
// End-user include this file and use in code ConnectionException/StatementException
|
||||
// So it need not know
|
||||
|
||||
class PostgreSQL_API PostgreSQLException: public Poco::Data::DataException
|
||||
/// Base class for all PostgreSQL exceptions
|
||||
{
|
||||
public:
|
||||
|
||||
PostgreSQLException(const std::string& aMessage);
|
||||
/// Creates PostgreSQLException.
|
||||
|
||||
PostgreSQLException(const PostgreSQLException& exc);
|
||||
/// Creates PostgreSQLException.
|
||||
|
||||
~PostgreSQLException() throw();
|
||||
/// Destroys PostgreSQLexception.
|
||||
|
||||
PostgreSQLException& operator=(const PostgreSQLException& exc);
|
||||
/// Assignment operator.
|
||||
|
||||
const char* name() const throw();
|
||||
/// Returns exception name.
|
||||
|
||||
const char* className() const throw();
|
||||
/// Returns the name of the exception class.
|
||||
|
||||
Poco::Exception* clone() const;
|
||||
/// Creates an exact copy of the exception.
|
||||
///
|
||||
/// The copy can later be thrown again by
|
||||
/// invoking rethrow() on it.
|
||||
|
||||
void rethrow() const;
|
||||
/// (Re)Throws the exception.
|
||||
///
|
||||
/// This is useful for temporarily storing a
|
||||
/// copy of an exception (see clone()), then
|
||||
/// throwing it again.
|
||||
};
|
||||
|
||||
|
||||
class ConnectionException : public PostgreSQLException
|
||||
/// ConnectionException
|
||||
{
|
||||
public:
|
||||
|
||||
ConnectionException(const std::string& aMessage);
|
||||
/// Creates ConnectionException from string.
|
||||
|
||||
};
|
||||
|
||||
|
||||
class TransactionException : public ConnectionException
|
||||
/// TrabsactionException
|
||||
{
|
||||
public:
|
||||
|
||||
TransactionException(const std::string& aMessage);
|
||||
/// Creates TransactionException from string.
|
||||
};
|
||||
|
||||
|
||||
class StatementException : public PostgreSQLException
|
||||
/// StatementException
|
||||
{
|
||||
public:
|
||||
|
||||
StatementException(const std::string& aMessage);
|
||||
/// Creates StatementException from string.
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
|
||||
inline PostgreSQLException& PostgreSQLException::operator=(const PostgreSQLException& exc)
|
||||
{
|
||||
Poco::Data::DataException::operator=(exc);
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline const char* PostgreSQLException::name() const throw()
|
||||
{
|
||||
return "PostgreSQL";
|
||||
}
|
||||
|
||||
inline const char* PostgreSQLException::className() const throw()
|
||||
{
|
||||
return typeid(*this).name();
|
||||
}
|
||||
|
||||
inline Poco::Exception* PostgreSQLException::clone() const
|
||||
{
|
||||
return new PostgreSQLException(*this);
|
||||
}
|
||||
|
||||
inline void PostgreSQLException::rethrow() const
|
||||
{
|
||||
throw *this;
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::PostgreSQL
|
||||
|
||||
#endif //Data_PostgreSQL_PostgreSQLException_INCLUDED
|
@ -0,0 +1,122 @@
|
||||
//
|
||||
// PostgreSQLStatementImpl.h
|
||||
//
|
||||
// $Id: //poco/1.5/Data/PostgreSQL/include/Poco/Data/PostgreSQL/PostgreSQLStatementImpl.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: PostgreSQLStatementImpl
|
||||
//
|
||||
// Definition of the PostgreSQLStatementImpl class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
|
||||
#ifndef Data_PostgreSQL_PostgreSQLStatementImpl_INCLUDED
|
||||
#define Data_PostgreSQL_PostgreSQLStatementImpl_INCLUDED
|
||||
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQL.h"
|
||||
#include "Poco/Data/PostgreSQL/SessionImpl.h"
|
||||
#include "Poco/Data/PostgreSQL/Binder.h"
|
||||
#include "Poco/Data/PostgreSQL/Extractor.h"
|
||||
#include "Poco/Data/PostgreSQL/StatementExecutor.h"
|
||||
#include "Poco/Data/StatementImpl.h"
|
||||
#include "Poco/SharedPtr.h"
|
||||
#include "Poco/Format.h"
|
||||
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
|
||||
class PostgreSQL_API PostgreSQLStatementImpl: public Poco::Data::StatementImpl
|
||||
/// Implements statement functionality needed for PostgreSQL
|
||||
{
|
||||
public:
|
||||
PostgreSQLStatementImpl(SessionImpl& aSessionImpl);
|
||||
/// Creates the PostgreSQLStatementImpl.
|
||||
|
||||
~PostgreSQLStatementImpl();
|
||||
/// Destroys the PostgreSQLStatementImpl.
|
||||
|
||||
protected:
|
||||
|
||||
virtual std::size_t columnsReturned() const;
|
||||
/// Returns number of columns returned by query.
|
||||
|
||||
virtual int affectedRowCount() const;
|
||||
/// Returns the number of affected rows.
|
||||
/// Used to find out the number of rows affected by insert, delete or update.
|
||||
|
||||
virtual const MetaColumn& metaColumn(std::size_t aPosition, std::size_t aDataset) const;
|
||||
/// Returns column meta data.
|
||||
|
||||
virtual bool hasNext();
|
||||
/// Returns true if a call to next() will return data.
|
||||
|
||||
virtual std::size_t next();
|
||||
/// Retrieves the next row from the resultset.
|
||||
/// Will throw, if the resultset is empty.
|
||||
|
||||
virtual bool canBind() const;
|
||||
/// Returns true if a valid statement is set and we can bind.
|
||||
|
||||
virtual bool canCompile() const;
|
||||
/// Returns true if another compile is possible.
|
||||
|
||||
virtual void compileImpl();
|
||||
/// Compiles the statement, doesn't bind yet
|
||||
|
||||
virtual void bindImpl();
|
||||
/// Binds parameters
|
||||
|
||||
virtual Poco::Data::AbstractExtractor::Ptr extractor();
|
||||
/// Returns the concrete extractor used by the statement.
|
||||
|
||||
virtual Poco::Data::AbstractBinder::Ptr binder();
|
||||
/// Returns the concrete binder used by the statement.
|
||||
|
||||
private:
|
||||
enum NextState
|
||||
{
|
||||
NEXT_DONTKNOW,
|
||||
NEXT_TRUE,
|
||||
NEXT_FALSE
|
||||
};
|
||||
|
||||
StatementExecutor _statementExecutor;
|
||||
Binder::Ptr _pBinder;
|
||||
Extractor::Ptr _pExtractor;
|
||||
NextState _hasNext;
|
||||
};
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::PostgreSQL
|
||||
|
||||
|
||||
#endif // Data_PostgreSQL_PostgreSQLStatementImpl_INCLUDED
|
479
Data/PostgreSQL/include/Poco/Data/PostgreSQL/PostgreSQLTypes.h
Normal file
479
Data/PostgreSQL/include/Poco/Data/PostgreSQL/PostgreSQLTypes.h
Normal file
@ -0,0 +1,479 @@
|
||||
//
|
||||
// PostgreSQLTypes.h
|
||||
//
|
||||
// $Id: //poco/1.4/Data/PostgreSQL/include/Poco/Data/PostgreSQL/SessionHandle.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
//
|
||||
// Definition of the SessionHandle class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
#ifndef Data_PostgreSQL_Types_INCLUDED
|
||||
#define Data_PostgreSQL_Types_INCLUDED
|
||||
|
||||
#include "Poco/Data/MetaColumn.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <libpq-fe.h>
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
/// Oid constants duplicated from PostgreSQL "include/postgresql/server/catalog/pg_type.h"
|
||||
/// because PostgreSQL compile time definitions are too onerous to reproduce for this module
|
||||
|
||||
const Oid BOOLOID = 16;
|
||||
|
||||
const Oid INT2OID = 21;
|
||||
const Oid INT4OID = 23;
|
||||
const Oid INT8OID = 20;
|
||||
|
||||
const Oid FLOAT8OID = 701; // double
|
||||
const Oid FLOAT4OID = 700;
|
||||
const Oid NUMERICOID = 1700;
|
||||
|
||||
const Oid CHAROID = 18;
|
||||
const Oid BPCHAROID = 1042; // fixed length char
|
||||
const Oid VARCHAROID = 1043;
|
||||
|
||||
const Oid BYTEAOID = 17; // BLOB
|
||||
const Oid TEXTOID = 25; // CLOB
|
||||
|
||||
const Oid DATEOID = 1082;
|
||||
const Oid TIMEOID = 1083;
|
||||
const Oid TIMETZOID = 1266;
|
||||
const Oid TIMESTAMPOID = 1114;
|
||||
const Oid TIMESTAMPZOID = 1184;
|
||||
|
||||
// future use
|
||||
const Oid BITOID = 1560;
|
||||
const Oid VARYBITOID = 1562;
|
||||
const Oid CASHOID = 790;
|
||||
const Oid MACADDROID = 829;
|
||||
const Oid UUIDOID = 2950;
|
||||
|
||||
Poco::Data::MetaColumn::ColumnDataType oidToColumnDataType(const Oid anOID);
|
||||
|
||||
class InputParameter
|
||||
/// PostgreSQL class to record values for input parameters to SQL statements
|
||||
{
|
||||
public:
|
||||
explicit InputParameter(Poco::Data::MetaColumn::ColumnDataType aFieldType,
|
||||
const void* aDataPtr,
|
||||
std::size_t theDataLength);
|
||||
explicit InputParameter();
|
||||
|
||||
~InputParameter();
|
||||
|
||||
Poco::Data::MetaColumn::ColumnDataType fieldType() const;
|
||||
const void* pData() const;
|
||||
std::size_t size() const;
|
||||
bool isBinary() const;
|
||||
|
||||
void setStringVersionRepresentation(const std::string& aString);
|
||||
void setNonStringVersionRepresentation(const void* aPtr, std::size_t theSize);
|
||||
|
||||
const void* pInternalRepresentation() const;
|
||||
|
||||
private:
|
||||
Poco::Data::MetaColumn::ColumnDataType _fieldType;
|
||||
const void* _pData;
|
||||
std::size_t _size;
|
||||
bool _isBinary;
|
||||
std::string _stringVersionRepresentation;
|
||||
void* _pNonStringVersionRepresentation;
|
||||
};
|
||||
|
||||
typedef std::vector <InputParameter> InputParameterVector;
|
||||
|
||||
|
||||
class OutputParameter
|
||||
/// PostgreSQL class to record values for output parameters to capture the results
|
||||
{
|
||||
public:
|
||||
explicit OutputParameter(Poco::Data::MetaColumn::ColumnDataType aFieldType,
|
||||
Oid anInternalFieldType,
|
||||
std::size_t aRowNumber,
|
||||
const char* aDataPtr,
|
||||
std::size_t theSize,
|
||||
bool anIsNull);
|
||||
|
||||
explicit OutputParameter();
|
||||
|
||||
~OutputParameter();
|
||||
|
||||
void setValues(Poco::Data::MetaColumn::ColumnDataType aFieldType,
|
||||
Oid anInternalFieldType,
|
||||
std::size_t aRowNumber,
|
||||
const char* aDataPtr,
|
||||
std::size_t theSize,
|
||||
bool anIsNull);
|
||||
|
||||
Poco::Data::MetaColumn::ColumnDataType fieldType() const;
|
||||
Oid internalFieldType() const;
|
||||
std::size_t rowNumber() const;
|
||||
const char* pData() const;
|
||||
std::size_t size() const;
|
||||
bool isNull() const;
|
||||
|
||||
private:
|
||||
Poco::Data::MetaColumn::ColumnDataType _fieldType;
|
||||
Oid _internalFieldType;
|
||||
std::size_t _rowNumber;
|
||||
const char* _pData;
|
||||
std::size_t _size;
|
||||
bool _isNull;
|
||||
};
|
||||
|
||||
typedef std::vector <OutputParameter> OutputParameterVector;
|
||||
|
||||
|
||||
class PQConnectionInfoOptionsFree
|
||||
/// PostgreSQL connection Info Options free (RAII)
|
||||
{
|
||||
public:
|
||||
explicit PQConnectionInfoOptionsFree(PQconninfoOption* aConnectionInfoOptionPtr);
|
||||
~PQConnectionInfoOptionsFree();
|
||||
|
||||
private:
|
||||
PQConnectionInfoOptionsFree (const PQConnectionInfoOptionsFree&);
|
||||
PQConnectionInfoOptionsFree& operator= (const PQConnectionInfoOptionsFree&);
|
||||
|
||||
private:
|
||||
PQconninfoOption* _pConnectionInfoOption;
|
||||
};
|
||||
|
||||
class PQResultClear
|
||||
/// PostgreSQL statement result free (RAII)
|
||||
{
|
||||
public:
|
||||
explicit PQResultClear(PGresult * aPQResultPtr);
|
||||
~PQResultClear();
|
||||
|
||||
private:
|
||||
PQResultClear (const PQResultClear&);
|
||||
PQResultClear& operator= (const PQResultClear&);
|
||||
|
||||
private:
|
||||
PGresult* _pPQResult;
|
||||
};
|
||||
|
||||
|
||||
class PGCancelFree
|
||||
/// PostgreSQL Cancel Info Options free (RAII)
|
||||
{
|
||||
public:
|
||||
explicit PGCancelFree(PGcancel * aStatementCancelPtr);
|
||||
~PGCancelFree();
|
||||
|
||||
private:
|
||||
PGCancelFree (const PGCancelFree&);
|
||||
PGCancelFree& operator= (const PGCancelFree&);
|
||||
|
||||
private:
|
||||
PGcancel* _pPGCancel;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
|
||||
// InputParameter
|
||||
|
||||
inline
|
||||
InputParameter::InputParameter(Poco::Data::MetaColumn::ColumnDataType aFieldType,
|
||||
const void* aDataPtr,
|
||||
std::size_t theSize)
|
||||
: _fieldType (aFieldType),
|
||||
_pData (aDataPtr),
|
||||
_size (theSize),
|
||||
_isBinary (false),
|
||||
_pNonStringVersionRepresentation (0)
|
||||
{
|
||||
if ( Poco::Data::MetaColumn::FDT_BLOB == _fieldType
|
||||
|| Poco::Data::MetaColumn::FDT_CLOB == _fieldType) {
|
||||
_isBinary = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
InputParameter::InputParameter()
|
||||
: _fieldType (Poco::Data::MetaColumn::FDT_UNKNOWN),
|
||||
_pData (0),
|
||||
_size (0),
|
||||
_isBinary (false),
|
||||
_pNonStringVersionRepresentation (0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
InputParameter::~InputParameter()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
const void*
|
||||
InputParameter::pData() const
|
||||
{
|
||||
return _pData;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
Poco::Data::MetaColumn::ColumnDataType
|
||||
InputParameter::fieldType() const
|
||||
{
|
||||
return _fieldType;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
std::size_t
|
||||
InputParameter::size() const
|
||||
{
|
||||
return _size;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
bool
|
||||
InputParameter::isBinary() const
|
||||
{
|
||||
return _isBinary;
|
||||
}
|
||||
|
||||
inline
|
||||
void
|
||||
InputParameter::setStringVersionRepresentation(const std::string& aString)
|
||||
{
|
||||
_pNonStringVersionRepresentation = 0;
|
||||
|
||||
_stringVersionRepresentation = aString;
|
||||
_size = _stringVersionRepresentation.size();
|
||||
}
|
||||
|
||||
inline
|
||||
void
|
||||
InputParameter::setNonStringVersionRepresentation(const void* aPtr, std::size_t theDataLength)
|
||||
{
|
||||
_stringVersionRepresentation = std::string();
|
||||
|
||||
_pNonStringVersionRepresentation = const_cast<void *> (aPtr);
|
||||
_size = theDataLength;
|
||||
}
|
||||
|
||||
inline
|
||||
const void*
|
||||
InputParameter::pInternalRepresentation() const
|
||||
{
|
||||
switch (_fieldType) {
|
||||
case Poco::Data::MetaColumn::FDT_BOOL:
|
||||
case Poco::Data::MetaColumn::FDT_INT8:
|
||||
case Poco::Data::MetaColumn::FDT_UINT8:
|
||||
case Poco::Data::MetaColumn::FDT_INT16:
|
||||
case Poco::Data::MetaColumn::FDT_UINT16:
|
||||
case Poco::Data::MetaColumn::FDT_INT32:
|
||||
case Poco::Data::MetaColumn::FDT_UINT32:
|
||||
case Poco::Data::MetaColumn::FDT_INT64:
|
||||
case Poco::Data::MetaColumn::FDT_UINT64:
|
||||
case Poco::Data::MetaColumn::FDT_FLOAT:
|
||||
case Poco::Data::MetaColumn::FDT_DOUBLE:
|
||||
case Poco::Data::MetaColumn::FDT_STRING:
|
||||
case Poco::Data::MetaColumn::FDT_DATE:
|
||||
case Poco::Data::MetaColumn::FDT_TIME:
|
||||
case Poco::Data::MetaColumn::FDT_TIMESTAMP:
|
||||
return _stringVersionRepresentation.c_str();
|
||||
|
||||
case Poco::Data::MetaColumn::FDT_BLOB:
|
||||
case Poco::Data::MetaColumn::FDT_CLOB:
|
||||
return _pNonStringVersionRepresentation;
|
||||
|
||||
case Poco::Data::MetaColumn::FDT_UNKNOWN:
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// OutputParameter
|
||||
inline
|
||||
OutputParameter::OutputParameter(Poco::Data::MetaColumn::ColumnDataType aFieldType,
|
||||
Oid anInternalFieldType,
|
||||
std::size_t aRowNumber,
|
||||
const char* aDataPtr,
|
||||
std::size_t theSize,
|
||||
bool anIsNull)
|
||||
: _fieldType (aFieldType),
|
||||
_internalFieldType (anInternalFieldType),
|
||||
_rowNumber (aRowNumber),
|
||||
_pData (aDataPtr),
|
||||
_size (theSize),
|
||||
_isNull (anIsNull)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
OutputParameter::OutputParameter()
|
||||
: _fieldType (Poco::Data::MetaColumn::FDT_UNKNOWN),
|
||||
_internalFieldType (-1),
|
||||
_rowNumber (0),
|
||||
_pData (0),
|
||||
_size (0),
|
||||
_isNull (true)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
OutputParameter::~OutputParameter()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
void
|
||||
OutputParameter::setValues(Poco::Data::MetaColumn::ColumnDataType aFieldType,
|
||||
Oid anInternalFieldType,
|
||||
std::size_t aRowNumber,
|
||||
const char* aDataPtr,
|
||||
std::size_t theSize,
|
||||
bool anIsNull)
|
||||
{
|
||||
_fieldType = aFieldType;
|
||||
_internalFieldType = anInternalFieldType;
|
||||
_rowNumber = aRowNumber;
|
||||
_pData = aDataPtr;
|
||||
_size = theSize;
|
||||
_isNull = anIsNull;
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
Poco::Data::MetaColumn::ColumnDataType
|
||||
OutputParameter::fieldType() const
|
||||
{
|
||||
return _fieldType;
|
||||
}
|
||||
|
||||
inline
|
||||
Oid
|
||||
OutputParameter::internalFieldType() const
|
||||
{
|
||||
return _internalFieldType;
|
||||
}
|
||||
|
||||
inline
|
||||
std::size_t
|
||||
OutputParameter::rowNumber() const
|
||||
{
|
||||
return _rowNumber;
|
||||
}
|
||||
|
||||
inline
|
||||
const char*
|
||||
OutputParameter::pData() const
|
||||
{
|
||||
return _pData;
|
||||
}
|
||||
|
||||
inline
|
||||
std::size_t
|
||||
OutputParameter::size() const
|
||||
{
|
||||
return _size;
|
||||
}
|
||||
|
||||
inline
|
||||
bool
|
||||
OutputParameter::isNull() const
|
||||
{
|
||||
return _isNull;
|
||||
}
|
||||
|
||||
// PQConnectionInfoOptionsFree
|
||||
|
||||
inline
|
||||
PQConnectionInfoOptionsFree::PQConnectionInfoOptionsFree(PQconninfoOption* aConnectionInfoOptionPtr)
|
||||
: _pConnectionInfoOption(aConnectionInfoOptionPtr)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
PQConnectionInfoOptionsFree::~PQConnectionInfoOptionsFree()
|
||||
{
|
||||
if (_pConnectionInfoOption)
|
||||
{
|
||||
PQconninfoFree(_pConnectionInfoOption);
|
||||
_pConnectionInfoOption = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// PQResultClear
|
||||
|
||||
inline
|
||||
PQResultClear::PQResultClear(PGresult* aPQResultPtr)
|
||||
: _pPQResult(aPQResultPtr)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
PQResultClear::~PQResultClear()
|
||||
{
|
||||
if (_pPQResult)
|
||||
{
|
||||
PQclear(_pPQResult);
|
||||
_pPQResult = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// PGCancelFree
|
||||
|
||||
inline
|
||||
PGCancelFree::PGCancelFree(PGcancel* aStatementCancelPtr)
|
||||
: _pPGCancel(aStatementCancelPtr)
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
PGCancelFree::~PGCancelFree()
|
||||
{
|
||||
if (_pPGCancel)
|
||||
{
|
||||
PQfreeCancel(_pPGCancel);
|
||||
_pPGCancel = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}}}
|
||||
|
||||
#endif // Data_PostgreSQL_Types_INCLUDED
|
363
Data/PostgreSQL/include/Poco/Data/PostgreSQL/SessionHandle.h
Normal file
363
Data/PostgreSQL/include/Poco/Data/PostgreSQL/SessionHandle.h
Normal file
@ -0,0 +1,363 @@
|
||||
//
|
||||
// SesssionHandle.h
|
||||
//
|
||||
// $Id: //poco/1.4/Data/PostgreSQL/include/Poco/Data/PostgreSQL/SessionHandle.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: SessionHandle
|
||||
//
|
||||
// Definition of the SessionHandle class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
#ifndef Data_PostgreSQL_SessionHandle_INCLUDED
|
||||
#define Data_PostgreSQL_SessionHandle_INCLUDED
|
||||
|
||||
#include "Poco/Mutex.h"
|
||||
#include "Poco/Types.h"
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <libpq-fe.h>
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
class SessionParameters
|
||||
{
|
||||
/// PostgreSQL session parameters
|
||||
public:
|
||||
enum HOW_TO_DISPLAY {
|
||||
HTD_ASIS, // as is
|
||||
HTD_HIDE, // do not display (e.g. passwords)
|
||||
HID_DEBUG // debug use only
|
||||
};
|
||||
|
||||
SessionParameters( const std::string& aKeyword,
|
||||
const std::string& anEnvironmentVariable,
|
||||
const std::string& aCompiledDefault,
|
||||
const std::string& aCurrentValue,
|
||||
const std::string& aDisplayLabel,
|
||||
const std::string& aHowToDisplay,
|
||||
int aDisplaySize);
|
||||
|
||||
~SessionParameters();
|
||||
|
||||
std::string keyword()const;
|
||||
std::string enviromentVariable() const;
|
||||
std::string compiledDefault()const;
|
||||
std::string currentValue() const;
|
||||
std::string displayLabel() const;
|
||||
HOW_TO_DISPLAY howToDisplay() const;
|
||||
int displaySize()const;
|
||||
|
||||
private:
|
||||
std::string _keyword;// The keyword of the option
|
||||
std::string _environmentVariable;// Fallback environment variable name
|
||||
std::string _compiledDefault;// Fallback compiled in default value
|
||||
std::string _currentValue; // Option's current value, or NULL
|
||||
std::string _displayLabel; // Label for field in a connect dialog
|
||||
HOW_TO_DISPLAY _howToDisplay; // Indicates how to display this field
|
||||
int _displaySize;// Field size in characters for connect dialog
|
||||
};
|
||||
|
||||
typedef std::map<std::string, SessionParameters> SessionParametersMap;
|
||||
|
||||
|
||||
class SessionHandle
|
||||
/// PostgreSQL connection(session) handle
|
||||
{
|
||||
public:
|
||||
|
||||
explicit SessionHandle();
|
||||
/// Creates session handle
|
||||
|
||||
~SessionHandle();
|
||||
/// Destroy handle, close connection
|
||||
|
||||
void connect (const std::string& aConnectionString);
|
||||
/// Connect to server
|
||||
|
||||
void connect (const char* aConnectionString);
|
||||
|
||||
void connect ( const char* aHost,
|
||||
const char* aUser,
|
||||
const char* aPassword,
|
||||
const char* aDatabase,
|
||||
unsigned short aPort,
|
||||
unsigned int aConnectionTimeout);
|
||||
|
||||
bool isConnected() const;
|
||||
/// is a connection established?
|
||||
|
||||
void disconnect();
|
||||
/// Close connection
|
||||
|
||||
bool reset();
|
||||
/// reset the connection
|
||||
|
||||
std::string lastError() const;
|
||||
/// last error on the connection
|
||||
|
||||
void startTransaction();
|
||||
/// Start transaction
|
||||
|
||||
bool isTransaction();
|
||||
/// Returns true iff a transaction is a transaction is in progress, false otherwise.
|
||||
|
||||
void commit();
|
||||
/// Commit transaction
|
||||
|
||||
void rollback();
|
||||
/// Rollback trabsaction
|
||||
|
||||
bool isAutoCommit();
|
||||
/// is the connection in auto commit mode?
|
||||
|
||||
void setAutoCommit(bool aShouldAutoCommit = true);
|
||||
/// is the connection in auto commit mode?
|
||||
|
||||
bool isAsynchronousCommit();
|
||||
/// is the connection in Asynchronous commit mode?
|
||||
|
||||
void setAsynchronousCommit(bool aShouldAsynchronousCommit = true);
|
||||
/// is the connection in Asynchronous commit mode?
|
||||
|
||||
void cancel();
|
||||
/// Attempts to cancel in-process statements
|
||||
|
||||
void setTransactionIsolation(Poco::UInt32 aTI);
|
||||
/// Sets the transaction isolation level.
|
||||
|
||||
Poco::UInt32 transactionIsolation();
|
||||
/// Returns the transaction isolation level.
|
||||
|
||||
bool hasTransactionIsolation(Poco::UInt32 aTI);
|
||||
/// Returns true iff the transaction isolation level corresponding
|
||||
/// to the supplied bitmask is supported.
|
||||
|
||||
void deallocatePreparedStatement(const std::string& aPreparedStatementToDeAllocate);
|
||||
/// deallocates a previously prepared statement
|
||||
|
||||
int serverVersion() const;
|
||||
/// remote server version
|
||||
|
||||
int serverProcessID() const;
|
||||
/// the process ID of the remotee server process
|
||||
|
||||
int protocoVersion() const;
|
||||
/// the protocol version between the client and the server
|
||||
|
||||
std::string clientEncoding() const;
|
||||
/// returns the client encoding
|
||||
|
||||
int libpqVersion() const;
|
||||
/// returns the version of libpq
|
||||
|
||||
static SessionParametersMap connectionDefaultParameters();
|
||||
/// returns the default parameters used on a connection
|
||||
|
||||
SessionParametersMap connectionParameters() const;
|
||||
/// returns the parameters used on the connection
|
||||
|
||||
std::string connectionString() const;
|
||||
/// returns the string used to connect
|
||||
|
||||
operator PGconn* ();
|
||||
/// Get the PostgreSQL connection pointer
|
||||
|
||||
Poco::FastMutex& mutex();
|
||||
/// Get the sessionHandle mutex to protect the connection pointer
|
||||
|
||||
private:
|
||||
static SessionParametersMap setConnectionInfoParameters(PQconninfoOption* aConnectionInfoOptionsPtr);
|
||||
|
||||
void deallocateStoredPreparedStatements();
|
||||
|
||||
void deallocatePreparedStatementNoLock(const std::string& aPreparedStatementToDeAllocate);
|
||||
bool isConnectedNoLock() const;
|
||||
std::string lastErrorNoLock() const;
|
||||
|
||||
|
||||
SessionHandle(const SessionHandle&);
|
||||
SessionHandle& operator= (const SessionHandle&);
|
||||
|
||||
private:
|
||||
|
||||
mutable Poco::FastMutex _sessionMutex;
|
||||
PGconn* _pConnection;
|
||||
std::string _connectionString;
|
||||
bool _inTransaction;
|
||||
bool _isAutoCommit;
|
||||
bool _isAsynchronousCommit;
|
||||
Poco::UInt32 _tranactionIsolationLevel;
|
||||
std::vector <std::string> _preparedStatementsToBeDeallocated;
|
||||
|
||||
// static const std::string POSTGRESQL_READ_UNCOMMITTED; // NOT SUPPORTED
|
||||
static const std::string POSTGRESQL_READ_COMMITTED;
|
||||
static const std::string POSTGRESQL_REPEATABLE_READ;
|
||||
static const std::string POSTGRESQL_SERIALIZABLE;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
|
||||
// SessionParameters
|
||||
|
||||
inline
|
||||
SessionParameters::SessionParameters( const std::string& aKeyword,
|
||||
const std::string& anEnvironmentVariable,
|
||||
const std::string& aCompiledDefault,
|
||||
const std::string& aCurrentValue,
|
||||
const std::string& aDisplayLabel,
|
||||
const std::string& aHowToDisplay,
|
||||
int aDisplaySize)
|
||||
: _keyword (aKeyword),
|
||||
_environmentVariable (anEnvironmentVariable),
|
||||
_compiledDefault (aCompiledDefault),
|
||||
_currentValue (aCurrentValue),
|
||||
_displayLabel (aDisplayLabel),
|
||||
_howToDisplay (HTD_ASIS),
|
||||
_displaySize (aDisplaySize)
|
||||
{
|
||||
if (aHowToDisplay == "*")
|
||||
{
|
||||
_howToDisplay = HTD_HIDE;
|
||||
}
|
||||
|
||||
if (aHowToDisplay == "D")
|
||||
{
|
||||
_howToDisplay = HID_DEBUG;
|
||||
}
|
||||
}
|
||||
|
||||
inline
|
||||
SessionParameters::~SessionParameters()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
std::string
|
||||
SessionParameters::keyword() const
|
||||
{
|
||||
return _keyword;
|
||||
}
|
||||
|
||||
inline
|
||||
std::string
|
||||
SessionParameters::enviromentVariable() const
|
||||
{
|
||||
return _environmentVariable;
|
||||
}
|
||||
|
||||
inline
|
||||
std::string
|
||||
SessionParameters::compiledDefault() const
|
||||
{
|
||||
return _compiledDefault;
|
||||
}
|
||||
|
||||
inline
|
||||
std::string
|
||||
SessionParameters::currentValue() const
|
||||
{
|
||||
return _currentValue;
|
||||
}
|
||||
|
||||
inline
|
||||
std::string
|
||||
SessionParameters::displayLabel() const
|
||||
{
|
||||
return _displayLabel;
|
||||
}
|
||||
|
||||
inline
|
||||
SessionParameters::HOW_TO_DISPLAY
|
||||
SessionParameters::howToDisplay() const
|
||||
{
|
||||
return _howToDisplay;
|
||||
}
|
||||
|
||||
inline
|
||||
int
|
||||
SessionParameters::displaySize() const
|
||||
{
|
||||
return _displaySize;
|
||||
}
|
||||
|
||||
// SessionHandle
|
||||
|
||||
inline
|
||||
SessionHandle::operator PGconn * ()
|
||||
{
|
||||
return _pConnection;
|
||||
}
|
||||
|
||||
inline
|
||||
Poco::FastMutex&
|
||||
SessionHandle::mutex()
|
||||
{
|
||||
return _sessionMutex;
|
||||
}
|
||||
|
||||
inline
|
||||
std::string
|
||||
SessionHandle::connectionString() const
|
||||
{
|
||||
return _connectionString;
|
||||
}
|
||||
|
||||
inline
|
||||
bool
|
||||
SessionHandle::isTransaction()
|
||||
{
|
||||
return _inTransaction;
|
||||
}
|
||||
|
||||
inline
|
||||
bool
|
||||
SessionHandle::isAutoCommit()
|
||||
{
|
||||
return _isAutoCommit;
|
||||
}
|
||||
|
||||
inline
|
||||
bool
|
||||
SessionHandle::isAsynchronousCommit()
|
||||
{
|
||||
return _isAsynchronousCommit;
|
||||
}
|
||||
|
||||
}}}
|
||||
|
||||
#endif // Data_PostgreSQL_SessionHandle_INCLUDED
|
184
Data/PostgreSQL/include/Poco/Data/PostgreSQL/SessionImpl.h
Normal file
184
Data/PostgreSQL/include/Poco/Data/PostgreSQL/SessionImpl.h
Normal file
@ -0,0 +1,184 @@
|
||||
//
|
||||
// SessionImpl.h
|
||||
//
|
||||
// $Id: //poco/1.5/Data/PostgreSQL/include/Poco/Data/PostgreSQL/SessionImpl.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: SessionImpl
|
||||
//
|
||||
// Definition of the SessionImpl class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
|
||||
#ifndef Data_PostgreSQL_SessionImpl_INCLUDED
|
||||
#define Data_PostgreSQL_SessionImpl_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQL.h"
|
||||
#include "Poco/Data/PostgreSQL/SessionHandle.h"
|
||||
|
||||
#include "Poco/Data/AbstractSessionImpl.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
|
||||
class PostgreSQL_API SessionImpl: public Poco::Data::AbstractSessionImpl<SessionImpl>
|
||||
/// Implements SessionImpl interface
|
||||
{
|
||||
public:
|
||||
|
||||
SessionImpl(const std::string& aConnectionString,
|
||||
std::size_t aLoginTimeout = LOGIN_TIMEOUT_DEFAULT);
|
||||
/// Creates the SessionImpl. Opens a connection to the database
|
||||
///
|
||||
/// Connection string format:
|
||||
/// <str> == <assignment> | <assignment> ' ' <str>
|
||||
/// <assignment> == <name> '=' <value>
|
||||
/// <name> == 'host' | 'port' | 'user' | 'password' | 'dbname' | 'connect_timeout'
|
||||
/// <value> == [~;]*
|
||||
///
|
||||
/// consult postgres documentation for other parameters
|
||||
|
||||
~SessionImpl();
|
||||
/// Destroys the SessionImpl.
|
||||
|
||||
void setConnectionTimeout(std::size_t aTimeout);
|
||||
/// Sets the session connection timeout value.
|
||||
|
||||
std::size_t getConnectionTimeout();
|
||||
/// Returns the session connection timeout value.
|
||||
|
||||
void open(const std::string& aConnectionString = std::string());
|
||||
/// Opens a connection to the database.
|
||||
|
||||
void close();
|
||||
/// Closes the connection.
|
||||
|
||||
bool isConnected();
|
||||
/// Returns true if connected, false otherwise.
|
||||
|
||||
Poco::Data::StatementImpl* createStatementImpl();
|
||||
/// Returns an PostgreSQL StatementImpl
|
||||
|
||||
void begin();
|
||||
/// Starts a transaction
|
||||
|
||||
void commit();
|
||||
/// Commits and ends a transaction
|
||||
|
||||
void rollback();
|
||||
/// Aborts a transaction
|
||||
|
||||
bool canTransact();
|
||||
/// Returns true if session has transaction capabilities.
|
||||
|
||||
bool isTransaction();
|
||||
/// Returns true iff a transaction is a transaction is in progress, false otherwise.
|
||||
|
||||
void setTransactionIsolation(Poco::UInt32 aTI);
|
||||
/// Sets the transaction isolation level.
|
||||
|
||||
Poco::UInt32 getTransactionIsolation();
|
||||
/// Returns the transaction isolation level.
|
||||
|
||||
bool hasTransactionIsolation(Poco::UInt32 aTI);
|
||||
/// Returns true iff the transaction isolation level corresponding
|
||||
/// to the supplied bitmask is supported.
|
||||
|
||||
bool isTransactionIsolation(Poco::UInt32 aTI);
|
||||
/// Returns true iff the transaction isolation level corresponds
|
||||
/// to the supplied bitmask.
|
||||
|
||||
void setAutoCommit(const std::string&, bool aValue);
|
||||
/// Sets autocommit property for the session.
|
||||
|
||||
bool isAutoCommit(const std::string& aName = std::string());
|
||||
/// Returns autocommit property value.
|
||||
|
||||
void setAsynchronousCommit(const std::string&, bool aValue);
|
||||
/// Sets asynchronousCommit property for the session.
|
||||
|
||||
bool isAsynchronousCommit(const std::string& aName = std::string());
|
||||
/// is the connection in Asynchronous commit mode?
|
||||
|
||||
SessionHandle& handle();
|
||||
/// Get handle
|
||||
|
||||
const std::string& connectorName() const;
|
||||
/// Returns the name of the connector.
|
||||
|
||||
private:
|
||||
std::string _connectorName;
|
||||
SessionHandle _sessionHandle;
|
||||
|
||||
std::size_t _timeout;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
inline
|
||||
bool
|
||||
SessionImpl::canTransact()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
inline SessionHandle& SessionImpl::handle()
|
||||
{
|
||||
return _sessionHandle;
|
||||
}
|
||||
|
||||
inline const std::string& SessionImpl::connectorName() const
|
||||
{
|
||||
return _connectorName;
|
||||
}
|
||||
|
||||
|
||||
inline bool SessionImpl::isTransactionIsolation(Poco::UInt32 aTI)
|
||||
{
|
||||
return getTransactionIsolation() == aTI;
|
||||
}
|
||||
|
||||
|
||||
inline std::size_t SessionImpl::getConnectionTimeout()
|
||||
{
|
||||
return _timeout;
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::PostgreSQL
|
||||
|
||||
|
||||
#endif // Data_PostgreSQL_SessionImpl_INCLUDED
|
140
Data/PostgreSQL/include/Poco/Data/PostgreSQL/StatementExecutor.h
Normal file
140
Data/PostgreSQL/include/Poco/Data/PostgreSQL/StatementExecutor.h
Normal file
@ -0,0 +1,140 @@
|
||||
//
|
||||
// StatementExecutor.h
|
||||
//
|
||||
// $Id: //poco/1.5/Data/PostgreSQL/include/Poco/Data/PostgreSQL/StatementExecutor.h#1 $
|
||||
//
|
||||
// Library: Data
|
||||
// Package: PostgreSQL
|
||||
// Module: StatementExecutor
|
||||
//
|
||||
// Definition of the StatementExecutor class.
|
||||
//
|
||||
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
|
||||
#ifndef Data_PostgreSQL_StatementHandle_INCLUDED
|
||||
#define Data_PostgreSQL_StatementHandle_INCLUDED
|
||||
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQLException.h"
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQLTypes.h"
|
||||
#include "Poco/Data/PostgreSQL/SessionHandle.h"
|
||||
#include "Poco/Data/MetaColumn.h"
|
||||
|
||||
#include <libpq-fe.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
|
||||
class StatementExecutor
|
||||
/// PostgreSQL statement executor.
|
||||
{
|
||||
public:
|
||||
enum State
|
||||
{
|
||||
STMT_INITED,
|
||||
STMT_COMPILED,
|
||||
STMT_EXECUTED
|
||||
};
|
||||
|
||||
explicit StatementExecutor(SessionHandle& aSessionHandle);
|
||||
/// Creates the StatementExecutor.
|
||||
|
||||
~StatementExecutor();
|
||||
/// Destroys the StatementExecutor.
|
||||
|
||||
State state() const;
|
||||
/// Returns the current state.
|
||||
|
||||
void prepare(const std::string& aSQLStatement);
|
||||
/// Prepares the statement for execution.
|
||||
|
||||
void bindParams(const InputParameterVector& anInputParameterVector);
|
||||
/// Binds the params - REQUIRED if the statment has input parameters/placeholders
|
||||
/// Pointer and list elements must stay valid for the lifetime of the StatementExecutor!
|
||||
|
||||
void execute();
|
||||
/// Executes the statement.
|
||||
|
||||
bool fetch();
|
||||
/// Fetches the data for the current row
|
||||
|
||||
std::size_t getAffectedRowCount() const;
|
||||
/// get the count of rows affected by the statement
|
||||
|
||||
std::size_t columnsReturned() const;
|
||||
/// get the count of columns returned by the statement
|
||||
|
||||
const MetaColumn& metaColumn(std::size_t aPosition) const;
|
||||
/// Returns the reference to the specified metacolumn - 0 based
|
||||
|
||||
const OutputParameter& resultColumn(std::size_t aPosition) const;
|
||||
/// Returns the reference to the specified result - 0 based
|
||||
|
||||
operator PGresult* ();
|
||||
/// Cast operator to native result handle type.
|
||||
|
||||
private:
|
||||
|
||||
void clearResults();
|
||||
|
||||
StatementExecutor(const StatementExecutor&);
|
||||
StatementExecutor& operator= (const StatementExecutor&);
|
||||
|
||||
private:
|
||||
SessionHandle& _sessionHandle;
|
||||
State _state;
|
||||
|
||||
PGresult* _pResultHandle;
|
||||
std::string _SQLStatement;
|
||||
std::string _preparedStatementName; // UUID based to allow multiple prepared statements per transaction.
|
||||
std::size_t _countPlaceholdersInSQLStatement;
|
||||
std::vector<MetaColumn> _resultColumns;
|
||||
|
||||
InputParameterVector _inputParameterVector;
|
||||
OutputParameterVector _outputParameterVector;
|
||||
std::size_t _currentRow; // current row of the result
|
||||
std::size_t _affectedRowCount;
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
|
||||
inline StatementExecutor::operator PGresult* ()
|
||||
{
|
||||
return _pResultHandle;
|
||||
}
|
||||
|
||||
}}}
|
||||
|
||||
#endif // Data_PostgreSQL_StatementHandle_INCLUDED
|
103
Data/PostgreSQL/include/Poco/Data/PostgreSQL/Utility.h
Normal file
103
Data/PostgreSQL/include/Poco/Data/PostgreSQL/Utility.h
Normal file
@ -0,0 +1,103 @@
|
||||
//
|
||||
// Utility.h
|
||||
//
|
||||
// $Id: //poco/Main/Data/PostgreSQL/include/Poco/Data/PostgreSQL/Utility.h#2 $
|
||||
//
|
||||
// Library: PostgreSQL
|
||||
// Package: PostgreSQL
|
||||
// Module: Utility
|
||||
//
|
||||
// Definition of Utility.
|
||||
//
|
||||
// Copyright (c) 2006, Applied Informatics Software Engineering GmbH.
|
||||
// and Contributors.
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person or organization
|
||||
// obtaining a copy of the software and accompanying documentation covered by
|
||||
// this license (the "Software") to use, reproduce, display, distribute,
|
||||
// execute, and transmit the Software, and to prepare derivative works of the
|
||||
// Software, and to permit third-parties to whom the Software is furnished to
|
||||
// do so, all subject to the following:
|
||||
//
|
||||
// The copyright notices in the Software and this entire statement, including
|
||||
// the above license grant, this restriction and the following disclaimer,
|
||||
// must be included in all copies of the Software, in whole or in part, and
|
||||
// all derivative works of the Software, unless such copies or derivative
|
||||
// works are solely in the form of machine-executable object code generated by
|
||||
// a source language processor.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
|
||||
#ifndef PostgreSQL_Utility_INCLUDED
|
||||
#define PostgreSQL_Utility_INCLUDED
|
||||
|
||||
#include "Poco/Data/PostgreSQL/PostgreSQL.h"
|
||||
#include "Poco/Data/PostgreSQL/SessionHandle.h"
|
||||
|
||||
#include "Poco/Data/Session.h"
|
||||
|
||||
namespace Poco {
|
||||
namespace Data {
|
||||
namespace PostgreSQL {
|
||||
|
||||
|
||||
class PostgreSQL_API Utility
|
||||
/// Various utility functions for PostgreSQL.
|
||||
{
|
||||
public:
|
||||
|
||||
static std::string serverInfo(SessionHandle* aHandlePtr);
|
||||
/// Returns server info.
|
||||
|
||||
static std::string serverInfo(Poco::Data::Session& aSession);
|
||||
/// Returns server info.
|
||||
|
||||
static int serverVersion(SessionHandle* aHandlePtr);
|
||||
/// Returns server version.
|
||||
|
||||
static int serverVersion(Poco::Data::Session& aSession);
|
||||
/// Returns server version.
|
||||
|
||||
static std::string hostInfo(SessionHandle* aHandlePtr);
|
||||
/// Returns host info.
|
||||
|
||||
static std::string hostInfo(Poco::Data::Session& aSession);
|
||||
/// Returns host info.
|
||||
|
||||
static std::string sessionEncoding(SessionHandle* aHandlePtr);
|
||||
/// Returns session encoding.
|
||||
|
||||
static std::string sessionEncoding(Poco::Data::Session& aSession);
|
||||
/// Returns session encoding.
|
||||
|
||||
static bool hasMicrosecond() { return true; }
|
||||
/// Rturns true if microseconds are suported.
|
||||
|
||||
static SessionHandle* handle(Poco::Data::Session& aSession);
|
||||
/// Returns native PostgreSQL handle for the session.
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// inlines
|
||||
//
|
||||
|
||||
|
||||
inline SessionHandle* Utility::handle(Session& aSession)
|
||||
{
|
||||
return Poco::AnyCast< SessionHandle* >(aSession.getProperty("handle"));
|
||||
}
|
||||
|
||||
|
||||
} } } // namespace Poco::Data::PostgreSQL
|
||||
|
||||
|
||||
#endif // PostgreSQL_Utility_INCLUDED
|
24
Data/PostgreSQL/include/libpq/libpq-fs.h
Normal file
24
Data/PostgreSQL/include/libpq/libpq-fs.h
Normal file
@ -0,0 +1,24 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* libpq-fs.h
|
||||
* definitions for using Inversion file system routines (ie, large objects)
|
||||
*
|
||||
*
|
||||
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* src/include/libpq/libpq-fs.h
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef LIBPQ_FS_H
|
||||
#define LIBPQ_FS_H
|
||||
|
||||
/*
|
||||
* Read/write mode flags for inversion (large object) calls
|
||||
*/
|
||||
|
||||
#define INV_WRITE 0x00020000
|
||||
#define INV_READ 0x00040000
|
||||
|
||||
#endif /* LIBPQ_FS_H */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user