powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / order by и агрегатные выражения
44 сообщений из 44, показаны все 2 страниц
order by и агрегатные выражения
    #38668084
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно ли добиться определённого порядка следования в list?
Например, вот так гарантирован порядок?

Код: sql
1.
select list(id) from (select id from operation_line where ref_operation=202784901 order by id)
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668085
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. на самом деле интересует не list, а sum.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668090
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenна самом деле интересует не list, а sum.
От перестановки мест слагаемых сумма не меняется. (с) математика первого класса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668120
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, в первом классе не меняется, да.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668131
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden> Например, вот так гарантирован порядок?

Да.

budden> P.S. на самом деле интересует не list, а sum.

Для SUM порядок не имеет значения.
Для чего на самом деле понадобилось?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668212
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, при сложении нескольких чисел с плавающей точкой порядок имеет значение. За LIST спасибо. А для SUM так будет гарантирован порядок?

Вообще-то мне нужно свернуть множество строк документа в некую контрольную сумму, чтобы удостовериться, что два множества записей совпадают (с большой вероятностью), но ведь нет же в природе агрегатной функции md5sum? И если бы она была, то и для неё порядок был бы важен. Хотя, md5 есть в rfunc, можно хранимку написать на этой основе. Будет не лень - переделаю, а пока сделаю sum с order by.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668220
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenпри сложении нескольких чисел с плавающей точкой
А кто ж тебя, болезного, заставляет складывать плавающие числа?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668264
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden> при сложении нескольких чисел с плавающей точкой порядок имеет значение

Приведите пример, а-то как-то не очень понятно.
Точность теряется что ли или в чём проблема?

> А для SUM так будет гарантирован порядок?

Настолько, насколько он вообще имеет смысл.

> контрольную сумму ... а пока сделаю sum с order by.

А SUM чего Вы собрались делать ? CRC что ли?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668317
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамbudden> при сложении нескольких чисел с плавающей точкой порядок имеет значение

Приведите пример, а-то как-то не очень понятно.
Точность теряется что ли или в чём проблема?

budden,
я бы тоже с удовольствием посмотрел пример, а также правило, по которому лучше всего суммировать числа.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668331
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var
  a: Single;

  a := 5e-8;
  a := a + 5e-8;
  a := a + 1;    // 1.0000001

  a := 1;
  a := a + 5e-8;
  a := a + 5e-8;    // 1
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668349
Dzirt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolf, это называется "неправильный подход".
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TMainForm.ButtonOKClick(Sender: TObject);
var
  a, b, c, d: Double;
begin
  d := 5e-8;
  c := 1.0;

  a := d;
  a := a + d;
  a := a + c;    // 1.0000001

  b := c;
  b := b + d;
  b := b + d;     // 1

  Memo.Lines.Add( Format( 'a=%.8f : b=%.8f', [a,b] ) ); 
end;



дает результат:
a=1,00000010 : b=1,00000010

PS: Single - это не совсем используемый в сервере Double precision
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668389
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DzirtRWolf, это называется "неправильный подход".
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure TMainForm.ButtonOKClick(Sender: TObject);
var
  a, b, c, d: Double;
begin
  d := 5e-8;
  c := 1.0;

  a := d;
  a := a + d;
  a := a + c;    // 1.0000001

  b := c;
  b := b + d;
  b := b + d;     // 1

  Memo.Lines.Add( Format( 'a=%.8f : b=%.8f', [a,b] ) ); 
end;



дает результат:
a=1,00000010 : b=1,00000010

PS: Single - это не совсем используемый в сервере Double precision
Такова сама природа операций над числами с плавающей точкой
и точно так-же будет и с Double precision
зы. примеры придумывать лень
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668445
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolf
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var
  a: Single;

  a := 5e-8;
  a := a + 5e-8;
  a := a + 1;    // 1.0000001

  a := 1;
  a := a + 5e-8;
  a := a + 5e-8;    // 1

Ну как-бы всем известно, что числа не-целочисленные, (тип real) , имеют неточное машинное представление, и в процессе вычислений накапливается ошибка.
Но, откуда следует, что суммировать их надо как-то по-особому, и как именно? (в этом был мой вопрос).

В общем случае, эту неточность надо просто учитывать, или выбрать более подходящие типы данных.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668457
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DzirtSingle - это не совсем используемый в сервере Double precision

Dzirt, RWolf
в InterBase и Firebird
FLOAT - эквивалент дельфийскому single
DOUBLE PRECISION - double

FLOAT используют разве что те, кто не в курсе его низкой точности, по ошибке воспринимая, что TField.AsFloat работает с float.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668631
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, пример возможного несовпадения привёл RWolf, m7m верно отметил, что оно будет иметь место и для double precision.

Я хотел сделать быстрогрязную контрольную сумму для сравнения _множеств_ пар целых чисел.

Плавающую точку выбрал, чтобы не рассчитывать диапазоны и не сталкиваться с переполнениями. Если складывать не по порядку возрастания, одинаковые множества чисел могут при сложении дать разный результат, т.е. контрольная сумма не будет работать.
А если упорядочить по возрастанию, одинаковые множества чисел всегда дадут одинаковый результат.

