Releases

What's new

SQL Arena update history. Newest releases on top.

v7.0.22Jul 12, 2026Current
Fixed
  • Fixed a login loop: the sign-in page bounced to the catalog and back when the browser held a stale session cookie flag. Sign-in state is now confirmed by the server and stale cookies are cleaned up automatically.
v7.0.21Jul 11, 2026
Fixed
  • The selected dialect (PostgreSQL / MySQL / ClickHouse) in the catalogue filters now persists across visits too — following the rest of the filters in 7.0.20.
v7.0.20Jul 11, 2026
Fixed
  • The hidden grading data now uses different ids than the visible data: answers that copied an id spotted in one table by eye instead of a JOIN/subquery no longer pass, and such "solutions" are removed from the top-solutions list.
  • Your task-catalogue filters (status, difficulty, topic, sort) no longer reset when you come back — they persist across visits.
v7.0.19Jul 8, 2026
Fixed
  • Audited all 94 exam tasks: two references returned id where the statement asked for the dish name — correct solutions were rejected; three more statements now spell out exactly which columns to return and whether hotels without reservations count.
v7.0.18Jul 6, 2026
Fixed
  • Transaction-isolation tasks no longer reject correct solutions over column aliases: grading compares the values the transaction observed, not names like COUNT(*) AS my_alias.
  • Index-design tasks were showing the answer itself — the finished CREATE INDEX — in the “Speed this query up with an index” box. It now shows the query to speed up.
  • The feedback form sometimes failed with “couldn't send the report” for logged-in users after the page sat open for 15+ minutes: the session silently went stale. The token now refreshes automatically.
v7.0.17Jul 4, 2026
Added
  • Clicking a column in the “DB Schema” panel inserts it into the editor as Table.column at the cursor. A hint sits in the panel's bottom-right corner.
  • The “DELETE and TRUNCATE” lesson now covers DELETE ... USING — the construct a course task required but the theory never explained.
Changed
  • Removed the “NEW” badge from the Course menu item; the desktop sidebar now shows an auto-rotating partner-course carousel at the bottom.
Fixed
  • Queries using columns like copy_id, granted_at, or an OFFSET clause are no longer rejected as “unsafe”: the dangerous-statement filter was matching keywords (COPY, GRANT, SET…) inside ordinary identifiers.
  • The DML upsert and session-cleanup tasks (idempotent insert, DO UPDATE, DO NOTHING, delete expired sessions) are accepted again: relative dates in the hidden data made the checker reject even the reference solution.
  • Removed the misleading “then output …” line from those task statements — they are graded by table state, so no trailing SELECT is needed (as the editor hint already says).
v7.0.16Jul 3, 2026
Fixed
  • Full task-catalog audit: 8 tasks are solvable on MySQL again (grading crashed on hidden data), and the reference solutions of Restaurant Growth, First Letter Capitalization II and sa-90 no longer reject correct queries.
  • Refreshed the expected-output samples of 22 tasks: they previously showed data from an older dataset version or timezone-shifted timestamps.
  • Clarified task statements: the window frame in the wards exam task (ROWS vs RANGE), the Madrid city literal, and missing sort requirements.
v7.0.15Jul 3, 2026
Changed
  • AI Mentor now diagnoses window-ranking mistakes more precisely: instead of guessing about dates, it focuses on tie-handling rules and may name the relevant SQL operator from the third hint.
Fixed
  • The “VTB Client Rank by Quarterly Turnover” task now lives in the PARTITION BY lesson, and its sample answer shows the rank gap after tied turnover values so the RANK vs DENSE_RANK difference is visible immediately.
v7.0.14Jul 2, 2026
Fixed
  • The “Comments Under Posts” task is solvable from its statement again: restored the explanation that a post's post_id is its sub_id and a comment references its post via parent_id. Fixed across all languages.
  • Restored the statements of 26 more LeetCode-series tasks in English: brought back lost sort requirements, rounding rules and definitions without which correct queries were rejected by the checker.
v7.0.13Jul 1, 2026
Added
  • Bug reports now include the last task you had open — so even when a report is filed from the feedback page, support can see which task it's about.
Fixed
  • The feedback form now captures the exact page a report was sent from: in-app navigation could previously attach the wrong task to a bug report.
v7.0.12Jul 1, 2026
Fixed
  • Top solutions no longer show old answers that passed before hidden grading data existed but fail the current check. The list is also more useful for learning: short, readable solutions are shown above fast sample-fitted answers.
v7.0.11Jun 30, 2026
Fixed
  • Tasks that ask to sort "in descending order" accept a correct answer again: the grader no longer demands an unstated secondary sort (by domain, name or id) the statement never mentions. Fixed for several tasks (including "Most popular email domains") where it produced a false "wrong answer".
v7.0.10Jun 29, 2026
Fixed
  • The passed-interviews counter is back in the rankings: it showed 0 on the League tab and the per-difficulty boards even when the user had interviews.
  • The position-change arrow now shows on every leaderboard tab (League, weekly/monthly, per-difficulty), not just the all-time board.
v7.0.9Jun 29, 2026
Fixed
  • The glossary term tooltip inside the interview-question callout is no longer clipped by the card's edge — the full definition is now visible.
v7.0.8Jun 28, 2026
Fixed
  • A task's expected-answer preview now lists its columns in the order the task requires, not the internal storage order. Previously a column could show up last even though the task asked for it first.
  • In course lessons, an everyday word that happens to collide with a SQL term no longer triggers the glossary tooltip in plain prose — it lights up only where it genuinely refers to the database concept.
v7.0.7Jun 28, 2026
Fixed
  • Solution checking no longer rejects a correct answer over the order of tied rows. When a task asks you to sort by a column where several rows share the same value, any order among those rows is now accepted — previously a correct answer could fail with "same rows, wrong order".
  • The weekly summary email no longer says "0 this week" and "haven't practised in a while" to people who solve every day. The weekly count now includes every task solved in the last 7 days, including the re-solves that keep a streak alive.
v7.0.6Jun 27, 2026
Changed
  • The streak reminder no longer bothers people who already practise nearly every day: if you were active on most of the last 7 days, the evening email is skipped — you'll clearly be back anyway.
Fixed
  • Streak-reminder emails no longer go to people who stopped practising long ago. An abandoned streak used to keep its frozen day-count, so "your streak is at risk" was emailed every evening for months. The reminder now fires only while the streak can still be saved by solving today.
  • Fixed the database schema shown in several tasks: the trainer's right-hand panel displayed tables from an unrelated dataset (e.g. a hotels schema on the average-purchase task) and the data tabs were empty. The diagram now matches the task's actual tables.
v7.0.5Jun 26, 2026
Fixed
  • In the JOIN tasks (Yandex analyst dataset) the preview now includes a driver with no rides: on Run, a LEFT JOIN and an INNER JOIN now show a visibly different result — matching how grading works. Previously a wrong LEFT JOIN looked correct in the preview yet failed grading.
v7.0.4Jun 26, 2026
Added
  • The course program now shows the Power lessons grant: a note up top (+10 per lesson, +50 per module) and the total Power on each module card.
Fixed
  • The passed-interviews counter is visible again on the weekly and monthly leaderboard tabs (it showed 0 even though the profile had interviews).
  • Taking an interview on a task you had already solved no longer re-awards points: practising on familiar tasks is fine, but the Power bonus is granted only for a first solve in interview mode.
  • Weekly/monthly leaderboard Power now counts the Power earned from completed course lessons — the period tab used to ignore lessons, so the number disagreed with the profile.
v7.0.3Jun 26, 2026
Fixed
  • A deleted account no longer blocks re-registration: deleting a user now frees their email so it can be signed up again.
  • Social-login accounts can now set a password: “Forgot password?” works for accounts that never had one (previously it silently sent nothing).
v7.0.2Jun 26, 2026
Changed
  • Every reference article now gets its own social/preview image with the article headline, instead of one generic card shared across the whole site.
  • Cleaner mobile navigation: dropped the redundant section headers (“Trainer”, “Sandbox”) — menu items now read as one clear list.
Fixed
  • The “Table of contents” block in reference articles is now collapsed by default — a long list of sections no longer fills the entire first screen. Tap the heading to expand it.
  • Fixed two reference articles (ASCII/CHR and TO_TIMESTAMP): a copy-paste slip had them showing the EXTRACT(EPOCH) article instead. The correct content is back and rewritten in a clear, friendly voice — the three pages no longer duplicate each other.
  • Search-engine fixes (Google and Yandex): removed duplicate hreflang entries from the sitemap and added structured data to the blog index, so articles should index more cleanly.
v7.0.1Jun 26, 2026
Changed
  • Reference articles were rewritten in a warmer, beginner-friendly voice — smoother explanations, clearer examples, and natural language instead of machine-translated text.
  • Removed the collapsible “Главное из урока” recap: the storyline now reads inline in the lesson instead of hiding inside a collapsed block with a dry summary.
