LINUX.ORG.RU

Сообщения outtaspace

 

Неконсистентность запроса с group by + order by + limit

 , ,

Столкнулся с необъяснимым поведением mysql 5.7 (разумеется под онтопиком).

В запросах нет хранимок, вьюшек, агрегатных функций и прочих сложностей. Таблица table_name статична, данные в ней не меняются. Запросы 1 и 2 отличаются только циферкой - лимитом, т.е. последим символом запроса.

Насколько я понимаю последовательность выполнения конкретного запроса (group by + order by + limit), mysql должен вычислить limit по уже отфильтрованным и отсортированным строкам. То есть при любом запросе вернет одинаковый результат - единственную строку подходящую под condition. Но практике это не так.

Запрос 1 использует лимит=1, возвращает 0 строк. Хотя запрос должен вернуть одну строку, таков condition и набор данных в таблице.

select
    tn.id
from
    table_name as tn
where
    condition
group by
    tn.id
order by
    tn.id
limit 1

Запрос 2 использует лимит=2, возвращает 1 строку. Именно одну строку этот запрос и должен извлечь, таков condition и набор данных в таблице.

select
    tn.id
from
    table_name as tn
where
    condition
group by
    tn.id
order by
    tn.id
limit 2

outtaspace
()

Ищу работу: Perl, Киев.

 

С 2007 года работаю в Perl-проектах: телеком, автоматизация тестирования, web, поисковики.

outtaspace
()

Angularjs, не обновляется view при обновлениях страницы.

 

Страница загружается ajax'ом.

При первоначальной загрузке отрабатывает как надо (бутстрапится ангуляр, по таймауту обновляется сообщение внутри div'а).

Но если уйти в другой таб и вернуться, не генерится view: вместо сообщения (message из $scope) вижу placeholder:

{{message}}

Решил форсировать, через $scope.$apply(), но оно не работает как надо, сообщение в div'е не обновляется.

Как починить? Мб я где-то грубо ошибся?

<div id="hello" ng-controller="MyController">
message: {{message}}
</div>

<script>
angular.module('myApp', [])
    .controller('MyController', ['$scope', function($scope) {
        $scope.message = "Waiting 2000ms for update.";

        setTimeout(function () {
            $scope.$apply(function () {
                $scope.message = "Timeout called!";
            });
        }, 2000);
    }]);

angular.element(document).ready(function() {
    try {
        console.log('Bootstrap!');
        angular.bootstrap(document, ['myApp']);
    } catch(err) {
        console.log('Already bootstrapped!');

        var $scope = angular
            .element(document.getElementById('hello'))
            .scope();

        setTimeout(function () {
            $scope.$apply(function () {
                $scope.message = "Timeout called!";
            });
        }, 2000);
    }
});
</script>
outtaspace
()

Будни строителя капитализма

Условия для съемки были трудными, стол расположен близко к стене и очень плоха камера смартфона. В кадр не попали дешевое офисное кресло, и Sennheiser HD215 на фирменном headphone holder.

На столе:

узнаваемая клавиатура от M$;

радио-мышка от a4tech (G7 630);

новенький монитор LG IPS234;

игрушечная мышка сидящая на миниатюрном барабане;

головоломки (5х5х5, 3х3х3, мастер-пираморфикс, белоснежный кубик-альбинос который всегда собран);

кипа документов + блокноты + старое издание GoF;

кистевой эспандер в виде бублика + тыква из которой пью мате;

На экране:

няшный xubuntu 12.04;

GNU Screen в split-mode, в котором пускаю консольки на удаленном сервере (Debian) и vim;

В правом буфере «скрина» выхлоп системы которую единолично разрабатываю (soft-realtime управляющей огромной сетью). В правом Perl'овый код и иногда Erlang'овый.

outtaspace
()

RSS подписка на новые темы