#coding:utf-8 """ ID: issue-3363 ISSUE: 3363 TITLE: Error in Trace plugin (use local symbols in query) DESCRIPTION: JIRA: CORE-2981 FBTEST: bugs.core_2981 """ import pytest from difflib import unified_diff from firebird.qa import * db = db_factory() act = python_act('db') test_script = """ set list on; select '*Лев Николаевич Толстой * *Анна Каренина * /Мне отмщение, и аз воздам/ *ЧАСТЬ ПЕРВАЯ* *I * Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему. Все смешалось в доме Облонских. Жена узнала, что муж был в связи с бывшею в их доме француженкою-гувернанткой, и объявила мужу, что не может жить с ним в одном доме. Положение это продолжалось уже третий день и мучительно чувствовалось и самими супругами, и всеми членами семьи, и домочадцами. Все члены семьи и домочадцы чувствовали, что нет смысла в их сожительстве и что на каждом постоялом дворе случайно сошедшиеся люди более связаны между собой, чем они, члены семьи и домочадцы Облонских. Жена не выходила из своих комнат, мужа третий день не было дома. Дети бегали по всему дому, как потерянные; англичанка поссорилась с экономкой и написала записку приятельнице, прося приискать ей новое место; повар ушел еще вчера со двора, во время обеда; черная кухарка и кучер просили расчета. На третий день после ссоры князь Степан Аркадьич Облонский -- Стива, как его звали в свете, -- в обычный час, то есть в восемь часов утра, проснулся не в спальне жены, а в своем кабинете, на сафьянном диване... Он повернул свое полное, выхоленное тело на пружинах дивана, как бы желая опять заснуть надолго, с другой стороны крепко обнял подушку и прижался к ней щекой; но вдруг вскочил, сел на диван и открыл глаза. "Да, да, как это было? -- думал он, вспоминая сон. -- Да, как это было? Да! Алабин давал обед в Дармштадте; нет, не в Дармштадте, а что-то американское. Да, но там Дармштадт был в Америке. Да, Алабин давал обед на стеклянных столах, да, -- и столы пели: Il mio tesoro, и не Il mio tesoro, а что-то лучше, и какие-то маленькие графинчики, и они же женщины", -- вспоминал он. Глаза Степана Аркадьича весело заблестели, и он задумался, улыбаясь. "Да, хорошо было, очень хорошо. Много еще там было отличного, да не скажешь словами и мыслями даже наяву не выразишь". И, заметив полосу света, пробившуюся сбоку одной из суконных стор, он весело скинул ноги с дивана, отыскал ими шитые женой (подарок ко дню рождения в прошлом году), обделанные в золотистый сафьян туфли и по старой, девятилетней привычке, не вставая, потянулся рукой к тому месту, где в спальне у него висел халат. И тут он вспомнил вдруг, как и почему он спит не в спальне жены, а в кабинете; улыбка исчезла с его лица, он сморщил лоб. "Ах, ах, ах! Ааа!.." -- замычал он, вспоминая все, что было. И его воображению представились опять все подробности ссоры с женою, вся безвыходность его положения и мучительнее всего собственная вина его. "Да! она не простит и не может простить. И всего ужаснее то, что виной всему я, виной я, а не виноват. В этом-то вся драма, -- думал он. -- Ах, ах, ах!" -- приговаривал он с отчаянием, вспоминая самые тяжелые для себя впечатления из этой ссоры. Неприятнее всего была та первая минута, когда он, вернувшись из театра, веселый и довольный, с огромною грушей для жены в руке, не нашел жены в гостиной; к удивлению, не нашел ее и в кабинете и, наконец, увидал ее в спальне с несчастною, открывшею все, запиской в руке. Она, эта вечно озабоченная, и хлопотливая, и недалекая, какою он считал ее, Долли, неподвижно сидела с запиской в руке и с выражением ужаса, отчаяния и гнева смотрела на него. -- Что это? это? -- спрашивала она, указывая на записку. И при этом воспоминании, как это часто бывает, мучала Степана Аркадьича не столько самое событие, сколько то, как он ответил на эти слова жены. С ним случилось в эту минуту то, что случается с людьми, когда они неожиданно уличены в чем-нибудь слишком постыдном. Он не сумел приготовить свое лицо к тому положению, в которое он становился перед женой после открытия его вины. Вместо того чтоб оскорбиться, отрекаться, оправдываться, просить прощения, оставаться даже равнодушным -- все было бы лучше того, что он сделал! -- его лицо совершенно невольно ("рефлексы головного мозга", -- подумал Степан Аркадьич, который любил физиологию), совершенно невольно вдруг улыбнулось привычною, доброю и потому глупою улыбкой. Эту глупую улыбку он не мог простить себе. Увидав эту улыбку, Долли вздрогнула, как от физической боли, разразилась, со свойственною ей горячностью, потоком жестоких слов и выбежала из комнаты. С тех пор она не хотела видеть мужа. "Всему виной эта глупая улыбка", -- думал Степан Аркадьич. "Но что же делать? что делать?" -- с отчаянием говорил он себе и не находил ответа. ' from rdb$database; """ trace = ['include_filter = %(SELECT|INSERT|UPDATE|DELETE)%', 'exclude_filter = %no_trace%', 'log_connections = true', 'log_transactions = true', 'log_statement_prepare = true', 'log_statement_free = true', 'log_statement_start = true', 'log_statement_finish = true', 'log_trigger_start = true', 'log_trigger_finish = true', 'log_context = true', 'print_plan = true', 'print_perf = true', 'time_threshold = 0', 'max_sql_length = 5000', 'max_blr_length = 500', 'max_dyn_length = 500', 'max_arg_length = 80', 'max_arg_count = 30', ] @pytest.mark.trace @pytest.mark.version('>=3') def test_1(act: Action): # Get content of firebird.log BEFORE test log_before = act.get_firebird_log() with act.trace(db_events=trace, keep_log=False, encoding='utf8'): act.isql(switches=['-n', '-q'], input=test_script) # Get content of firebird.log AFTER test log_after = act.get_firebird_log() assert '\n'.join(unified_diff(log_before, log_after)) == ''