diff --git a/postgresql-odbc-09.05.0400-revert-money-testsuite-fix.patch b/postgresql-odbc-09.05.0400-revert-money-testsuite-fix.patch new file mode 100644 index 0000000000000000000000000000000000000000..4e2fa93950889eeb24bfd9cc34461dc735406d1a --- /dev/null +++ b/postgresql-odbc-09.05.0400-revert-money-testsuite-fix.patch @@ -0,0 +1,30 @@ +Revert "Fix regression test failures in param-convesrions-test." + +As we have applied a downstream patch for reverting the money type patch, +we need to also revert upstream test cases that are not supposed to be passing +in the first place. +This reverts commit eb480e19ee71b19de7f61013bdb4d5abd1cd98e4. + +Related discussion: +http://www.postgresql.org/message-id/3259874.lgiBp3an9Y@nb.usersys.redhat.com +--- + +diff --git a/test/expected/param-conversions.out b/test/expected/param-conversions.out +index 777cc94..449a398 100644 +--- a/test/expected/param-conversions.out ++++ b/test/expected/param-conversions.out +@@ -72,12 +72,12 @@ Error while executing the query + + Testing "SELECT 1.3 > ?" with SQL_C_CHAR -> SQL_FLOAT param "3', 'injected, BAD!', '1"... + SQLExecDirect failed +-22P02=ERROR: invalid input syntax for type numeric: "3', 'injected, BAD!', '1"; ++22P02=ERROR: invalid input syntax for type double precision: "3', 'injected, BAD!', '1"; + Error while executing the query + + Testing "SELECT 1.4 > ?" with SQL_C_CHAR -> SQL_FLOAT param "4 \'bad', '1"... + SQLExecDirect failed +-22P02=ERROR: invalid input syntax for type numeric: "4 \'bad', '1"; ++22P02=ERROR: invalid input syntax for type double precision: "4 \'bad', '1"; + Error while executing the query + + Testing "SELECT 1-?" with SQL_C_CHAR -> SQL_INTEGER param "-1"... diff --git a/postgresql-odbc-09.06.0200-revert-money-fix.patch b/postgresql-odbc-09.06.0200-revert-money-fix.patch new file mode 100644 index 0000000000000000000000000000000000000000..0fc8263f7ccf59e4fbd9384ba99f3ae60ad8c3ca --- /dev/null +++ b/postgresql-odbc-09.06.0200-revert-money-fix.patch @@ -0,0 +1,95 @@ +From 56ca20671a9fb87d7c6ca011207e9628349c9301 Mon Sep 17 00:00:00 2001 +From: Pavel Raiskup +Date: Mon, 13 Mar 2017 10:38:54 +0100 +Subject: [PATCH] Revert "Fix the bug about MONEY type." + +This reverts commit d5374bcc4d58556eb5cc70241c44dcad4d9b441e. + +Proposed upstream: +http://www.postgresql.org/message-id/3259874.lgiBp3an9Y@nb.usersys.redhat.com +--- + convert.c | 45 ++++++++------------------------------------- + pgtypes.c | 4 ++++ + 2 files changed, 12 insertions(+), 37 deletions(-) + +diff --git a/convert.c b/convert.c +index f118e30..00904d8 100644 +--- a/convert.c ++++ b/convert.c +@@ -5363,50 +5363,21 @@ cleanup: + static BOOL + convert_money(const char *s, char *sout, size_t soutmax) + { +- char in, decp = 0; + size_t i = 0, + out = 0; +- int num_in = -1, period_in = -1, comma_in = -1; + + for (i = 0; s[i]; i++) + { +- switch (in = s[i]) ++ if (s[i] == '$' || s[i] == ',' || s[i] == ')') ++ ; /* skip these characters */ ++ else + { +- case '.': +- if (period_in < 0) +- period_in = i; +- break; +- case ',': +- if (comma_in < 0) +- comma_in = i; +- break; +- default: +- if ('0' <= in && '9' >= in) +- num_in = i; +- break; +- } +- } +- if (period_in > comma_in) +- { +- if ( period_in >= num_in - 2) +- decp = '.'; +- } +- else if (comma_in >= 0 && +- comma_in >= num_in - 2) +- decp = ','; +- for (i = 0; s[i] && out + 1 < soutmax; i++) +- { +- switch (in = s[i]) +- { +- case '(': +- case '-': ++ if (out + 1 >= soutmax) ++ return FALSE; /* sout is too short */ ++ if (s[i] == '(') + sout[out++] = '-'; +- break; +- default: +- if (in >= '0' && in <= '9') +- sout[out++] = in; +- else if (in == decp) +- sout[out++] = '.'; ++ else ++ sout[out++] = s[i]; + } + } + sout[out] = '\0'; +diff --git a/pgtypes.c b/pgtypes.c +index a58925c..d42179c 100644 +--- a/pgtypes.c ++++ b/pgtypes.c +@@ -1273,6 +1273,10 @@ sqltype_to_pgcast(const ConnectionClass *conn, SQLSMALLINT fSqlType) + case SQL_DATE: + pgCast = "::date"; + break; ++ case SQL_DOUBLE: ++ case SQL_FLOAT: ++ pgCast = "::float8"; ++ break; + case SQL_DECIMAL: + case SQL_NUMERIC: + pgCast = "::numeric"; +-- +2.9.3 + diff --git a/postgresql-odbc.spec b/postgresql-odbc.spec new file mode 100644 index 0000000000000000000000000000000000000000..4d88b9d57817d6f7ebd6866216d4d72f9c3c4309 --- /dev/null +++ b/postgresql-odbc.spec @@ -0,0 +1,73 @@ +Name: postgresql-odbc +Summary: Official postgreSQL ODBC driver +Version: 10.03.0000 +Release: 3 +License: LGPLv2+ +URL: https://odbc.postgresql.org/ +Source0: http://ftp.postgresql.org/pub/odbc/versions/src/psqlodbc-%{version}.tar.gz + +Patch0000: postgresql-odbc-09.06.0200-revert-money-fix.patch +Patch0001: postgresql-odbc-09.05.0400-revert-money-testsuite-fix.patch + +BuildRequires: unixODBC-devel pkgconfig(libpq) postgresql-test-rpm-macros +Provides: psqlodbc = %version-%release + +%description +This package is the official PostgreSQL ODBC Driver. + +%package devel +Summary: Various testsuite files for psqlodbc +Requires: postgresql-test gcc make unixODBC-devel +Requires: %{name} = %{version}-%{release} +Provides: %{name}-tests = %{version}-%{release} +Obsoletes: %{name}-tests < %{version}-%{release} + +%description devel +The package contains different files for various tests for postgresql-odbc. + +%prep +%autosetup -n psqlodbc-%{version} -p1 + +echo "The upstream psqlodbc testsuite is distributed in '%{name}-tests'">README.rpmdist +echo "(sub)package.">>README.rpmdist + +%build +%configure --with-unixodbc --disable-dependency-tracking +%make_build + +%install +%make_install +mkdir %{buildroot}/%{_libdir}/postgresql-odbc && chmod 755 %{buildroot}/%{_libdir}/postgresql-odbc +cp -R test %{buildroot}/%{_libdir}/postgresql-odbc +sed -i 's~^drvr=.*~drvr=%{_libdir}/psqlodbc~' %{buildroot}/%{_libdir}/postgresql-odbc/test/odbcini-gen.sh +cd %{buildroot}%{_libdir} + ln -s psqlodbcw.so psqlodbc.so ; rm psqlodbcw.la psqlodbca.la + +%check +%postgresql_tests_run + +cd test && %make_build installcheck || { + echo "=== trying to find all regression.diffs files in build directory ===" + find -name regression.diffs | while read line; do + cat "$line" + done + false +} +%post +/sbin/ldconfig +%postun +/sbin/ldconfig + +%files +%{_libdir}/{psqlodbc.so,psqlodbca.so,psqlodbcw.so} +%doc license.txt readme.txt docs/* README.rpmdist + +%files devel +%doc license.txt +%dir %{_libdir}/postgresql-odbc +%defattr(-,postgres,postgres) +%{_libdir}/postgresql-odbc/test + +%changelog +* Wed Apr 22 2020 wangyue - 10.03.0000-3 +- Package init diff --git a/postgresql-odbc.yaml b/postgresql-odbc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4053ddb75de5576fc405a3dc6cde2559c3338acd --- /dev/null +++ b/postgresql-odbc.yaml @@ -0,0 +1,4 @@ +version_control: git +src_repo: https://git.postgresql.org/gitweb/?p=psqlodbc.git +tag_prefix: "^v" +seperator: "." diff --git a/psqlodbc-10.03.0000.tar.gz b/psqlodbc-10.03.0000.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..8ea1e62964948af633fb59a644e03074d63e9858 Binary files /dev/null and b/psqlodbc-10.03.0000.tar.gz differ