Fixed
  • The course button now says “Start the course” for newcomers — previously it offered “Continue” even at 0% progress.
  • When INSERT or DELETE is missing its keyword (INTO / FROM), the trainer no longer confuses you with a “wrong table name” error — it gently hints that a keyword is missing, without handing over the answer.
  • Removed the in-lesson “Практика” blocks that showed a task next to its ready answer. Practice now happens in the interactive tasks at the end of each lesson, where you write the query yourself.
  • On mobile, the inline term definition no longer runs off the screen edge and is more compact in size and font.
  • On mobile, scrolling with the menu open no longer makes catalog cards flash over the bottom of the drawer.
v7.0.0Jun 24, 2026

A full interactive SQL course is live — from your first SELECT to a complete analytics project.

Added
  • A SQL course is here: 12 modules from the basics (SELECT, filters, aggregates, JOIN) through advanced topics (subqueries & CTEs, window functions, data modification, schema design, transactions, EXPLAIN and indexes) up to a final analytics capstone. It packs story-driven theory with visual diagrams, live in-browser queries, hands-on practice after every lesson (solve it to unlock the next one), a master-check at the end of each module, and interview-question breakdowns.
Fixed
  • A premium subscription is no longer wrongly cancelled when a user's profile is edited in the admin panel — premium access stays until the paid period ends.
  • The “streak at risk” reminder email no longer arrives twice and now shows the correct day count.
  • Fixed several trainer tasks with imprecise wording and incorrect reference solutions (including “Average salary by department” and “Top bank clients”) — their statements are now unambiguous and match the grader.
v6.5.4Jun 23, 2026
Fixed
  • The trainer's error message no longer wrongly suggests "cap the result to the top N rows" when there are just a few extra rows because of an incomplete filter. In that case it now plainly says extra records got into the result, instead of misleading you toward a top-N limit the task never asked for.
v6.5.3Jun 23, 2026
Fixed
  • The track “Continue” button now opens the first unsolved task across all modules. Previously, once you finished the first module, it still dropped you on the very first task and you had to scroll past everything you'd already solved.
  • The “you might lose your streak” reminder is no longer sent if you already solved a task that day. The “solved today” check now respects your timezone instead of the UTC calendar day.
  • Fixed 502 errors when opening task and reference pages with very long URLs (slugs).
v6.5.2Jun 19, 2026
Fixed
  • View-creation tasks no longer reject correct answers: a view is graded by its result — its columns and rows — not by a verbatim match of the query text against the reference. Equivalent formulations now pass (e.g. DISTINCT instead of GROUP BY/HAVING, or a different join order).
  • Error messages are more accurate: instead of a wrong “rows are duplicating, add GROUP BY” (when grouping is already there and only the output cap is missing), the box now describes the real symptom — what is actually off about the result. Concrete fix suggestions come from the AI mentor.
  • The AI mentor no longer treats a different-but-equivalent approach as a mistake: it judges by the result, not by the shape of the reference solution, and won't tell you to rewrite a correct query just because the reference looks different.
v6.5.1Jun 19, 2026
Fixed
  • On the weekly and monthly leaderboards a player's hero and rank now match their profile: the actual lifetime rank is shown instead of one recomputed from the period's Power. The Power figure itself is labelled “week” / “month” so it isn't confused with lifetime Power.
  • Fixed grading for tasks that wrongly required a specific row order even though the statement never asked to sort: correct answers are no longer rejected with “same rows, but not in the right order” (e.g. “Captain or Guest”).
v6.5.0Jun 18, 2026
Added
  • The reference is now complete: every command and function has its own article — from SELECT and JOIN to window functions, JSONB, indexes and transactions. All articles are available in Russian, English, Spanish and Portuguese.
  • The reference now has “See also” cross-links: each command points to the ones you learn alongside it (ROUND ↔ FLOOR ↔ CEIL, percentile_cont ↔ percentile_disc, the JSONB and JOIN families) — making it easier to learn topics in groups.
  • Blog articles now have a table of contents with quick jump-to-section and anchor links, and the pages load noticeably faster. Added breadcrumbs and an “In the handbook” link to move between an article and its cheat-sheet entry.
  • Added an “About” page describing the platform.
  • Task schemas now explain their columns: hover the “?” next to a field to see what it means (e.g. “Purchase date”, “Order ID”). Descriptions were added to every column across all schemas and are tailored to each table's context.
Changed
  • The in-task cheatsheet now scales with difficulty: on medium and hard tasks the trivial items (SELECT, ORDER BY, LIMIT) are dropped so the list stays focused and shows only what's relevant.
  • Redesigned the reference: the tag cloud is replaced by a two-pane layout with a sticky category list on the left (icons and counts, with the current section highlighted as you scroll), and the cards read better — larger, higher-contrast descriptions and muted secondary links (“Article”, “See also”) that no longer overpower the content. “Reference” has also moved up in the sidebar, right under “Sandbox”.
  • Reworked the pricing page for subscribers: all plans are now visible with your current one marked, and the benefits and other billing periods are there to compare or switch to — instead of a brief “you already have premium” message.
  • The leaderboard now defaults to a weekly board: it resets every Monday so everyone has a reachable top instead of the same frozen leaders. Tabs run Week → Month → All-time, the podium shows on each, and the “your position” row works in any period. The All-time tab stays as the hall of fame.
Fixed
  • Proofread and corrected a number of factual inaccuracies in the English, Spanish and Portuguese versions of the reference articles (ascii() behaviour, CAST, time-zone DATE_TRUNC, rounding, JSONB and more).
  • Premium users are no longer bounced to the pricing page when opening a premium task (a brief network hiccup used to cause a false redirect that then said “you already have premium”).
  • Many fixes to the mobile reference: category tags now sit on a single scrollable row, code examples got colour syntax highlighting, the “Copy” button no longer overlaps the code, the “All” filter behaves correctly, the search field has a single clean focus ring, and code blocks adapt to light and dark themes. Also removed a stray grey line in the sidebar.
v6.4.0Jun 17, 2026
Added
  • Task URLs are now human-readable: instead of “/trainer/tasks/603” you get “/trainer/tasks/select-all-companies” — clearer and easier to share. Old numeric links keep working.
Changed
  • Redesigned the in-task navigation bar: a compact segmented “Prev · difficulty · Next” control (the task level is a coloured dot), the Mock Interview toggle sits next to the nav, and every button shares one hover style.
Fixed
  • “Next” no longer dead-ends on hidden exam-pool tasks with a “task not found” error — navigation now skips the exam pool.
  • Aligned the grey divider line between the task tabs (Task/Submissions/AI Mentor) and the query-editor tabs.
v6.3.3Jun 16, 2026
Added
  • Feedback rewards: a confirmed bug report or a useful suggestion earns you 1–7 days of premium. Hints now appear in the sidebar and on the Feedback page.
  • New trainer hint: when a subquery column silently binds to an outer table (a correlated reference) — e.g. a typo in the column name — we now show an amber warning. The query still runs exactly as written; nothing is blocked.
Fixed
  • The tasks list no longer flickers on load: cards now appear with the right numbers, order and counts immediately — no dashes or reshuffling, which had crept in after the performance pass.
v6.3.2Jun 16, 2026
Fixed
  • The “Final balance per account” task no longer rejects a correct solution. Its hidden grading data contained an undocumented transaction type that could make a valid query fail with a “same row count, different values” verdict. Grading now matches the task statement — only Deposit and Withdrawal.
  • The AI mentor no longer invents a non-existent error when a task is graded on hidden data: it reasons from the reference solution and honestly says when your query is correct on the visible data and the issue is an edge case — instead of a bogus breakdown.
v6.3.1Jun 12, 2026
Fixed
  • The Beast of Query on the trainer page is alive again: the card shows the rotating 3D model once more — after the load-time optimization it had been showing a flat image.
v6.3.0Jun 11, 2026

A big performance pass: pages and the task catalogue now load noticeably faster, especially on slow connections and mobile.

Changed
  • Load-time optimization: pages open faster, heavy parts (the editor, 3D beasts, images) load smarter, and data is delivered more compactly.
v6.2.1Jun 11, 2026

Fixed a sneaky results bug: with “SELECT *” over a JOIN, columns that share a name (e.g. two id columns) no longer get mixed up — on PostgreSQL and MySQL each column now shows its own value, and duplicates are qualified by table (Doctor.id, Appointment.id).

Fixed
  • Query results with duplicate column names (classically a “SELECT *” over a JOIN with two id columns): on PostgreSQL and MySQL the same-named columns no longer overwrite each other or drop data. Duplicates are now qualified by their source table (Doctor.id, Appointment.id), matching ClickHouse.
v6.2.0Jun 11, 2026

A big home-page and pricing update: a redesigned landing with the 3D Beast of Query, a Free tier that now includes every Easy task (interview easies included), and Premium available monthly — a one-time payment with no auto-renewal.

Added
  • A redesigned home page: a 3D Beast of Query hero, a proof strip with catalogue numbers, the same query compared across three dialects (PostgreSQL · MySQL · ClickHouse), the rank ladder, a PvP-duels teaser and an inline FAQ.
  • The Interview section is open to everyone: easy interview tasks are free to solve, while the harder questions are Premium.
  • Monthly Premium: pay for a single month (790 ₽ / $12) as a one-time charge — no auto-renewal. The longer the period, the cheaper each month: 3 months −38%, 6 months −58%.
