<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Case Studies on BareSQL.com</title>
    <link>https://baresql.com/tags/case-studies/</link>
    <description>Recent content in Case Studies on BareSQL.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 26 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://baresql.com/tags/case-studies/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>A Quarterly Access Review Finds a New Table of Bank Accounts That Every Role Can Read</title>
      <link>https://baresql.com/a-quarterly-access-review-finds-a-new-table-of-bank-accounts-that-every-role-can-read/</link>
      <pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://baresql.com/a-quarterly-access-review-finds-a-new-table-of-bank-accounts-that-every-role-can-read/</guid>
      <description>&lt;p&gt;The shop in this case study is made up: it’s the sample shop database that BareSQL’s tests build, and the outputs are what BareSQL printed. It reviews database access once a quarter. The first review with BareSQL Audit covers every login and ends with a file kept for next time, &lt;code&gt;audit.json&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Three months later the review runs again against that file. The reviewer then reads what changed, with no need to compare two long reports by eye.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A Support View Showed Card Numbers to Every Support Login</title>
      <link>https://baresql.com/a-support-view-showed-card-numbers-to-every-support-login/</link>
      <pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://baresql.com/a-support-view-showed-card-numbers-to-every-support-login/</guid>
      <description>&lt;p&gt;This case study runs on the sample shop database that BareSQL’s tests build, so the shop is made up, and the outputs are what BareSQL printed. Its support team looks customers up through one view, &lt;code&gt;support.customer_lookup&lt;/code&gt;, and has no grant on the customers table itself, which sounds like the careful way to do it.&lt;/p&gt;&#xA;&lt;p&gt;The view was meant to show a name, an email address and a phone number, enough to help someone who calls in. At some point a column was added to it. The team has two logins, &lt;code&gt;shop_alice&lt;/code&gt; and &lt;code&gt;shop_bob&lt;/code&gt;. Bob is in the team without inheriting its rights, a setup often taken to mean he can’t read what the team reads.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Queries That Pass Their Tests on SQLite and Break on PostgreSQL in Production</title>
      <link>https://baresql.com/queries-that-pass-their-tests-on-sqlite-and-break-on-postgresql-in-production/</link>
      <pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://baresql.com/queries-that-pass-their-tests-on-sqlite-and-break-on-postgresql-in-production/</guid>
      <description>&lt;p&gt;This case study uses a demo project in BareSQL’s code repository: a made-up booking app with a schema of two tables and eleven queries, written the way an app tested on SQLite tends to write them. Its test suite stays fast the usual way. Each test builds the schema in an in-memory SQLite database, runs the app’s queries and throws the database away.&lt;/p&gt;&#xA;&lt;p&gt;Production runs on PostgreSQL. Every query passes every test, and the question is how many of them do the same thing in production. The outputs below are what BareSQL printed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What an AI Support Agent Could Read Before Its Database Login Went Live</title>
      <link>https://baresql.com/what-an-ai-support-agent-could-read-before-its-database-login-went-live/</link>
      <pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://baresql.com/what-an-ai-support-agent-could-read-before-its-database-login-went-live/</guid>
      <description>&lt;p&gt;This case study runs on the sample multi-tenant database that BareSQL’s tests build. The software company in it is made up: it runs one PostgreSQL database for all its customers, the tenants, and row security keeps each tenant’s rows apart. Every output below is what BareSQL printed.&lt;/p&gt;&#xA;&lt;p&gt;The support team wants an AI agent to answer tickets, so the agent gets a login of its own, &lt;code&gt;saas_agent&lt;/code&gt;, in the &lt;code&gt;saas_support&lt;/code&gt; group that support’s views are granted to. The views were written for people, months ago, and nobody remembers exactly what they return. So before the login goes live, the team audits that one login.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What Changed in the Answers When a MySQL App Moved to PostgreSQL</title>
      <link>https://baresql.com/what-changed-in-the-answers-when-a-mysql-app-moved-to-postgresql/</link>
      <pubDate>Mon, 26 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://baresql.com/what-changed-in-the-answers-when-a-mysql-app-moved-to-postgresql/</guid>
      <description>&lt;p&gt;This case study uses a demo project in BareSQL’s code repository: a made-up invoicing app that has run on MySQL for years and is moving to PostgreSQL. The project holds the app’s MySQL schema, the same schema rewritten for both engines with some data, and eleven queries as the app ran them on MySQL. The outputs below are what BareSQL printed.&lt;/p&gt;&#xA;&lt;p&gt;The plan sounds simple: rewrite the schema and fix whatever PostgreSQL refuses. The trouble is in the queries PostgreSQL doesn’t refuse. They run and return rows, and some of the rows are different.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
