Go to file
Steve Howell bd95b37d67 search: Make `num_after`/`num_after` more consistent.
We now consistently set our query limits so that we get at
least `num_after` rows such that id > anchor.  (Obviously, the
caveat is that if there aren't enough rows that fulfill the
query, we'll return the full set of rows, but that may be less
than `num_after`.)  Likewise for `num_before`.

Before this change, we would sometimes return one too few rows
for narrow queries.

Now, we're still a bit broken, but in a more consistent way.  If
we have a query that does not match the anchor row (which could
be true even for a non-narrow query), but which does match lots
of rows after the anchor, we'll return `num_after + 1` rows
on the right hand side, whether or not the query has narrow
parameters.

The off-by-one semantics here have probably been moot all along,
since our windows are approximate to begin with.  If we set
num_after to 100, its just a rough performance optimization to
begin with, so it doesn't matter whether we return 99 or 101 rows,
as long as we set the anchor correctly on the subsequent query.

We will make the results more rigorous in a follow up commit.
2018-03-15 12:36:06 -07:00
.circleci travis: Cut webhook config pointing at zulipbot. 2018-01-31 11:07:38 -08:00
.github github: Suggest GIFs too in PR template. 2018-02-16 09:59:22 -08:00
.tx translation: Add configuration for a `zulip-test` Transifex project. 2018-02-15 13:38:09 -08:00
analytics mypy: Final small migrations to python3.5 annotations in many files. 2018-03-12 11:23:30 -07:00
confirmation create_realm: Refactor to deal ASAP with key record, not string. 2018-02-05 12:59:12 -08:00
corporate corporate: Remove unused imports (F401). 2017-11-07 16:37:04 -08:00
docs stream settings: Allow realm admins to remove others from any stream. 2018-03-13 14:59:09 -07:00
frontend_tests user-groups: Achieve 100% node-test coverage of user_groups.js. 2018-03-15 10:09:28 -07:00
pgroonga py3: Remove all `from __future__ import unicode_literals`. 2017-10-17 23:07:42 -07:00
puppet puppet: Only run analytics Nagios checks on machine running cron. 2018-03-06 13:38:27 -08:00
requirements email: Use PyPi module for disposable email providers list. 2018-03-11 21:48:56 -07:00
scripts emoji: Switch to 64px 256 color indexed sprite sheets. 2018-03-14 10:28:45 -07:00
static user-groups: Update user_group_name_dict, when name/description is edited. 2018-03-15 10:09:28 -07:00
templates user docs: Remove view-messages-containing-files-or-links. 2018-03-12 20:07:17 -07:00
tools user-groups: Achieve 100% node-test coverage of user_groups.js. 2018-03-15 10:09:28 -07:00
zerver search: Make `num_after`/`num_after` more consistent. 2018-03-15 12:36:06 -07:00
zilencer populate_db: Include some initial data for custom profile fields. 2018-03-11 18:08:17 -07:00
zproject Set REALM_HOSTS based on EXTERNAL_HOST if it is available. 2018-03-13 09:45:37 -07:00
zthumbor mypy: Minor zthumbor annotation changes. 2018-03-12 11:23:30 -07:00
.codecov.yml Try to avoid codecov spam. 2017-12-29 07:23:26 -05:00
.editorconfig Editing (minor): Add .pyi to .editorconfig. 2017-12-18 07:35:58 -05:00
.eslintignore zulip_ops: Delete the long-disused `stats1.zulip.net` config and its dependencies. 2017-08-15 17:30:31 -07:00
.eslintrc.json lint: Replace 'return undefined;' with 'return;'. 2018-03-13 08:22:42 -04:00
.gitattributes gitattributes: Mark yarn.lock as "binary", i.e. suppress diffs. 2018-02-01 13:37:19 -08:00
.gitignore gitignore: Ignore a Transifex secrets file. 2018-02-15 13:38:09 -08:00
.gitlint lint: Allow revert commit messages in gitlint. 2018-02-13 09:21:01 -08:00
.isort.cfg python: Add settings for isort. 2017-11-14 12:31:14 -08:00
.npmignore
.travis.yml travis: Disable most suites in favor of CircleCI! 2018-01-31 11:10:03 -08:00
CODE_OF_CONDUCT.md repository: Add CODE_OF_CONDUCT.md. 2017-06-14 18:43:08 -07:00
CONTRIBUTING.md doc: Add blog link to CONTRIBUTING. 2018-02-09 12:04:28 -08:00
Dockerfile-dev Move Dockerfile to Dockerfile-dev. 2017-09-25 12:32:33 -07:00
LICENSE docs: Move license declaration from README.md to LICENSE. 2017-11-14 16:04:23 -08:00
README.md README: Include CircleCI build status badge. 2018-02-08 18:24:43 -08:00
Vagrantfile vagrant: Replace guest motd with a custom Zulip motd. 2018-02-19 09:35:04 -08:00
manage.py Remove `from __future__ import absolute_import`. 2017-10-17 22:59:42 -07:00
package.json emoji: Switch to 64px 256 color indexed sprite sheets. 2018-03-14 10:28:45 -07:00
version.py emoji: Switch to 64px 256 color indexed sprite sheets. 2018-03-14 10:28:45 -07:00
yarn.lock emoji: Switch to 64px 256 color indexed sprite sheets. 2018-03-14 10:28:45 -07:00

README.md

Zulip overview

Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 300 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.

CircleCI Build Status Travis Build Status Coverage Status Mypy coverage docs Zulip chat Twitter

Getting started

Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!

You might be interested in:

You may also be interested in reading our blog or following us on twitter. Zulip is distributed under the Apache 2.0 license.