Changed
  • The Free tier is reworked: every Easy-level task is now free forever (including easy questions from real interviews), while Medium, Hard and Expert tasks are Premium.
  • The pricing page copy now matches the current model, and a Pricing link is shown in the sidebar for users without Premium.
Fixed
  • The “delete bands with no upcoming tours” task (sa-55): the reference solution now removes child rows before parents, so a correct answer passes on the hidden data without a foreign-key error.
v6.1.1Jun 11, 2026

Sharper grading: on several tasks a sloppy answer no longer slips through — edge cases are now covered (one fan with several tickets, a rental that crosses the year boundary).

Changed
  • These tasks now grade against hidden data in MySQL and ClickHouse too — answers hard-coded to the sample numbers no longer pass.
Fixed
  • “Fans per concert” and related tasks: a fan holding several tickets to one concert is now counted once; a correct answer no longer needs an unstated sort to pass.
  • “Member spending in 2005” and the by-genre breakdown: the rule is now spelled out — count the full loan cost (daily_fee × days) even when the rental term ends in the following year.
v6.1.0Jun 11, 2026

New dialect — ClickHouse. 560+ tasks can now be solved on ClickHouse alongside PostgreSQL and MySQL.

Added
  • ClickHouse dialect: pick ClickHouse on a task, write and grade your solution against a live engine — just like PostgreSQL and MySQL. 560+ tasks are available on ClickHouse (catalogue, interviews, exam).
  • A ClickHouse filter in the task catalogue — quickly narrow the list to tasks to practise on CH.
Changed
  • The dialect switcher is now a clean dropdown showing the engine version (PostgreSQL 16 · MySQL 8.0 · ClickHouse 24) instead of a row of buttons.
  • Editor autocomplete and error hints now understand ClickHouse — its functions and types (countIf, groupArray, argMax, quantile, UInt/DateTime64/Array…) and the engine's error messages.
v6.0.2Jun 11, 2026

Fixed the false “Too many requests” error on solution submits and broken MySQL-dialect tasks.

Changed
  • Beast of Query for guests: instead of an Awaken button that could not work without signing in, you now see a blurred preview of the beast block with a sign-in prompt.
Fixed
  • Submitting solutions: the false “Too many requests, try again in N seconds” error on your very first submit is gone — the rate limit was mistakenly shared across all users at once and is now per-user.
  • MySQL dialect: 24 tasks (pharmacy, airline loyalty, hotel chain and more) failed with a server error before your solution was even graded — the hidden grading data carried PostgreSQL-only syntax. All of them are solvable again.
v6.0.1Jun 9, 2026

Beast of Query now loads in seconds on mobile instead of minutes, and the tasks page shows the beast instantly.

Added
  • Profile: you can now remove your photo — both manually uploaded ones and those pulled from Google / Yandex / GitHub. A initials tile is shown after removal.
Changed
  • Beast 3D models are optimized and now ~40× smaller — on mobile they appear in seconds instead of minutes.
Fixed
  • While a 3D model loads, a loading shimmer shows in its place; the beast card on the tasks page now shows the beast image instead of an empty square.
  • Leaderboard: the position and rank-change columns no longer collide on large numbers (3–4 digit ranks and deltas).
v6.0.0Jun 9, 2026

Beast of Query — your personal 3D companion that grows with your Power, and the leaderboard top-3 is now a live 3D podium.

Added
  • Beast of Query: every player now has a personal 3D monster. It changes form as your rank and Power grow, and its stats are built from the tasks you've solved. It shows up in the trainer, your profile and the leaderboard.
  • Leaderboard: the top-3 is now a live 3D podium — champions stand on a pedestal with their beasts (drag to spin the model), and #1 wears a crown.
  • Focus music right on the task page: a compact radio (lo-fi, Ambient, Synthwave, a Coding station and brown noise) under the DB schema — to help you concentrate.
Changed
  • New typography: a single Geologica typeface for headings and body, with built-in Cyrillic and offline loading.
  • Navigation: Exam moved up in the menu and the standalone Progress entry is gone — a Detailed progress button now lives on your card in the leaderboard.
  • Task titles: snippets in backticks now render as tidy monospace chips.
  • Mock Interview: session history now shows the strictness rules you chose and the Power bonus earned for each attempt; copy updated for the configurable strictness (0–50% bonus).
  • Rank ladder rebalanced: the Power threshold for every rank is doubled (Titan now starts at 40,000 Power). Your Power is unchanged — your rank simply recomputes against the new scale.
v5.3.1Jun 8, 2026

Wrong-answer hints are honest now: no more advice about a WHERE or JOIN your query doesn't even have.

Fixed
  • Wrong-answer hints no longer name clauses your query doesn't use (no "fix your WHERE" or "try LEFT JOIN" when you have neither) — the wording adapts to your actual SQL.
  • Tasks graded on a hidden dataset no longer show row or column counts that contradict the visible result table.
  • Clearer messages instead of internal/English grader text, and fewer false "sign in" prompts on an ordinary error.
v5.3.0Jun 8, 2026

Mock Interview is now configurable: pick your strictness and the Power bonus scales with it.

Added
  • Mock Interview: configurable strictness (no tab/focus switching, no pasting) plus duration. A Power bonus up to +50%, shown live as you choose. With no rules it's just timed practice — nothing auto-fails.
Changed
  • Free-tier AI mentor: 10 hints and error-explanations in total, not 10 per day. When they run out, a Premium upsell appears right in the hint panel.
Fixed
  • The interface language is auto-detected by country again on first visit.
  • After a Mock Interview pass the task is marked solved immediately and your Power updates — no need to press Submit again.
v5.2.0Jun 5, 2026

Every task is now solved by writing SQL — new task formats and catalog filters, plus new task packs.

Added
  • New task types: debugging, data-quality checks, index design, query rewriting, schema design with constraints, transactions & locking, and access permissions (GRANT/REVOKE).
  • New catalog filters: by task format, difficulty, solved status, dialect (PostgreSQL/MySQL) and favorites.
  • Permissions tasks are graded by the resulting privilege set (least privilege enforced).
  • Transaction tasks are graded under real concurrency: safe debits, atomic transfers, idempotency, isolation levels and row locks.
  • New task packs: ride-hailing analytics, data modification, schema design, recursive hierarchies and product events.
  • Your chosen SQL dialect (PostgreSQL/MySQL) now persists across tasks.
  • Most tasks now show a preview of the expected output.
  • Hundreds of new step-by-step hints, plus an AI mentor that explains the errors in your query.
Changed
  • Every format is now code-writing: you write real SQL instead of picking an answer.
  • Task descriptions are living business scenarios in Russian and English; difficulty levels recalibrated.
v5.1.3Jun 3, 2026
Fixed
  • AI task generation: descriptions now read as a real business scenario and no longer give away the solution — formulas, SQL function names and dry table listings are kept out of the text.
v5.1.2Jun 3, 2026
Changed
  • Company examples on the home page and in Premium are now locale-aware: the Russian site shows Russian employers, every other locale shows international ones (Tesla, Uber, Microsoft, Spotify, Meta) whose tasks we carry.
v5.1.1Jun 3, 2026
Fixed
  • Removed a stray privacy notice banner on the user profile page.
v5.1.0Jun 3, 2026

The interface now speaks every EU language — 21 new languages.

Added
  • Added 21 EU languages: German, French, Italian, Dutch, Polish, Romanian, Greek, Czech, Hungarian, Swedish, Danish, Finnish, Slovak, Bulgarian, Croatian, Lithuanian, Slovenian, Latvian, Estonian, Irish and Maltese. Pick one in the language switcher, or it is auto-detected from your country and browser language.
  • The "Report a bug" page became "Feedback" (now at /feedback) with two tabs — "Report a bug" and "Suggest an improvement". Improvement suggestions reach the team the same way bug reports do.
Changed
  • Profile settings now show the subscription end date, and the "one-time payment" wording has been removed.
  • The language picker dropdown is now more compact.
Fixed
  • Profiles open from the leaderboard again for signed-in users — privacy hides a profile only from anonymous visitors. The profile URL handle can no longer be cleared, so every profile stays reachable by link.
v5.0.1Jun 1, 2026
Fixed
  • Paying with a foreign card (the Visa/MC tab) on the Russian site is now correctly priced in USD and processed via Paddle, instead of opening YooKassa with a ruble amount.
v5.0.0Jun 1, 2026

Certification: pass a timed exam and earn a verifiable level certificate.

Added
  • Certification exams: three levels (Foundations / Practitioner / Expert), 8 tasks each, a per-task timer, pass mark 7 of 8. Each attempt is served its own dataset, so answers cannot be memorised in advance.
  • A verifiable certificate with a QR code that links to your public profile; a certificates section now appears on the profile.
  • Delete your account right from the profile settings.
