`\c` allows me to connect to databases that don't exist
timsehn opened this issue · comments
testdb
database already exists.
testdb=> \c employees
psql (14.7 (Homebrew), server 15.0)
WARNING: psql major version 14, server major version 15.
Some psql features might not work.
You are now connected to database "employees" as user "timsehn".
employees=> create table employees (
id int,
last_name varchar(255),
first_name varchar(255),
primary key(id));
ERROR: no database selected (errno 1105) (sqlstate HY000)
employees=> use employees;
ERROR: database not found: employees (errno 1105) (sqlstate HY000)
employees=>
The database is not actually created on disk. So I assume doltgres sends back the proper database created message but doesn't actually create the database.
$ ls
testdb
It seems to support multiple existing databases just fine. Just cannot create a new one and use it.
In the doltgres server directory:
$ mkdir employees
$ cd employees
$ dolt init
Successfully initialized dolt data repository.
$ cd ..
$ doltgresql
Starting server with Config HP="localhost:5432"|T="28800000"|R="false"|L="info"|S="/tmp/mysql.sock"
Then connecting:
$ psql -h 127.0.0.1 -d employees
psql (14.7 (Homebrew), server 15.0)
WARNING: psql major version 14, server major version 15.
Some psql features might not work.
Type "help" for help.
employees=> show tables;
Tables_in_employees
---------------------
(0 rows)
employees=> create table employees (
id int,
last_name varchar(255),
first_name varchar(255),
primary key(id));
--
(0 rows)
employees=> use testdb;
--
(0 rows)
employees=> show tables;
Tables_in_testdb
------------------
foo
(1 row)
employees=> use employees;
--
(0 rows)
employees=> show tables;
Tables_in_employees
---------------------
employees
(1 row)
employees=>
I'm completely unable to replicate this. I noticed you were using PSQL 14.7, and tried using that version too, in case there was some kind of version incompatibility. It, however, worked completely as expected. I used DoltgreSQL on the tip of main
, as well as the version from my latest PR. It all worked just fine.
Microsoft Windows [Version 10.0.19042.1586]
(c) Microsoft Corporation. All rights reserved.
C:\pgsql_14_7\bin>psql.exe -h localhost -U postgres -p 5432
psql (14.7, server 15.0)
WARNING: psql major version 14, server major version 15.
Some psql features might not work.
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=> CREATE DATABASE newdb;
--
(0 rows)
postgres=> \c newdb
psql (14.7, server 15.0)
WARNING: psql major version 14, server major version 15.
Some psql features might not work.
You are now connected to database "newdb" as user "postgres".
newdb=> CREATE TABLE test (pk BIGINT PRIMARY KEY);
--
(0 rows)
newdb=> INSERT INTO test VALUES (1), (2), (4);
--
(0 rows)
INSERT 0 3
newdb=> SELECT * FROM test;
pk
----
1
2
4
(3 rows)
newdb=> CREATE DATABASE anotherdb;
--
(0 rows)
newdb=> \connect anotherdb;
psql (14.7, server 15.0)
WARNING: psql major version 14, server major version 15.
Some psql features might not work.
You are now connected to database "anotherdb" as user "postgres".
anotherdb=> CREATE TABLE test2 (pk BIGINT PRIMARY KEY);
--
(0 rows)
anotherdb=> INSERT INTO test2 VALUES (3), (5), (7);
--
(0 rows)
INSERT 0 3
anotherdb=> SELECT * FROM test2;
pk
----
3
5
7
(3 rows)
I think the bug is I though \c
was "create" not "connect". It allowed me to connect to a non-existant database.