анализ трассировки: Delphi DSN info: DSN='PostgreSQL35W',server='localhost',port='5432',dbase='SCOTT',user='postgres',passwd='xxxxx' onlyread='0',protocol='7.4',showoid='1',fakeoidindex='0',showsystable='0' conn_settings='', conn_encoding='(null)' translation_dll='',translation_option='' conn = 15B27A38, PGAPI_Connect(DSN='PostgreSQL35W', UID='postgres', PWD='xxxxx') Driver Version='09.01.0100,201112290002' linking 1500 static Multithread library Global Options: fetch=100, socket=4096, unknown_sizes=0, max_varchar_size=255, max_longvarchar_size=8190 disable_optimizer=1, ksqo=0, unique_index=0, use_declarefetch=0 text_as_longvarchar=1, unknowns_as_longvarchar=1, bools_as_char=0 NAMEDATALEN=64 extra_systable_prefixes='dd_;', conn_settings='' conn_encoding='' [ PostgreSQL version string = '9.1.3' ] [ PostgreSQL version number = '9.1' ] conn=15B27A38, query='select oid, typbasetype from pg_type where typname = 'lo'' [ fetched 0 rows ] [ Large Object oid = -999 ] [ Client encoding = 'WIN1251' (code = 23) ] conn=15B27A38, query='show max_identifier_length' [ fetched 1 rows ] - этого нет в BB conn=15B27A38, query='WITH RECURSIVE temp1 ( "empno","mgr","ename","job","hiredate","sal","comm","deptno",LEVEL ) AS (SELECT T1."empno",T1."mgr", T1."ename", T1."job",T1."hiredate", T1."sal",T1."comm",T1."deptno", 1 FROM EMP T1 WHERE T1."mgr" IS NULL union select T2."empno",T2."mgr", T2."ename", T2."job",T2."hiredate", T2."sal",T2."comm",T2."deptno",LEVEL + 1 FROM EMP T2 INNER JOIN temp1 ON( temp1."empno"= T2."mgr") )select * from temp1 ORDER BY LEVEL LIMIT 100' [ fetched 14 rows ] ========================== BB DSN info: DSN='PostgreSQL35W',server='localhost',port='5432',dbase='SCOTT',user='postgres',passwd='xxxxx' onlyread='0',protocol='7.4',showoid='1',fakeoidindex='0',showsystable='0' conn_settings='', conn_encoding='(null)' translation_dll='',translation_option='' conn = 65232E40, PGAPI_Connect(DSN='PostgreSQL35W', UID='postgres', PWD='xxxxx') Driver Version='09.01.0100,201112290002' linking 1500 static Multithread library Global Options: fetch=100, socket=4096, unknown_sizes=0, max_varchar_size=255, max_longvarchar_size=8190 disable_optimizer=1, ksqo=0, unique_index=0, use_declarefetch=0 text_as_longvarchar=1, unknowns_as_longvarchar=1, bools_as_char=0 NAMEDATALEN=64 extra_systable_prefixes='dd_;', conn_settings='' conn_encoding='' [ PostgreSQL version string = '9.1.3' ] [ PostgreSQL version number = '9.1' ] conn=65232E40, query='select oid, typbasetype from pg_type where typname = 'lo'' [ fetched 0 rows ] [ Large Object oid = -999 ] [ Client encoding = 'WIN1251' (code = 23) ]
conn=65232E40, query='WITH RECURSIVE temp1 ( "empno","mgr","ename","job","hiredate","sal","comm","deptno",LEVEL ) AS (SELECT T1."empno",T1."mgr", T1."ename", T1."job",T1."hiredate", T1."sal",T1."comm",T1."deptno", 1 FROM EMP T1 WHERE T1."mgr" IS NULL union select T2."empno",T2."mgr", T2."ename", T2."job",T2."hiredate", T2."sal",T2."comm",T2."deptno",LEVEL + 1 FROM EMP T2 INNER JOIN temp1 ON( temp1."empno"= T2."mgr") )select * from temp1 ORDER BY LEVEL LIMIT 100' [ fetched 14 rows ] Как видно выборка получена STATEMENT ERROR: func=PGAPI_ExtendedFetch, desc='', errnum=31, errmsg='The fetch type for PGAPI_ExtendedFetch isn't allowed with ForwardOnly cursor.' А это уже лишнее ------------------------------------------------------------ hdbc=65232E40, stmt=6523BD20, result=652313C0 prepare=11, internal=0 bindings=6523E858, bindings_allocated=9 parameters=00000000, parameters_allocated=0 statement_type=4, statement='WITH RECURSIVE temp1 ( "empno","mgr","ename","job","hiredate","sal","comm","deptno",LEVEL ) AS (SELECT T1."empno",T1."mgr", T1."ename", T1."job",T1."hiredate", T1."sal",T1."comm",T1."deptno", 1 FROM EMP T1 WHERE T1."mgr" IS NULL union select T2."empno",T2."mgr", T2."ename", T2."job",T2."hiredate", T2."sal",T2."comm",T2."deptno",LEVEL + 1 FROM EMP T2 INNER JOIN temp1 ON( temp1."empno"= T2."mgr") )select * from temp1 ORDER BY LEVEL LIMIT 100' stmt_with_params='WITH RECURSIVE temp1 ( "empno","mgr","ename","job","hiredate","sal","comm","deptno",LEVEL ) AS (SELECT T1."empno",T1."mgr", T1."ename", T1."job",T1."hiredate", T1."sal",T1."comm",T1."deptno", 1 FROM EMP T1 WHERE T1."mgr" IS NULL union select T2."empno",T2."mgr", T2."ename", T2."job",T2."hiredate", T2."sal",T2."comm",T2."deptno",LEVEL + 1 FROM EMP T2 INNER JOIN temp1 ON( temp1."empno"= T2."mgr") )select * from temp1 ORDER BY LEVEL LIMIT 100' data_at_exec=-1, current_exec_param=-1, put_data=0 currTuple=-1, current_col=-1, lobj_fd=-1 maxRows=0, rowset_size=1, keyset_size=0, cursor_type=0, scroll_concurrency=1 cursor_name='SQL_CUR6523BD20' ----------------QResult Info ------------------------------- fields=65231478, backend_tuples=6523CA30, tupleField=1696844336, conn=65232E40 fetch_count=0, num_total_rows=14, num_fields=9, cursor='(NULL)' message='(NULL)', command='SELECT 14', notice='(NULL)' status=100, inTuples=0 CONN ERROR: func=PGAPI_ExtendedFetch, desc='', errnum=0, errmsg='(NULL)' ------------------------------------------------------------ henv=65232E10, conn=65232E40, status=1, num_stmts=16 sock=652311F8, stmts=652312C8, lobj_type=-999 ---------------- Socket Info ------------------------------- socket=1020, reverse=0, errornumber=0, errormsg='(NULL)' buffer_in=1696815528, buffer_out=1696819632 buffer_filled_in=1425, buffer_filled_out=0, buffer_read_in=1425... =================== а вот результат ВВ с обрамляющим SELECT-ом DSN info: DSN='PostgreSQL35W',server='localhost',port='5432',dbase='SCOTT',user='postgres',passwd='xxxxx' onlyread='0',protocol='7.4',showoid='1',fakeoidindex='0',showsystable='0' conn_settings='', conn_encoding='(null)' translation_dll='',translation_option='' conn = 663C2E38, PGAPI_Connect(DSN='PostgreSQL35W', UID='postgres', PWD='xxxxx') Driver Version='09.01.0100,201112290002' linking 1500 static Multithread library Global Options: fetch=100, socket=4096, unknown_sizes=0, max_varchar_size=255, max_longvarchar_size=8190 disable_optimizer=1, ksqo=0, unique_index=0, use_declarefetch=0 text_as_longvarchar=1, unknowns_as_longvarchar=1, bools_as_char=0 NAMEDATALEN=64 extra_systable_prefixes='dd_;', conn_settings='' conn_encoding='' [ PostgreSQL version string = '9.1.3' ] [ PostgreSQL version number = '9.1' ] conn=663C2E38, query='select oid, typbasetype from pg_type where typname = 'lo'' [ fetched 0 rows ] [ Large Object oid = -999 ] [ Client encoding = 'WIN1251' (code = 23) ]
conn=663C2E38, query='SELECT * FROM (WITH RECURSIVE temp1 ( "empno","mgr","ename","job","hiredate","sal","comm","deptno",LEVEL ) AS (SELECT T1."empno",T1."mgr", T1."ename", T1."job",T1."hiredate", T1."sal",T1."comm",T1."deptno", 1 FROM EMP T1 WHERE T1."mgr" IS NULL union select T2."empno",T2."mgr", T2."ename", T2."job",T2."hiredate", T2."sal",T2."comm",T2."deptno",LEVEL + 1 FROM EMP T2 INNER JOIN temp1 ON( temp1."empno"= T2."mgr") )select * from temp1 ORDER BY LEVEL LIMIT 100) ttt' [ fetched 14 rows ] conn=663C2E38, PGAPI_Disconnect conn=663C2E38, query='ROLLBACK' -вот это добавлено по сравнению с delphi
|