Changed
  • Profile settings were redesigned in a clean sectioned-list style; Premium users get an animated ring around their avatar.
v4.1.11May 29, 2026
Changed
  • Grading hardened on 324 tasks: it now runs on a hidden dataset, so you can no longer pass by fitting the visible example.
v4.1.10May 29, 2026
Changed
  • Editor autocomplete now suggests CTE names declared via WITH when you type FROM/JOIN.
v4.1.9May 29, 2026
Changed
  • AI Mentor now sees your error and current query even after Run — a new "Explain my error" button lets you discuss any error, including syntax errors.
v4.1.8May 29, 2026
Changed
  • Task #91: grading now runs on a hidden dataset — you can no longer pass by fitting the visible example (e.g. via LIMIT or a hardcoded length).
v4.1.7May 26, 2026
Changed
  • Task #13: removed the give-away filter hint from the prompt — you now derive the solution yourself.
v4.1.6May 23, 2026
Changed
  • The Skill Map now covers every task category (added CTE, DDL, transactions, optimization) and is bigger and easier to read.
Fixed
  • The Skill Map "what to improve" hint now points at the topic with the most unsolved tasks instead of a random one.
  • The yearly activity graph shows full month names again instead of clipping them to a single letter.
v4.1.5May 23, 2026
Fixed
  • Solutions returning a time interval (e.g. the difference of two times) no longer error on submit.
v4.1.4May 21, 2026
Fixed
  • Task #88: data fixed — Paris departures now have distinct durations instead of three identical rows.
v4.1.3May 20, 2026
Fixed
  • Undo (Ctrl+Z) in the editor now keeps separate history per query tab.
v4.1.2May 20, 2026
Changed
  • Task #624: the prompt now states that the average price must be rounded to 2 decimal places.
Fixed
  • SQL editor suggestions no longer duplicate after navigating between tasks.
  • Task #621: clubs with no members now appear in the result with zero revenue.
v4.1.1May 20, 2026
Changed
  • Task #831 difficulty changed from EXPERT to MEDIUM.
v4.1.0May 16, 2026

SQL Arena is now multilingual: English, Spanish and Portuguese, each with its own page URLs and automatic region detection.

Added
  • Language switcher: Russian, English, Spanish (Spain and Latin America) and Portuguese.
  • On a first visit the site opens in the language of your region, and your choice is remembered.
  • Each language has its own page URLs (/en, /es, /es-419, /pt-br) that are safe to share.
  • Premium checkout in your local currency: RUB, USD, EUR or BRL depending on the region.
Changed
  • The English site is fully supported; Spanish and Portuguese translations are rolling out.
v4.0.11May 18, 2026

Table-creation tasks accept any valid form, error hints are now relevant, and one task with an ambiguous answer was fixed.

Fixed
  • The "most popular course pair" task: the sample data allowed several equally valid answers while the grader accepted only one. The task now has a single correct answer.
  • CREATE TABLE tasks rejected a correct solution when the learner named a constraint (e.g. CONSTRAINT ... PRIMARY KEY). Grading now compares the table structure — constraint names are ignored.
  • A failed table-creation task showed an irrelevant "add ORDER BY" hint. The hint is now on point — about columns, types, NOT NULL and keys.
v4.0.10May 17, 2026

Data-mutation tasks are solved exactly as the prompt says — no undocumented verifying SELECT.

Fixed
  • INSERT/UPDATE/DELETE and transaction tasks (including UPSERT, MERGE, SKIP LOCKED) no longer demanded an undocumented verifying SELECT. They are now graded by the resulting table state, and the task page shows a "no trailing SELECT needed" note.
  • Top solutions: staff accounts no longer appear in the list — matching the public leaderboard.
v4.0.9May 17, 2026

Table- and index-creation tasks are now solved exactly as the prompt says — no undocumented SELECT; the live leaderboard refresh works again.

Fixed
  • DDL tasks (CREATE TABLE, ALTER, CREATE INDEX, foreign keys) no longer demanded an undocumented verifying SELECT. They are now graded by the resulting database schema, and the task page shows a "no trailing SELECT needed" note.
  • Leaderboard page: live refresh restored — the leaderboard WebSocket connection no longer fails.
  • Schema diagram: some tasks showed no links between tables — foreign-key arrows now appear on the diagram.
  • The "Correct!" dialog no longer shows a rank drop as an upward promotion — the rank badge appears only on a genuine promotion.
v4.0.8May 16, 2026

CREATE / ALTER TABLE tasks and other multi-step solutions can be submitted again — the per-submission statement limit was too strict.

Fixed
  • The per-submission statement limit was raised from 3 to 20: DDL tasks (CREATE TABLE, ALTER, indexes, triggers) and multi-step DML are no longer rejected with a "too many statements" error.
v4.0.7May 16, 2026

The MySQL variant of catalog tasks is back in sync with PostgreSQL — some MySQL tasks were graded against stale data.

Fixed
  • The MySQL variant of hundreds of tasks ran on a stale dataset — seeds resynced, the MySQL answer matches PostgreSQL again.
  • Six tasks that worked only in PostgreSQL now have a working MySQL variant.
  • CREATE TABLE / CREATE INDEX / ALTER tasks are graded by the resulting table schema — a wrong structure is no longer accepted as correct.
  • INSERT tasks using CURRENT_TIMESTAMP / NOW() no longer reject a correct answer over a run-time difference.
  • Example outputs that accidentally revealed the exact answer are replaced with non-spoiler samples; row order is enforced where a task requires it.
  • A catalog-wide audit realigned the prompt, the grading data and the reference solution across several dozen tasks where they had drifted apart.
v4.0.6May 16, 2026

Fixed grading of multi-statement solutions — a DELETE/UPDATE with a final SELECT is now graded correctly.

Changed
  • Dates and times in query results now display cleanly as 2024-01-15 08:00:00 instead of the technical ISO format.
Fixed
  • DML tasks (DELETE, UPDATE, INSERT) with a verifying SELECT no longer reject a correct answer as "extra columns".
  • Task #768: the prompt now matches the graded answer.
  • The wrong-answer hint no longer suggests comparing against the example block, which is intentionally not exact.
  • Pure UPDATE / DELETE / INSERT tasks are now graded by the resulting table state — a wrong mutation is no longer accepted as correct.
v4.0.5May 16, 2026

Fixed five tasks where the prompt text did not match the schema and answer.

Fixed
  • Tasks #762, #763, #764, #765, #809: prompt rewritten to match the actual schema and expected answer.
  • AI task generation, AI Mentor, and the bug-report form: on rate-limit they now show "retry in N seconds" instead of "ThrottlerException".
v4.0.4May 15, 2026

Fixed task #17 — the grader returned NULL due to a schema bug.

Fixed
  • Task #17 (average-post-hiatus): schema aligned with the seed, grader works again.
v4.0.3May 15, 2026