Однако, учитывая, что "разрешающая способность" этого способа неизвестна (может оказаться, что он ненадёжно отличает несовпадающие множества) и вопрос с порядком на тот момент был неясен, переделал всё на md5 с помощью хранимой процедуры и rfunc. Понятно, что и md5 ничего не гарантирует - надёжно сравнить множества заранее неизвестной длины с помощью контрольной суммы фиксированного размера невозможно. Но у него хотя бы больше объем данных и он предназначен именно для контрольных сумм, поэтому я его взял.

Но вопрос о порядке всё равно интересен, потому что (наверное) можно включить в агрегатную функцию выражение с побочными эффектами, тогда порядок опять же будет иметь значение. Ладно, буду теперь считать, что в приведённой мной конструкции порядок гарантирован. Спасибо.

S.G., надеюсь, теперь понятно, какова моя цель и какое правило я предлагал. Вообще говоря, правильного способа сложения чисел не существует - всё зависит от цели и от того, что это за числа. Для моей цели было достаточно упорядочить по возрастанию.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668640
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buddenДля моей цели было достаточно упорядочить по возрастанию.
Сравнение двух упорядоченных множеств осуществляется как и их суммирование - в один
проход. Но при этом даёт абсолютно точный результат.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668659
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden> Я хотел сделать быстрогрязную контрольную
budden> сумму для сравнения _множеств_ пар целых чисел.

Реализаций много разных, от сравнения самих значений
до "хеша от хеша" или List(Id), о котором я уже упоминал.

С учётом того, что итак написана ХП - быстрее было бы
пробегаться в ней сразу, а не задействовать хеш и делать
сравнение "снаружи".

> А если упорядочить по возрастанию, одинаковые
> множества чисел всегда дадут одинаковый результат.

Ну, если есть проблемы с потерей точности -
я бы не был в этом так уверен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668660
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамbuddenА если упорядочить по возрастанию, одинаковые
множества чисел всегда дадут одинаковый результат.
Ну, если есть проблемы с потерей точности - я бы не был в этом так уверен.
Даже без потери точности - проблема в том, что разные множества чисел тоже дадут
одинаковый результат.

А вообще у меня дежавю: абсолютно аналогичный топик был тут лет пять назад.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668661
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DS> Даже без потери точности - проблема в том, что разные
DS> множества чисел тоже дадут одинаковый результат.

Не "дадут", а "могут дать". Это уже от хеша зависит.

DS> А вообще у меня дежавю: абсолютно аналогичный топик был тут лет пять назад.

Что-то я не припомню. Ты про терминологический
спор про "генераторы не являются хешами"? :-)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668667
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТы про терминологический спор про "генераторы не являются
хешами"? :-)
Нет, я про быстрое сравнение множеств на равенство (точнее неравенство) с помощью агрегатов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668675
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.Ну как-бы всем известно, что числа не-целочисленные, (тип real) , имеют неточное машинное представление, и в процессе вычислений накапливается ошибка.
Но, откуда следует, что суммировать их надо как-то по-особому, и как именно? (в этом был мой вопрос).Ну, как бы, основы приближённых вычислений - суммирование ведётся от меньших к большим.

P.S. Это свойство именно приближённых вычислений, которое не зависит от способа представления чисел.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668699
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DS> Нет, я про быстрое сравнение множеств на равенство
DS> (точнее неравенство) с помощью агрегатов.

Найди ссылку, плиз, а-то я что-то не припомню.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668701
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНайди ссылку, плиз, а-то я что-то не припомню.
http://www.sql.ru/forum/928247/metod-bystrogo-poiska-razlichiy-mezhdu-dvumya-tablicami-sinhronizaciya
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668801
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Да, забавный топик, хоть и не 5 лет назад. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38668836
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov... суммирование ведётся от меньших к большим.
P.S. Это свойство именно приближённых вычислений, которое не зависит от способа представления чисел.да, спасибо.

почитал немного:
раз
два
три
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38670067
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если сравнение суммы именно целых чисел - что мешает сравнить Trunc(Sum(...)) ?
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38670571
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal> Если сравнение суммы именно целых чисел

Не если.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38670923
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

ТСЯ хотел сделать быстрогрязную контрольную сумму для сравнения _множеств_ пар целых чисел.

Плавающую точку выбрал, чтобы не рассчитывать диапазоны и не сталкиваться с переполнениями.

А что ты хотел сказать своим постом - я не постиг, увы
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38670964
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal> А что ты хотел сказать своим постом - я не постиг, увы

Что он не целые числа суммирует. Что прямо сказано в цитате.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38670977
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

суммирует он фактически целые, только скастованные в дабл. Cоответственно с дробной частью можно обращаться как угодно. И никто не мешает тем или иным способом у итоговых значений откусить эту дробную часть, после чего сравнивать их спокойненько, не заморачиваясь с порядком суммирования.
Если я правильно понял поинт данного топика
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38671002
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal> суммирует он фактически целые, только скастованные в дабл

