This is a glimpse into what we're working on and what we're planning to work on.
Autoscaling for dedicated PostgreSQL clusters
Access and work in your own configurable PostgreSQL cluster, complete with autoscaling support. Sign up for the early access program.
JSON column editor
Replacing the current text editor with a JSON editor that provides syntax highlighting, validation, and more.
More zero-downtime schema migrations
Integrate the PostgreSQL tool pgroll into Xata and extend operation support for zero downtime migrations to include constraints, type changes and more.
Data privacy with custom filters for data copying
Users will have the option to apply custom filters and mark specific columns as private, when copying data from production to development branches.
Data copying on all branches
Currently, the ability to automatically copy data is limited to preview branches. We plan to expand this functionality to enable data copying across all branches.
Database-level access keys
Secure data at the database level, not just the workspace. This update allows you to assign unique access keys to each database, providing an easier way to manage user permissions and restrict access as needed.
Edge caching
Dramatically speed up repeated queries by caching them on the edge. Enable with a simple parameter passed to the API and get end-user response times as low as 15 milliseconds.
Enhanced OAuth 2.0 scopes
Xata's OAuth 2.0 support will extend beyond admin:all to incorporate more granular scopes aligned with our permission model.
Query insights and optimization
Gain detailed observability into query performance with clear recommendations for optimization.
Self-service backup and restore options
Create daily backups and restore data, with the option for point-in-time recovery (PITR).
Real-time webhooks and triggers
Call a webhook in real-time or trigger a serverless function instantaneously when a record matching specified criteria is created, updated, or deleted.
A list of all the small and big changes we've made to the platform at a weekly clip.
\dt
are now possible in the SQL Playground.text[]
instead of the Xata specific multiple
type.ALTER SEQUENCE ... OWNED BY
statements.ALTER SCHEMA
statements.pgstream
schema #62.roll.WithSearchPath
option to allow widening of the search path during migration execution #380.Last week we had our Elephant on the move Launch Week. Here is what we announced each day:
Dedicated clusters improvements
Postgres compatibility improvements
NOTIFY
, LISTEN
, and UNLISTEN
commands.DO
blocks.psycopg2
.Blog Posts
UI improvements
The UI Playground now supports running multiple SQL statements at once. This was a highly requested feature that will make it easier to run scripts in the Playground.
Other UI improvements:
now()
as a default value for date columns.Postgres compatibility improvements
Also the past couple of weeks we've seen a ton of improvements to our compatibility with the Postgres wire protocol:
SELECT * FROM table1 WHERE name = 'John' FOR UPDATE
.SHOW session_replication_role
.Extensions!
We added support for the first extensions on shared clusters. To use them, make sure you enable direct access to Postgres.
Dedicated clusters
We've worked on improving the stability and usability of dedicated clusters, currently in private alpha, but quickly moving towards public beta:
Data API
Also our API, more specifically the SQL over HTTP part, got an important update:
New left hand navigation
We introduced a new navigation model that explicitly separates tables from other functionality Xata provides on top of your database. This will open the door for new workflows in the coming months.
Branch usage metrics
In our last launch week, we introduced workspace usage metrics. We received a considerable number of customer requests for a more granular view, and you can now view usage metrics for every branch you have within your workspace.
Beautified empty table state
Our empty state for a new database got a makeover. Looking pretty good, eh?
pgroll
as a Go module can customize its behaviour (#290, #335)lock_timeout
errors (#353)alter_column
operation (#338)pgroll
as a Go module (#329, #332).ON DELETE
behavior of foreign key constraints (#297)OpAlterColumn.IsRenameOnly
method #357pgroll
as a module may need to test if an alter column operation is only a column rename operation without having to duplicate the logic of checking the fields of the OpAlterColumn
struct.pg_index
catalog using the quoted version of the name. This makes it necessary to strip quotes from index names when retrieving them from the pg_index
catalog when building the internal schema representation.down
SQL in rename column operations use the new name of the column #354CHECK
constraints and DEFAULT
s when altering column type #349DEFAULT
and CHECK
constraint duplication that look as though they are caused by a change of column type.lock_timeout
errors #353lock_timeout
error. The retry uses an exponential backoff with jitter.fdw.Options
related types and helper to validate options. When implementing a foreign data wrapper one should implement a handler that returns a list of callbacks and a validator function that validates the settings FDW SQL statements will accept. So far the module only implements helpers for the validator.fn myfunc() void { ... }
iteratorFrom
and reverseIteratorFrom
to create an iterator directly from a list type declaration.access/reloptions.h
,catalog access, foreign data wrappersSync
message.DEALLOCATE
statement.current_user
, current_role
, session_user
, and user
functions.GREATEST
and LEAST
functions.CommandComplete
and EmptyQueryResponse
messages in the Postgres wire protocol. This fixes a bug where the client would hang in particular situations.information_schema._pg_expandarray
over the Postgres wire protocol.CREATE EXTENSION
).xata schema edit
CLI command now works with Postgres wire protocol enabled branches.alter column
operations on unbackfillable columns. Rename operations don't require backfills so there is no reason to impose such a restriction.set comment
sub-operation to alter column
. The intention is that this can be combined with a change type
sub-operation if there is some column metadata that should be updated as part of the type change.set comment
sub-operationset default
sub-operation to alter column
.We have continued to improve the SQL compatibility with Postgres for our shared clusters:
server_version_num
settingSET CONSTRAINTS
commandImproved the message ORM users see after adapting a table schema. Because "adapt" adds a few columns, it is important to pull/introspect the schema after making changes to the table.
File Attachments: Return all file object properties in upload response. This can simplify your code when using upload URLs.
If you don't specify a branch name in the Postgres wire connection string, we will default to the main
branch.
Fix: Close Postgres wire connection when a database branch is deleted.
Fix: Improve retry logic for outdated query plans errors.
Improved error handling: if we get a 400 from Elasticsearch, we will now return a 400 to the client.
ALTER COLUMN
sub operations in a single migration.void*
. This also improve the Zig code as we do not have to cast between types and opaque pointer types.Added Prisma ORM sample code snippets to the drawer, automatically matching your project and the current view in the table.
SQL-compatibility improvements over the wire protocol:
get_random_uuid
, pg_try_advisory_lock
, pg_describe_object
, and pg_stat_get_numscans
.CREATE SEQUENCE
and sequence functions.INSERT FROM SELECT
statements.CREATE TYPE
.UI: Left side nav is now sticky on long pages.
UI: Improvements for the mobile navigation.
Usage monitoring: Fix storage metric collection for columns of type File that were using mixed case.
Dedicated clusters Early Access Program: various fixes.
Website: Added the ability to filter blog posts by authors and tags. For example see this filtered query.
Here is what we announced each day:
You can find links to all of the announcement blog posts on the Launch week page.
We have added a way to disable search on your database. This is a good way to reduce cost if you aren't using any of the search functionality (search, aggregation, vector search). By disabling search, you won't be paying for Elasticsearch storage. You can find the toggle in the database settings. Don't worry though, search is still included in the free tier and enabled by default.
The schema edit view within the UI received a visual upgrade. It should be easier to view the requirements for each column at a glance.
beta
and alpha
tags to features that are not yet generally available. At a high level you can think of alpha
as "only available to a select group of users" and beta
as "available to all users, but not yet stable".Video and audio files previews in the UI: If you use file attachments and attach video or audio files, you now get a nice player in the UI to preview the file.
Initiate filters from the column headers! This is a small change, but it's a really nice shortcut.
Another quality of life improvement: when adding a new record, the default values are now pre-filled in the form. This should save you a few clicks and make the process smoother.
We improved the website search experience, which itself uses Xata's full-text search features. Search results now additionally match against headers within documents, which should make functions and other deeper content easier to find. Please let us know if you have any feedback or if particular search terms don't seem to work as expected.
Speaking of search, we have also improved the docs for our search functionality: https://xata.io/docs/sdk/search
Improved CSV import error reporting in the UI by showing tooltips above the column names that have errors.
Small fix to the focus state of the Github connect button on the database cards. Previously the opacity wasn't being switched.
Fixed default TTL for the signed URLs created for file attachments when updated via partial update.
Fixed some broken links in the OpenAPI spec documentation.
For another public website improvement, you can now subscribe to RSS feeds for particular categories of our blog.
A new example for uploading files using Next.js was added to our examples repository.
File uploads from the browser! This was a highly requested feature for file attachments. The way it works is that you can create a new record without passing the file, you get back an uploadUrl
that is safe to pass to the browser, then you upload the file to that URL. For more details, see the documentation for Upload URLs. This example demonstrate doing files uploads directly from the browser, in a sample Next.js application.
We've shipped a new onboarding workflow for creating and connecting to databases. The new workflow asks a few questions and then displays instructions that fit with your particular case.
Cloudflare launched a database integration for Xata. Please see the docs here, and there's also a demo on Cloudflare TV.
Lots of tables? You're going to enjoy this quality of life improvement where you get a search box on top of the list of tables.
Discover the latest enhancements and feature updates at Xata:
Take a look at the recent progress in our pgroll project:
OpSetReplicaIdentity
operation led to issues with tables having case-sensitive names. PR #206ghcr.io
with packaged results accessible at https://github.com/users/xiaoyao9184/packages/container/package/pgroll. PR #209omissis/go-jsonschema
. PR #210Explore Xata's recent blog posts to stay informed. Subscribe to the blog to get the latest content delivered to your inbox. Here are some of our recently published posts:
Discover the latest enhancements and feature updates at Xata:
bigint
parsing issued fixed: Addressed and resolved parsing errors encountered with invalid bigints in JSON handling.tslib
package, which occurred with version 0.14.3 on Node v20.9.0. The issue is now fixed. PR #1245Take a look at the recent progress in our pgroll project:
REPLICA IDENTITY FULL
, a second migration now automatically runs right after the create table
migration. This is necessary because Postgres doesn't allow setting the replica identity during table creation.brew install pgroll
or update an existing installation with brew upgrade pgroll
.now()
. Users now need to manually quote necessary default values. PR #200Explore Xata's recent blog posts to stay informed. Subscribe to the blog to get the latest content delivered to your inbox. Here are some of our recently published posts:
Discover the latest enhancements and feature updates at Xata:
https://xata.io/blog/tags
). This enables you to find and browse blog posts relevant to your specific areas of interest. For example, you can access all Xata blog posts related to PostgreSQL using the following URL: https://xata.io/blog/tags/postgres
, or filter by two tags using a URL like this: https://xata.io/blog/tags/community,announcements
. In addition, tags will soon be accessible directly through the UI for even easier navigation.v0.27.0
introduces the totalCount
field in search responses (including search
, search.byTable
, search.all
, and vectorSearch
) to report the total number of matching records. This is considered a minor breaking change as the response format is now an object, not an array. Adding the total hits to every search response makes it easier for the client to decide whether to fetch another page of results. ts-client#1232Take a look at the recent progress in our pgroll project:
SECURITY DEFINER
attribute, the security model of the pgroll schema allows admins to restrict access while ensuring uninterrupted functionality pgroll#191. Thank you @jankatins for your contribution.previous_version
function: Resolved an issue where the previous_version
function did not correctly remove the previous version schema upon completing migrations applied in schemas other than public and enhanced testing to ensure that the --schema flag
is properly respected pgroll#190Explore Xata's recent blog posts to stay informed. Subscribe to the blog to get the latest content delivered to your inbox. Here is our most recently published blog post:
Discover the latest enhancements and feature updates at Xata:
int
, float
, and bool
. Previously, only fields with the data type string
were supported for this aggregation method. This enhancement expands the applicable field types to include Keyword
, Numeric
, ip
, boolean
, or binary
.Explore Xata's recent blog posts to stay informed. Subscribe to the blog to get the latest content delivered to your inbox. Here is our most recently published blog post:
Discover the latest enhancements and feature updates at Xata:
stmt_type
now signifies the distinct SQL operation, such as select, insert, update, or delete. The record_count
captures the number of processed and returned rows, while in insert and update actions, res_target_count
enumerates the total values used.pgroll
: pgroll
is a dedicated open-source command-line tool tailored for streamlined schema migrations on Postgres databases. Designed to minimize downtime and offer instant rollbacks, it's now available for experimentation and feedback in our GitHub repository. Check out our recent blog post to learn more.
INSERT
Statements : To offer better conflict management in data operations, we've enhanced the SQL proxy. Users can now leverage the ON CONFLICT
clauses when using INSERT
statements. This means when attempting to insert data that might cause a conflict, like a duplicate key, you now have more control over the response - you can ignore the conflict or update the conflicting record.Explore Xata's recent blog posts to stay informed. Subscribe to the blog to get the latest content delivered to your inbox. Here are some of our recently published posts:
Discover the latest enhancements and feature updates at Xata:
Xata Playground now supports Python: Python has been added to our web-based IDE, Xata Playground. Alongside TypeScript and SQL, you can now use Python to explore Xata's SDKs, rapidly test ideas, and easily transition back to your main IDE for full-scale development.
New gallery app example available: We've introduced a gallery app example built with Next.js and Chakra UI to demonstrate the File Attachments functionality as well as key Xata features such as pagination, form handling, search functionality, image transformation, and so much more. Check out our docs to learn more.
Design improvements: Visual layout and elements are now more consistent across all Xata pages, leading to improved accessibility and ease of navigation. These changes are all aimed at making experiences on the Xata platform as smooth as possible.
Updates to vectorSearch
: The component has been updated for an improved user experience. It now returns full metadata, offering a more detailed view of your search results. This update was made in response to a request in our discord community.
Explore Xata's recent blog posts to stay informed. Subscribe to the blog to get the latest content delivered to your inbox. Here are some of our recently published posts:
Discover the latest enhancements and feature updates at Xata:
Explore Xata's recent blog posts to stay informed. Subscribe to the blog to get the latest content delivered to your inbox. Here are some of our recently published posts:
1.x
version of our Python SDK: https://pypi.org/project/xata/1.0.0a3/xata init
ask
endpoint that enables you to easily build ChatGPT experiences on your data is now conversational. With the latest update, you can now ask follow up questions to your data.New blog posts:
New Blog posts:
object
type. We have published a plan for it and we have updated the docs with the available alternatives. A warning will show up in the UI as well if you try to add a column with dots. It is best to avoid this type from now on.createdAt
, updatedAt
, and version
are now exposed in the UI, and usable in filters and sort conditions across the app. mew tables get these columns by default:createdAt
and updatedAt
fields to the search API responses metadata.table.id
.:
in their ID columns.updatedAt
and version
columns where other columns where edited.$includes
in the search APIs (it is not supported).xata push
error message if the target branch is ahead of the migration list.xata init
CLI command, improving the
flow of setup questions, default values, clarifying the wording, and fixes. Make sure
you upgrade soon npm install -g @xata.io/cli@latest
.pnpm
and yarn
xata dbs rename
command to the CLI.xata dbs delete
CLI command to allow for the interactive selection.createdAt
and updatedAt
columns are now available for filtering in the search
endpoints as well.New Blog posts:
New Videos:
createdAt
and updatedAt
meta-columns. From now on, you always know when
something was created and last updated. You get them with the record metadata,
as simple as that. This was a common feature request that makes developers
life easier, which is our favorite type of feature to
implement: https://feedback.xata.io/feature-requests/p/implement-createdat-updatedat-fields.
It is now also possible to filter by these meta-columns.failMissing
option for deletes. If you set this flag to true,
and the delete operations affects zero records, the transaction will be failed.factor
option to the free-text-search date booster. The factor
multiplies the boost, allowing you to better control the effect of the date booster.unique
+ notNull
columns.We have launched the all new Xata Workflow: complete git-like workflow for your database. This includes:
Other fixes and improvements:
Blog posts:
'
character in filters was producing an error in the Get Code Snippet.<a>
elements so you can right-click and open in a new tab.insert
, update
and delete,
but also get
data by ID. An example looks like this:{
"operations": [
{"insert": {"table": "items", "record": {"id": "new-0", "name": "feed the fish"}, "createOnly": true}},
{"update": {"table": "items", "id": "new-0", "fields": {"name": "feed the goldfish"}, "ifVersion": 0}},
{"get": {"table": "items", "id": "new-0", "columns": ["id","name"]}},
{"delete": {"table": "items", "id": "new-0"}}
]
}
PowerShell
and cmd
🎉{
"sort": ["*:random"]
}
And like this in the TypeScript SDK (pending release):
const users = await xata.db.Users
.sort("*", "random")
.getMany();
too_many_nested_clauses
exception on the search and ask endpoints. Also improved the error message to guide towards a correct solution.26/05/18
or tomorrow at 4pm
xata schema edit
command.gpt-3.5-turbo
model. This has resulted in a pricing decrease and more questions included in the free tier.notNull: true
notNull
and default value to an allowed value if it's unsupported.gpt-3.5-turbo
model. This has resulted in a pricing decrease and more questions included in the free tier.notNull: true
notNull
and default value to an allowed value if it's unsupported.Copyright © 2024 Xatabase Inc.
All rights reserved.