On the "Move old rows to archive in one go — race-free" task (#789), the prompt asked for a customer_id column that doesn't exist in the schema. The wording is now aligned with the actual schema and grader: id, status, amount.

Fixed
  • Task #789 (hard-cte-atomic-archive): the description mentioned a non-existent customer_id column. The wording now matches the orders / orders_archive schema and the expected columns id, status, amount.
v4.0.2May 15, 2026

"Too many requests" message now shows the exact limit and seconds-until-reset instead of the cryptic "ThrottlerException". Server-side rate-limit raised so fast track navigation no longer hits the ceiling.

Changed
  • Server-side rate-limit on regular API requests raised 5×. Fast back-and-forth between tasks within a track (10+ parallel mount fetches) no longer hits the ceiling and 429s.
Fixed
  • When rate-limited on Submit or Run, the message now shows the actual limit and exact seconds-to-retry. Previously only the cryptic "ThrottlerException: Too Many Requests" surfaced with no waiting hint.
v4.0.1May 14, 2026

"Start" on the track card actually starts the track again — an invisible card-link overlay was eating the click and routing it to the track detail page.

Fixed
  • On /trainer/tracks, the "Start" button on a track card no longer navigates to the track detail page instead of starting the track. Click-anywhere-on-card → details is preserved.
v4.0.0May 13, 2026

SQL sandbox: bring your own tables and queries — no task, no grading. Plus a unified wide bento layout across leaderboard, progress, tracks, tasks, and sessions.

Added
  • New /sandbox page — Monaco editor, schema panel, result panel, per-table data tabs, warm-up snippets. Anon sessions idle out after 30 min, signed-in users get 7 days.
  • Saved fiddles: up to 5 on free, unlimited on Premium. Library with search, copy-link, delete, and privacy toggle.
Changed
  • Unified wide layout across personal-space pages — My Fiddles, Progress, Leaderboard, Sessions, Tasks, Tracks, and the track-detail page now share one shell with a gradient hero and a consistent card grid.
v3.0.4May 13, 2026

The position-change arrows on the leaderboard are back — previously the column was empty because there was no baseline snapshot to diff against.

Fixed
  • The "climbed / dropped / no change" indicator is back next to each row on the leaderboard. The previous-week baseline snapshot was seeded; the regular weekly cron will keep refreshing it.
v3.0.3May 13, 2026

Fixed a bug where re-submitting an already-solved task silently removed Power — the "first-try" bonus got erased. All affected users have had their Power recalculated.

Fixed
  • Re-submitting a solution for an already-solved task no longer wipes the "first-try" bonus — the Power for that task stays the same as right after the first successful submit.
  • Task #107 (book-genre spend breakdown for 2005) no longer requires a specific row order — any ordering is now accepted, matching the wording of the problem statement.
v3.0.2May 12, 2026

Fixed the DB schema panel on several tasks — the orange relationship lines between linked tables were not being drawn.

Fixed
  • On some tasks the "Schema" panel didn't show the relationships between tables (the orange 1:N arrows) — the missing relationships were added to the datasets.
v3.0.1May 12, 2026

Fixed the "Split customers into low / mid / high spenders" task: the sample answer and the reference solution had drifted away from the prompt — now everything uses the customer id and the low / mid / high segments.

Fixed
  • Task "Split customers into low / mid / high spenders" (#757): the sample answer and the reference solution now match the prompt — columns customer_id, segment, segments low / mid / high, ordered by customer_id.
v3.0.0May 12, 2026

A big "Arena" rebrand: a new homepage, a from-scratch leaderboard with a podium and live updates, points renamed to "Power" with a battle-axe brand mark, learning tracks rebuilt, and adaptive AI task generation that actually reads your recent submissions.

Added
  • A new "League" tab — the 30 users closest to you by Power. Difficulty filters on the global tab (Power recomputed per ladder). Climb / drop arrows next to each position — week-over-week movement.
  • Achievements: emoji replaced with vector icons tinted by category, browser tooltips show localised names; on /stats it's a grid with tap-popovers on mobile. New "10 Expert" achievement.
  • Hover a name on the leaderboard for a mini user-card. A "Share rank" button — the link points to your public profile with an OG preview.
Changed
  • Homepage rewritten under the "Arena" brand: a punchy "Sharpen SQL. Take the offer." headline, a live scoreboard in the hero, a rank ladder with a "You" pin, sections on the trainer / tracks / AI / interview mode / progress, and a closing "The axe is in your hand. Swing." band. Mobile-ready.
  • Points renamed to "Power". The lightning bolt is replaced with a battle-axe — now the logo, the favicon, and the link-share preview.
  • The leaderboard page was rewritten from scratch: a top-3 podium (gold / silver / bronze), a personal progress card with a bar to the next rank, a single sticky filters bar, the rank ladder right under the header, a pinned "you" row when you're outside the top 50, and live updates — the table reacts smoothly to other people's solves with no reload.
  • Learning tracks rebuilt. Analyst / Backend / QA / Data Engineering — ~50 curated tasks each: a few representatives per topic×difficulty cell, warm-up to EXPERT, weighted toward real-interview problems. Added a Data Engineering track plus a dedicated interview-prep track.
  • The "Generate for me" button is now genuinely adaptive: it reads your last 40 submissions, picks the topic with the worst recent accuracy, and calibrates difficulty to your level — stalling drops the next one a notch, a streak bumps it up.
  • New visitors land on the "Night" theme by default (previously "Evening"). If you've already picked a theme, your choice is kept.
Fixed
  • Task "Say in one number: how many active customers" — the canonical solution required customers with ≥2 paid orders while the description says "at least once". Fixed to match the description.
v2.4.5May 12, 2026

EXPERT tasks now grant a real 75 power per solve (up to 281 with bonuses) instead of the EASY-tier 10. Lifetime power for users who already cleared an EXPERT has been recomputed retroactively.

Fixed
  • The reward table had no row for EXPERT, so the grader fell back to a default of 10 and every EXPERT task paid out the same as an EASY one. EXPERT base is now 75 power, with the same multipliers stacking on top (first-try ×2, Mock-Interview pass ×1.25, premium solve ×1.5) — up to 281 power per EXPERT task. A migration replayed xp_total for every profile under the corrected rules, so anyone who had already solved an EXPERT picks up the missing power automatically.
v2.4.4May 12, 2026

Closed the loophole where a task could be "solved" by hardcoding the sample output: on 25 datasets the grader now checks your query against hidden rows that differ from the ones shown in the task description.

Changed
  • Solutions still run against the same tables and columns as before, but the rows inside the grading seed differ from the visible sample. Any genuine query-based answer keeps passing, while a hardcoded SELECT … UNION ALL … that copied the sample literals now grades as "wrong". 25 datasets across the latest catalogue batch are covered (lists, CTE, window, pivot, DML, expert).
v2.4.3May 9, 2026

Patched two learner-reported task issues: the misordered sample in "Students by region" and the description that drifted away from the schema in the net-revenue task.

Fixed
  • Task "Students by region" (#357): the sample now ascends by rn (Jack / Kim / Lars in the first row), and the reference solution carries an explicit ORDER BY rn so it produces the same order.
  • Task "Users with net revenue of at least 100" (#783): title and description now match the actual data — users and purchase/refund events, not products and sale/refund, with a threshold of 100, not 1000.
v2.4.2May 9, 2026

Six advanced tasks now ship a pre-seeded table — solutions no longer start with a CREATE TABLE preamble.

Changed
  • Six Hard / Expert tasks (single- and multi-column UPSERT, CTE with RETURNING, bulk INSERT … RETURNING, SKIP LOCKED queue, array unfolding via UNNEST) joined the rest of the advanced catalogue: the table is created and seeded in the dataset, and the solution holds just the operation under test plus a final SELECT for grading.
Fixed
  • The "View counter" task description no longer drifts away from the expected output: both now describe the same counters(id, count) table and five runs of the same row.
v2.4.1May 9, 2026

DDL tasks no longer show unrelated tables in the side schema panel.

Fixed
  • On 10 CREATE TABLE tasks (from easy to expert) the side schema panel was rendering tables from an unrelated dataset — e.g. an articles task showed orders. The panel is now empty, as it should be when a task asks you to build the table from scratch.
v2.4.0May 9, 2026

115 new tasks, tri-mode Day / Evening / Night theme switcher, and a softer dark palette.

Added
  • The catalogue grew by 115 tasks: 20 easy, 35 medium, 45 hard, and 15 expert — subqueries, CTEs, window functions, DML/DDL, MERGE, query optimization, transactions, JSONB, recursion, and LATERAL.
  • New «Expert» difficulty tier with a violet badge and its own filter in the catalogue.
  • Tri-mode theme switcher: Day (light), Evening (soft dark), and Night (deep) — pick by ambient light to ease eye strain.
Changed
  • Dark theme softened: the canvas moved to a Linear-style gray-blue (#1B1B1F) instead of the previous near-black, primary text dropped to zinc-300 — less halation on long sessions.
  • In «Night» mode the SQL editor pane sits three steps deeper than the canvas with a slight push toward true black — reads as a recessed panel in the same family.
  • The in-task topic cheatsheet is now difficulty-aware: on Hard / Expert tiers it hides basic SELECT/WHERE/ORDER BY/LIMIT and surfaces advanced patterns instead — STRING_AGG, ARRAY_AGG, GROUPING SETS, LATERAL, JSONB, partial indexes, and so on.
  • Active difficulty-filter pills switched to a brand-accent soft-fill instead of solid black — they no longer break the light theme's look.
  • Russian difficulty labels: «Лёгкое» → «Лёгкий», «Среднее» → «Средний», «Сложное» → «Сложный».
v2.3.0May 8, 2026

24 new beginner blog articles.

Added
  • Topic coverage expanded: DML (INSERT/UPDATE/DELETE), DDL (CREATE TABLE/ALTER TABLE), aggregates, DISTINCT, NULL handling (CASE WHEN/COALESCE/NULLIF), CTEs and subqueries, window functions, string and date.
Changed
  • Trainer cheat sheet: each item now points to its own article. Previously the four window-function items linked to a single overview — ROW_NUMBER, RANK/DENSE_RANK, PARTITION BY, and LAG/LEAD each now have their own.
Fixed
  • Task #114 "How many cardiology wards" — renamed the expected output column from count to wards_count so it no longer collides visually with the reserved keyword.
v2.2.2May 8, 2026

Closed the answer-padding loophole: tasks now grade against a hidden dataset.

Changed
  • The grader can now run a task against a hidden dataset. The canonical reference is recomputed on the same data, so correct solutions still pass while constants borrowed from the visible sample fall through.
Fixed
  • The "Oldest club member" task no longer accepts a hardcoded LIMIT matched to the visible sample — only a query that expresses "all rows with the minimum birth date" passes.
v2.2.1May 8, 2026

Pricing-card polish and "Sign in & subscribe" button fixes right after v2.2.0.

Changed
  • Price and CTA button in the Free and Premium cards now line up at the same Y.
  • Trimmed the price footnotes for Crypto and Visa/MC — only the rails name remains.
Fixed
  • The "Sign in & subscribe" button is clickable again for signed-out users.
v2.2.0May 8, 2026

Added crypto and international Visa/Mastercard payments, plus tightened anti-bot defences on the auth flow.

Added
  • Crypto payments via NowPayments — BTC, ETH, USDT and others. $21 quarterly / $28 semi-annual.
  • International Visa/Mastercard via Paddle with automatic VAT/sales tax. $21 / $28.
  • Payment-method picker on the Premium card: RU card, Crypto, Visa/MC. Currency switches per method.
  • Cloudflare Turnstile on login and register — invisible to humans, blocks bots.
Changed
  • Account locks for 15 min after 5 wrong passwords (exponentially up to 24 h) with an explicit countdown.
  • Login and register errors are humanised — no more raw "Forbidden" or "Invalid credentials".
  • Submission rate limit: 5/min, 30/15min per user. Doesn't affect real solve sessions.
Fixed
  • After login we return to the page you came from — including OAuth (Google, GitHub, Yandex).
  • Logging out from a public page no longer kicks you to the home page.
v2.1.8May 7, 2026

Finished the Telegram, GitHub, and LinkedIn save fix on the profile page. The previous release fixed the username normaliser on the backend, but the front-end component was short-circuiting onBlur — the PATCH never actually fired. The field visually accepted input, the server stayed empty, and after a reload the field was blank. Now the blur comparison uses the value captured at focus-time, not the in-flight input.

Fixed
  • The Telegram, GitHub, and LinkedIn fields on the profile page now save again. A useEffect was overwriting the "last-saved" ref on every keystroke, so the onBlur check compared the current value to itself and skipped the PATCH. The blur check now compares against a snapshot taken at focus-time.
v2.1.7May 7, 2026

Fixed saving Telegram, GitHub, and LinkedIn handles on the profile page: typing the placeholder format like t.me/username was being chopped down to garbage like t.me. Now any input — bare handle, @handle, t.me/handle, or https://t.me/handle — normalises to a clean username.

Fixed
  • The Telegram, GitHub, and LinkedIn fields on the profile page now save correctly when the address is typed without https://. Previously t.me/durov was stored as t.me, github.com/octocat as github.com, because the normaliser required an http(s):// scheme and otherwise cut the value at the first slash.
v2.1.6May 5, 2026

Removed the false-positive premium upsell banner in the solve-result panel: it triggered on free tasks and even for premium users. It was dead UI to begin with — premium tasks are blocked at task open, so the editor never sees them.

Changed
  • In the "Correct!" celebration modal the "+50% Power per solve — go Premium" pill now has proper horizontal padding — the crown and chevron no longer touch the pill edges.
  • AI Mentor now receives compact task context: active SQL dialect, tables, relationships, expected columns, sample output, and the latest grading diff. Reference SQL is used only as private context for error explanations and later hint tiers.
Fixed
  • The "Interview tasks — Premium" upsell banner is gone from the feedback panel. Previously any server-side error containing the word premium in its stack trace (e.g. a missing solved_as_premium column right after a migration) tripped a substring match and rendered the upsell — even on free tasks and even for premium users.
v2.1.5May 5, 2026

Premium now grants +50% Power per solved task — the boost sticks to the task forever, even after the subscription expires. AI Mentor no longer dumps the solution on the first hint and now escalates help on a per-task basis. Also dropped the starter -- Click ▶ Run comment from the first-task editor.

Added
  • Premium subscription grants a ×1.5 Power multiplier on every solved task. The boost is locked in at the moment of solve, so it stays in your total even if the subscription later expires.
  • The "Correct!" celebration modal now shows an upgrade nudge for free users right under the +Power chip: "Get +50% Power per solve — go Premium", linking to /pricing.
Changed
  • AI Mentor now escalates hints per task. The first request gets a direction-only nudge with no operator names; requests 2-4 add concept and category; from request 5 the mentor may name LIKE / WHERE / GROUP BY directly. Counter resets every 24 hours.
  • Wrong-answer explanations now follow the same hint tiers as plain hints — they no longer reveal specific operators on the very first failed submission.
Fixed
  • Closed the remaining SQL-task audit findings: fixed the Tournament Winners reference, aligned TIMESTAMP previews on several tasks, and restored the PostgreSQL variant for one AI task.
Removed
  • Removed the starter comment -- Click ▶ Run — see what's in this table from the first-task editor. Opened tasks now start from a blank editor.
v2.1.4May 5, 2026

Reworked the task catalogue filters: status became a 3-state segmented control (All / Unsolved / Solved) defaulting to Unsolved, added a dialect filter, topic and company chips now show their current task count, active filters surface as removable pills with a "Reset all" affordance.

Added
  • Dialect filter in the catalogue: All / PG / MySQL — its own segment next to the status control.
  • Topic and company chips now show how many tasks match: "Windows (43)", "Tinkoff (5)". Chips with zero tasks fade out.
  • Active-filter pills row: every applied filter (search, difficulty, status, dialect, favourites, topic, tag, company, region) renders as a removable pill; "Reset all" snaps everything back to defaults.
Changed
  • Task-status filter is now a 3-state segmented control (All / Unsolved / Solved), defaulting to Unsolved. Replaces the single "Hide solved" toggle.
  • Sort control moved to the top bar — previously buried at the bottom and hidden behind scroll.
  • Favourites toggle moved to the top filter bar — now sitting next to the other binary toggles.
Fixed
  • Filter badge no longer reads "1" out-of-the-box — the default "Unsolved" view is not counted as an applied filter.
v2.1.3May 5, 2026

Catalogue-wide audit: grader no longer rejects correct answers because of DATE-vs-TIMESTAMP serialisation, sample previews on 60+ tasks now match what the reference solution actually returns, and 5 tasks using CURRENT_DATE / NOW() are pinned to a fixed reference so previews stop drifting day-by-day. Plus a description fix on the monthly-transactions task from a user bug-report.

Fixed
  • Grader: added date-as-timestamp normalisation (2024-01-01T00:00:00.000Z2024-01-01) — correct answers stop getting "row count matches, contents differ" because of return-type formatting.
  • Task "Monthly transactions and chargebacks": description now clarifies that a chargeback belongs to the original transaction's month, not the refund date; preview shows first-day-of-month dates instead of TZ-shifted ISO timestamps.
  • Regenerated sample previews on 60+ tasks: numeric formatting (100100.00), timezone display (+03+00), DATE-as-TIMESTAMP, INTERVAL-as-object — preview now matches what the live runner returns.
  • Five tasks using CURRENT_DATE / NOW() / CURRENT_TIMESTAMP in their seed (#170, #601, #602, #668, #693) are now pinned to 2026-05-05 12:00:00 UTC. Previews stop drifting.
v2.1.2May 4, 2026

Reworked the blog: search, navigation by 10 sections, first 7 beginner tutorials. Command names in the in-task cheatsheet are now clickable links to articles. The releases page got a version tree with scroll-spy.

Added
  • Blog: search across titles, content, and tags + left section sidebar. Active section highlights on scroll.
  • Blog: 7 first beginner tutorials — SELECT … FROM, WHERE, ORDER BY, LIMIT, INNER JOIN, LEFT JOIN, aliases.
  • In-task topic cheatsheet: command names are now blue links to the matching blog tutorial — open in a new tab.
  • Releases page: left-side version tree grouped by major.minor; clicking scrolls to the version and updates the hash anchor.
  • "Copy SQL" button on every row of the Submissions tab.
Fixed
  • Russian plural agreement everywhere: "221 задача", "2 задачи", "5 задач" instead of the old "221 задач".
  • In-task topic cheatsheet no longer jitters when expanded — scrollbar track is now reserved.
  • Markdown tables in blog articles now render as HTML tables instead of a single plain-text line.
v2.1.1May 4, 2026

Catalog-wide quality sweep: 23 unrunnable tasks repaired, 66 English descriptions rewritten, descriptions and sample previews aligned on a few dozen more. Plus one user-reported fix.

Changed
  • Sample previews on 50+ tasks now match what the reference solution returns.
  • Collapsed duplicate company tags in the task filter chips.
Fixed
  • Repaired 23 tasks (pharma-*, loyal-*, hotel-*, qa-*) that could not be solved due to a schema/seed mismatch.
  • Rewrote English descriptions on 66 lc-* / lc2-* tasks that previously shipped a stub or fragment.
  • Task "Rooms Booked on September 2, 2019" no longer accepts the wrong answer.
  • Ten tasks where the description disagreed with the reference solution are now consistent.
  • Seven Tochka tasks shipped someone else's problem statement — rewrote them.
v2.1.0May 4, 2026

69 new tasks pulled from real Russian-market job interviews (Yandex, Tinkoff, Sber, VTB, Alfa, VK, Ozon, Avito, Magnit, Samokat and 23 more companies) — built around the wider PostgreSQL type universe: UUID, JSONB, ENUM, INTERVAL, TSTZRANGE, INET, NUMERIC and POINT. Plus key fixes from user reports and a "What's new" red-dot indicator in the sidebar.

Added
  • 69 new tasks taken from real interviews at Russian companies. 33 employers: Yandex, Tinkoff / T-Bank, Sber / SberMarket, VTB, Alfa-Bank, Gazprombank, Rosbank, Sovcombank, MTS / MTS Bank, Otkritie, Renaissance Bank, Megafon, VK, Ozon, Avito, Magnit, Lenta, Wildberries, Cian, ivi, Delimobil, Aviasales, Samokat, Domclick, Lesta, Skypro, Uchi.ru, Sravni.ru, Vizor, CloudReports and Yandex Practicum. All tagged Interview, accessible to Premium.
  • Rich PostgreSQL types in task schemas. Most tasks used to be INT + VARCHAR(100) — fine for textbook examples, far from production. The new tasks introduce UUID for client and order PKs, NUMERIC(15,2) for money and NUMERIC(12,4) for FX rates, TIMESTAMPTZ for events, INTERVAL for call and session durations, TSTZRANGE / DATERANGE / NUMRANGE for SCD2 histories and validity windows, JSONB for metadata and event payloads, ENUM (with explicit CREATE TYPE) for statuses and categories, INET for IPs in antifraud tasks, POINT for GPS coordinates, TEXT[] / INTEGER[] for tags and ID arrays. So the trainer exposes you to the same types you'll meet in production.
  • Red dot indicator on the "What's new" sidebar entry — appears when a new release has shipped that you haven't opened yet. The dot disappears after one visit to /releases (the flag lives in this browser's localStorage). Previously the indicator only existed in the top navbar; in sidebar-only layouts it wasn't reachable.
Changed
  • Proper rendering of the new types in the query result table. Previously JSONB, INTERVAL and POINT columns rendered as "[object Object]" and arrays (TEXT[], INTEGER[]) collapsed to comma-joined strings — the structure was invisible. Now JSONB and arrays render as readable JSON, INTERVAL as 1d 02:30:00, POINT as (x, y). Booleans and UUIDs keep their text rendering.
  • ER diagrams on the task page got palette entries for the new types: UUID violet, JSONB yellow, INTERVAL purple (same family as other date/time types), TSTZRANGE / DATERANGE / NUMRANGE pink, INET cyan, POINT pink, custom ENUMs rose. Previously these types fell through to the default grey and were indistinguishable from plain INT / VARCHAR.
  • The six fixed tasks above also got an enriched schema in the same style as the new interview set: UUID primary keys, JSONB payloads, ENUM types for sex / categories / statuses, NUMERIC(15,2) in place of INT for salaries and prices, INTERVAL for durations. Task wording was slightly adjusted to motivate the new types, but the underlying problem is unchanged. This is the first step in upgrading older tasks — more in upcoming releases.
Fixed
  • Fixed a handful of older tasks reported by users. "Project Employees II" — the ER diagram showed Employee + Department instead of Project + Employee, while the underlying schema was correct; brought the diagram in line. "Reported Posts" — the description didn't spell out that the report reason lives in the extra column: now it does. "Sales Analysis I" — the reference solution used SUM(price) even though the schema has a quantity column, which was confusing; reframed as SUM(quantity * price), closer to real-world revenue. "Swap Salary" — the task was wired to the wrong dataset (Employee + Department instead of Salary(id, name, sex, salary)), making it unsolvable; relinked to the canonical dataset. Same silent ER drift in "Project Employees III" and "Reported Posts II" got the same fix.
v2.0.0May 3, 2026

Major release: a new left-sidebar navigation, the strict Mock Interview mode with a +25% Power bonus, public profiles and friends, email notifications, brand-coloured company tags, extra filters and a partner-courses block. Plus an important cross-account privacy fix and dozens of UX polish items.

Added
  • Partner-course block. On the tasks page (wide screens) a right-hand column shows a curated set of partner courses; on mobile it's a horizontal carousel above the list. Cards link out to partner landing pages with UTM tags — for us, a way to keep the subscription price down by covering infrastructure costs.
  • New Mock Interview mode — a strict simulation of a real interview. Any single violation (tab switch, paste, fullscreen exit, > 1-second window blur) auto-fails the session. Hints, AI Mentor and cheatsheet are hidden and locked. Durations: 5 / 10 / 15 / 30 / 60 minutes. Free tier — 1 attempt per day; Premium — unlimited. While a session is live the surrounding navigation (sidebar, "Tasks", "Top solutions", "Next task", "Leave track", Prev/Next/Random) is locked down — the only way out is the explicit "End" button or closing the tab (which auto-abandons the session).
  • +25% Power for every task cleared in Mock Interview mode — the bonus is per-task and flagged on the post-session report. The leaderboard now has an informational "Mock" column (same count shown on the profile card and on /u/<username>); it does not affect Power-based sort order.
  • Public profiles at /u/<username>: pick a short handle and flip the public toggle — any anonymous visitor sees your rank, Power, current streak, achievement count, activity heatmap and GitHub / Telegram / LinkedIn links. No private data exposed.
  • Friends: add users by their public handle, manage incoming and outgoing requests, see a dedicated friends-leaderboard tab with their Power, streak and tasks-solved.
  • Favourites: every task card now has a star — click it and the task lands in the "Favourites only" filter. The list lives on the server tied to your account and survives browser switches.
  • Email notifications (toggles in profile). "Save your streak" — evening reminder when your streak is ≥ 3 days and you haven't solved anything today. "Weekly digest" — Saturday morning recap with last week's solved tasks, current streak and weakest category.
  • Premium users are visually flagged wherever avatars appear: a holographic gradient ring (leaderboard, friends, profile, sidebar, public /u/<username> page); a small Crown badge in the corner on large avatars. Does not affect sort order.
  • Brand-coloured company tags on task cards: yellow for Yandex / Tinkoff / Beeline, green for Sberbank / Spotify / OpenAI, blue for VK / Ozon / Google / Meta, red for MTS / Alfa / Tesla, purple for Stripe / Skypro / Wayfair, orange for Amazon / Alibaba and so on. Previously every tag was a single purple.
  • Extra SQL-clause chips in the "Topic" filter on the tasks page: alongside the 8 broad categories (SELECT, JOIN, subqueries, window, aggregates, CTE, DML, DDL) you can now toggle GROUP BY, COUNT, HAVING. Mix them with categories for sharper filtering.
  • The "DB Schema" panel on the task page can now be collapsed. The toggle next to the task title hides the column and frees up width for the editor and result table. The collapse state is remembered per browser, so the schema opens the same way on the next task.
  • 8 new interview tasks from Tochka — ranging from EASY to HARD. CRM scenarios (find clients with an active application), portfolio calculations (structure, weighted-average maturity, value dynamics), bond queries with window functions. Solutions for both PostgreSQL and MySQL.
  • Blog section at /blog. Long-form tutorials — kicking off with a window-functions deep dive. Bilingual content, slug URLs, OG cards for social sharing. Reachable from the footer and the bottom of the sidebar.
  • Custom 404 page. The old Next.js default rendered black-on-white text — invisible in dark mode. The new page uses theme tokens and lives inside the shared shell, keeping navigation in reach.
Changed
  • Navigation redesigned. For signed-in users inside the app the primary nav has moved to a left sidebar — Trainer, Progress, Leaderboard and the other sections live there, with Power + streak under your avatar and language/theme toggles at the bottom. The landing page, pricing and auth flows keep the slim top-bar. Utility pages (What's new / Report a bug / Blog) inherit whichever chrome you came from.
Fixed
  • Premium gradient ring around avatars now shows on every leaderboard tab — previously the ring appeared only on the "All time" tab and silently dropped off on "Week" and "Month" because the backend didn't emit the subscription flag for the periodic rankings.
  • Name and avatar edits in your profile now reflect immediately in the sidebar — no page reload required. Previously the old user card could linger until a full refresh.
  • Cross-account data leaks when switching users in the same browser. Previously, after logout / login with a different account these could persist: AI Mentor chat threads, SQL drafts in the editor, per-task "solved" flags, active mock-interview sessions, AI-generation counter, favourites cache. Now logout and every login path (form, OAuth, email verify) wipes everything tied to the previous user.
  • "Friends rating" link from the profile now lands directly on the Friends tab — previously it dropped you on the global leaderboard. The "Start here" beginner lane no longer comes back after you've dismissed it; previously the dismiss reset on every logout / login.
  • Dozens of mobile-layout and interaction polish items: a more compact post-session report modal, correct filter spacing on narrow screens, the feedback banner no longer overlaps the side panel at 1024px, name + email fields on the bug-report page for anonymous submitters.
v1.2.9May 3, 2026

Editor UX hotfix on narrow screens: the "Editor settings" popup no longer gets clipped by the code panel and no longer spills past the viewport edge on mobile. The same gear button that desktop has now lives in the mobile toolbar too, and the font-size setting finally applies to the mobile editor.

Fixed
  • The "Editor settings" popup could get clipped by the page edges and had no internal scroll — on a narrow laptop or a phone, half the settings were simply invisible. The popup now renders on top of the whole page (via a portal), auto-clamps to the visible area, and grows an internal scrollbar when its content overflows the viewport height. The header with the title and close button stays sticky while scrolling.
  • On the mobile editor view (≤1024px) the toolbar was missing the editor-settings gear — "Font size" was only reachable from desktop. The gear now sits next to PG/MySQL and Format, and the font-size setting actually scales the mobile editor input.
v1.2.7May 1, 2026

Hotfix from a bug report: task #240 ("Staff Bonuses") was rendering the wrong schema — it showed Employee + Department instead of the real Employee + Bonus, making the prompt unreadable.

Fixed
  • Task #240 "Staff Bonuses": the schema viewer was rendering stale tables Employee + Department (with department_id, manager_id fields) and a hollow Department tab. The sandbox and reference solution were correct all along — only the viewer metadata was off. Now the schema shows the real Employee + Bonus tables with the Bonus.empId → Employee.empId relation.
v1.2.6May 1, 2026

Enriched datasets across 268 of 339 tasks — fuller source tables, more meaningful rows in the expected output, tasks no longer feel broken.

Changed
  • Mass dataset enrichment: 268 of 339 tasks got fuller seed data — typically 6-12 rows in primary tables instead of 2-4, with variety along the filter/JOIN/GROUP BY axes the reference solution exercises. 137 unique datasets touched. Reference solutions and schemas are unchanged. User progress is preserved — already-solved tasks stay solved, Power and achievements aren't recomputed.
  • Every enriched task was validated: the reference solution was run against the new seed via the executor, sample_output regenerated from the real result.
Fixed
  • Task #38 (well-paid-employees) — originally a v1.2.4 hotfix, now part of the broader pass.
v1.2.5May 1, 2026

Hotfix from a bug report: the "Expected output sample" panel now clarifies that the row count there doesn't have to match the schema tables.

Fixed
  • Added a disclaimer above the "Expected output sample" panel: "this is what a correct answer looks like — its row count is its own, it doesn't have to match the schema tables". Previously users counted rows in one of the schema tables and assumed the task was broken when the numbers differed.
v1.2.4Apr 30, 2026

Hotfix from a bug report: task #38 "Salary higher than manager" now runs on a proper dataset with three real cases. Plus a small orange dot on "What's new?" when a fresh release ships.

Added
  • A small orange dot appears on the "What's new?" nav item when a fresh release ships. One visit to /releases clears it until the next release.
Fixed
  • Task #38 (well-paid-employees): the dataset was too sparse — 6 employees and a single "subordinate earns more than manager" case, which made it look like the data was wrong. Expanded to 9 employees across two departments with three clear cases (Eve > Alice, Frank > Dave, Henry > Bob).
v1.2.3Apr 30, 2026

New "Report a bug" page with screenshot attachments, a secondary nav group, and a more compact "Start here" lane on mobile.

Added
  • New "Report a bug" page in the navbar: subject + description form with up to 5 screenshots / short clips (drag-and-drop supported). Reports land in our inbox for fast triage.
  • Navbar gets a secondary group — "What's new?" and "Report a bug" — separated from the primary tabs by a thin vertical divider.
Changed
  • Beginner "Start here" lane is more compact on mobile — shorter title, hidden description, narrower cards. Frees up space for the task list itself.
Fixed
  • Beginner "Start here" lane no longer flashes for a split second when opening the tasks page — now renders only after /progress resolves.
  • Release-notes highlight (top one-liner) now properly renders backticks — previously showed literal "?lang=" instead of a styled code pill.
  • Phantom vertical scrollbar on the "Learning Tracks" page is gone — min-h-screen paired with the navbar was forcing ~60px of extra height even when content fit.
v1.2.2Apr 30, 2026

UX polish across the trainer plus a ?lang= URL param for ads and direct locale-specific links.

Added
  • Land on a specific language via ?lang=en or ?lang=ru in the URL: https://sql.coderang.dev/?lang=en. Handy for ads and sharing locale-specific links; the choice is remembered for a year.
Changed
  • When daily AI hints run out, the "Explain" button becomes "Cheatsheet" and opens the topic reference.
  • Favourite Star is now visible on mobile and faintly visible on desktop instead of hidden until hover.
  • Task description no longer jumps when the cheatsheet expands. Star is brighter on hover.
  • On DDL tasks the schema panel shows "no starting tables; create them" instead of an empty canvas.
  • AI button actually pulses only on errors now (the animation class was never defined before).
  • Navbar Power and Streak seed from localStorage before the server fetch — no more "0 ⚡" flash.
  • AI generation counter no longer resets to 0 after redirecting to the generated task.
  • Mobile niceties: equal-width difficulty badges (Star aligned), bottom-tab text fits, daily counter scale animation, streak icon tooltip, Russian plural rules.
Fixed
  • Russian company names (Сбербанк, Яндекс, Авито…) now render in Latin transliteration (Sberbank, Yandex, Avito) on English UI; Cyrillic stays on Russian.
  • Cheatsheet entry names (Aliases, Scalar subquery, etc.) now properly translate on language switch.
  • Weekly/monthly leaderboard now applies the first-try ×2 bonus and ignores re-submissions, matching how lifetime Power is computed. Previously the period view showed roughly half of lifetime — bug in the math, not the data.
  • Removed a dead Solutions tab — no button activated it but it was duplicating the load.
  • Backticks no longer leave a gap before trailing punctuation ("Action.").
  • Result-pane empty states now properly translate to English.
v1.2.1Apr 30, 2026

Polish for data-modification tasks and overall description rendering.

Added
  • Heads-up for DDL/DML tasks: UPDATE/INSERT/DELETE and CREATE/ALTER/DROP tasks now show a short "no trailing SELECT needed" notice — no more guessing what to output.
Changed
  • Topic cheatsheet now respects task type: DML tasks no longer show SELECT/ORDER BY/LIMIT, DDL tasks show only schema-modification commands.
  • Backticked tokens in task descriptions (\id = 4\, \users.email\) now render as accent code-pills instead of raw text — descriptions read exactly as authors write them.
  • Cheatsheet code blocks now have an accent left-bar and a subtle border — they read as real code snippets instead of grey blobs.
v1.2.0Apr 30, 2026

Newcomer onboarding: a "Start here" lane, starter SQL on your first task, and a topic cheatsheet inside every task. Wrong-answer hints are now specific and don't burn your AI quota.

Added
  • "Start here" lane at the top of the tasks page — 8 simple SELECT tasks for first-timers. Shows up until you solve something; drag-to-scroll with a grab cursor.
  • Starter SQL in the editor. The very first task you open prefills SELECT * FROM <first_table> LIMIT 5; so you can hit ▶ right away and see what the data looks like.
  • Topic cheatsheet. The task panel now has a collapsible reference block with relevant SQL commands, syntax, and a one-line explanation — tailored per topic: SELECT, JOIN, aggregates, subqueries, windows, CTE, DML, DDL.
Changed
  • Wrong-answer banner is now specific: it names extra/missing columns, row diffs, sort issues, and common SQL errors. Runs locally, no AI quota consumed.
v1.1.0Apr 30, 2026

Alias-aware autocomplete in the SQL editor and major mobile layout improvements.

Added
  • Releases page: the update history is now visible at /releases.
  • Alias-aware autocomplete. After <alias>. the suggestions are scoped to that single table's columns. Aliases themselves complete on Tab.
  • . is now a trigger character: suggestions pop automatically after it, no need for Ctrl+Space.
Changed
  • The mobile menu now overlays content instead of pushing the page down. Closes on outside tap.
  • 300+ task descriptions rewritten: added business context, listed output columns, made sorting and rounding explicit.
Fixed
  • Mobile task description now scrolls correctly when the text is long. It used to jam and block access to the tabs at the bottom.
  • The trainer's bottom tab bar is now always visible on any mobile browser (Yandex Browser, MIUI, Samsung Internet). It used to clip below the viewport.
  • The mobile menu is now fully opaque. Previously 5% of background content showed through on browsers without backdrop-filter support.
  • On narrow screens (320px and below), the task sort dropdown no longer overflows the right edge.
  • Old autocomplete bug: typing t.e after FROM employee t would insert t.employee.salary (invalid SQL). The alias is now respected.
v1.0.0Apr 10, 2026

First stable release of SQL Arena.

Added
  • 259 curated SQL tasks across 6 categories: SELECT, JOIN, aggregate, subquery, window, DML.
  • 96 interview tasks from top tech companies (Google, Meta, Amazon, Stripe, etc.).
  • Dual SQL dialect support — PostgreSQL and MySQL with instant switching.
  • AI task generation: unique tasks adapted to your skill level.
  • AI Mentor: contextual hints without giving away the answer.
  • 3 learning tracks: structured paths from basics to advanced SQL.
  • Real-time SQL execution in a sandboxed environment with result grading (column/row/order diff).
  • OAuth authentication via GitHub, Google, Yandex, plus email/password sign-up.
  • XP-based (Power) leaderboard, user profiles, achievements, dark and light themes.
  • Premium subscription with YooKassa integration and anti-bot rate limiting.
  • Interactive ER schema diagrams, Monaco editor with SQL highlighting and formatting.
  • Bilingual interface: Russian and English.