Кто вам сказал такую глупость?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38671261
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

buddenЯ хотел сделать быстрогрязную контрольную сумму для сравнения _множеств_ пар целых чисел.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38671335
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

из другого треда
Гаджимурадов РустамТопик не читал
Традиция?
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38671685
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,
>Ну, если есть проблемы с потерей точности -
>я бы не был в этом так уверен.
Ну вроде бы операции с плавающими числами всё же детерминированы и, соответственно, результат данной операции над данными числами (полученными из целых) тоже всегда будет одинаковой. По индукции получаем, что результат будет одинаковый.

Dimitry Sibiryakov ,
сравнивать множества непосредственно - это неплохой вариант, но он подразумевает, что эти множества доступны одновременно.
Изначально у меня была сверка двух разных баз на разных платформах, сначала выбирались данные (включая контрольные суммы) из одной базы, выгружались в файл, файл загружался в другую базу и дальше шло сравнение. Сделать по другому можно, но это труд.

Сейчас у меня множества доступны одновременно и можно было бы их сравнить. Но завтра мне понадобится новая сверка, а хочется иметь повторно используемый инструмент.

Естественно, замена множества любой хеш-функцией (хоть суммой, хоть md5) даёт риск потери различия между множествами, которые на самом деле различны. Но я счёл этот риск достаточно малым (хотя и не считал его). Если мы упустим отличие, оно всё равно потом где-нибудь ещё вылезет, да и цена ошибки тут не такая, что "ракета промахнулась мимо Марса".

Кто-то ещё,
list(id) не гарантирует отсутствие переполнения.

В общем, всем спасибо за участие!
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38671692
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,
я умножал первое из них на 0.001 и умножал на второе, но можно было и просто кастовать в дабл. Смысл в том, чтобы избежать возможного переполнения целых. Переполнить плавающее - это нужно очень сильно постараться.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38671854
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery>

Какая разница что он хотел и какие исходные данные,
если он делает совсем иначе (без разницы, кастованием,
вычислением хеша или как-то ещё) ?

Модератор: Рустам, предупреждение. Уж от тебя-то не ожидал
Модератор: Fr0sT-Brutal, а ты не разжигай.
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38671863
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden> Изначально у меня была сверка двух разных баз на разных платформах

Это имело смысл озвучить сразу - не было бы многих вопросов. :)
У меня было похожее, когда множества были разнесены не по БД,
а по "местонахождению" и по времени.

> даёт риск потери различия между множествами, которые на самом деле различны

Поэтому неравенство даёт 100% гарантию, а равенство -
лишь повод проверить сами множества (сразу или после).

> list(id) не гарантирует отсутствие переполнения.

В каком смысле? Там какие-то сотни тысяч записей или в чём дело?
Есть БЛОБ. Есть промежуточная свёртка. Есть ещё куча воркэраундов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38671982
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
топег просто пес(т)ня...

циклический избыточный код придумали лохи.
ибо каждый юный гений изобретает свой велосипед.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38672122
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Там какие-то сотни тысяч записей или в чём дело?
> Есть БЛОБ. Есть промежуточная свёртка. Есть ещё куча воркэраундов.
Мне потом в Excel его надо выгрузить. Промежуточная свёртка - видимо, с потерей информации всё равно, а чем она тогда лучше моего md5?
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38672143
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий> циклический избыточный код придумали лохи.

Так о нём сразу было сказано (спрошено). И это тот же хеш.

budden> чем она тогда лучше моего md5?

Не требует предв. расчётов, дешевле и быстрее,
надежнее опять же (не сравнивал, но думаю это
итак очевидно, с учётом количества данных).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38672197
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, ткни в примерчик плиз
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38672205
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну Execute Block, который выбирает порциями по 1000 записей,
делает их List, считает по нему хеш/СКС/etc и дальше по циклу.

Ты хеши хранишь или пересчитываешь каждый раз в ХП?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38672395
budden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, ну, чем такое делать, проще просто сразу md5 сумму, как я и сделал. Хеши я не храню, у меня делается выборка для сверки, дальше это выгружается в Excel, а дальше человек смотрит (на несовпадение множеств и на другие возможные проблемы).
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
context=md5init();

for select ref_product,qty from operation_line
  where ref_operation=:ref_operation
  order by ref_product,qty into :ref_product, :qty do
  begin
  context=md5update(context,ref_product,11);
  context=md5update(context,qty,11);
  end

result=md5final(context); 
suspend;
...
Рейтинг: 0 / 0
order by и агрегатные выражения
    #38672412
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
budden> проще просто сразу md5 сумму, как я и сделал

Это дело вкуса и производительности.
Лично я бы в любом случае предпочёл
избежать использования UDF-функции
при наличии встроенных List и Hash.

В общем, ладно, раз ответы на вопросы
получены и проблема уже решена, то чего
тут воду в ступе толочь. Успехов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / order by и агрегатные выражения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]