Skip to content

Commit 68cb7c7

Browse files
committed
Add URI::clickhouse
1 parent ea5c0c2 commit 68cb7c7

File tree

3 files changed

+80
-42
lines changed

3 files changed

+80
-42
lines changed

lib/URI/clickhouse.pm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package URI::clickhouse;
2+
use base 'URI::_odbc';
3+
our $VERSION = '0.20';
4+
5+
sub default_port { 8123 }
6+
7+
1;

t/dbi.t

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,36 @@ for my $spec (
418418
dbi => [ [Server => 'foo'], [Port => 123], [Database => 'try'] ],
419419
qry => [ foo => 1, foo => 2, lol => 'yes', Driver => 'Snowflaker' ],
420420
},
421+
{
422+
uri => 'db:clickhouse:',
423+
dsn => 'dbi:ODBC:',
424+
dbi => [ [DSN => undef] ],
425+
qry => [],
426+
},
427+
{
428+
uri => 'db:clickhouse:dbadmin',
429+
dsn => 'dbi:ODBC:DSN=dbadmin',
430+
dbi => [ [DSN => 'dbadmin'] ],
431+
qry => [],
432+
},
433+
{
434+
uri => 'db:clickhouse://yow',
435+
dsn => 'dbi:ODBC:Server=yow;Port=8123',
436+
dbi => [ [Server => 'yow'], [Port => 8123], [Database => undef] ],
437+
qry => [],
438+
},
439+
{
440+
uri => 'db:clickhouse://yow:33',
441+
dsn => 'dbi:ODBC:Server=yow;Port=33',
442+
dbi => [ [Server => 'yow'], [Port => 33], [Database => undef] ],
443+
qry => [],
444+
},
445+
{
446+
uri => 'db:clickhouse://foo:123/try?foo=1&foo=2&lol=yes&Driver=ClickHouse',
447+
dsn => 'dbi:ODBC:Server=foo;Port=123;Database=try;foo=1;foo=2;lol=yes;Driver=ClickHouse',
448+
dbi => [ [Server => 'foo'], [Port => 123], [Database => 'try'] ],
449+
qry => [ foo => 1, foo => 2, lol => 'yes', Driver => 'ClickHouse' ],
450+
},
421451
) {
422452
my $uri = $spec->{uri};
423453
ok my $u = URI->new($uri), "URI $uri";

t/engines.t

Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -7,48 +7,49 @@ use URI;
77
use URI::QueryParam;
88

99
for my $spec (
10-
[ db => undef, undef ],
11-
[ unknown => undef, undef ],
12-
[ postgresql => 5432, 'pg' ],
13-
[ postgres => 5432, 'pg' ],
14-
[ pgsql => 5432, 'pg' ],
15-
[ pg => 5432, 'pg' ],
16-
[ pgxc => 5432, 'pg' ],
17-
[ postgresxc => 5432, 'pg' ],
18-
[ redshift => 5432, 'pg' ],
19-
[ mysql => 3306, 'mysql' ],
20-
[ mariadb => 3306, 'mysql' ],
21-
[ maria => 3306, 'mysql' ],
22-
[ sqlite => undef, 'sqlite' ],
23-
[ sqlite3 => undef, 'sqlite' ],
24-
[ oracle => 1521, 'oracle' ],
25-
[ cubrid => 33000, 'cubrid' ], # ?
26-
[ firebird => 3050, 'firebird' ],
27-
[ mssql => 1433, 'mssql' ],
28-
[ sqlserver => 1433, 'mssql' ],
29-
[ db2 => 50000, 'db2' ], # ?
30-
[ ingres => 1524, 'ingres' ],
31-
[ sybase => 2638, 'sybase' ],
32-
[ informix => 1526, 'informix' ], # ?
33-
[ teradata => 1025, 'teradata' ],
34-
[ interbase => 3050, 'interbase' ],
35-
[ unify => 27117, 'unify' ], # ?
36-
[ mongodb => 27017, 'mongodb' ],
37-
[ mongo => 27017, 'mongodb' ],
38-
[ monetdb => 50000, 'monetdb' ], # ?
39-
[ monet => 50000, 'monetdb' ], # ?
40-
[ maxdb => 7673, 'maxdb' ], # ?
41-
[ max => 7673, 'maxdb' ], # ?
42-
[ impala => 21000, 'impala' ],
43-
[ couchdb => 5984, 'couchdb' ],
44-
[ couch => 5984, 'couchdb' ],
45-
[ hive => 10000, 'hive' ],
46-
[ cassandra => 9160, 'cassandra' ],
47-
[ derby => 1527, 'derby' ],
48-
[ vertica => 5433, 'vertica' ],
49-
[ ldapdb => undef, 'ldapdb' ],
50-
[ exasol => 8563, 'exasol' ],
51-
[ snowflake => 443, 'snowflake' ],
10+
[ db => undef, undef ],
11+
[ unknown => undef, undef ],
12+
[ postgresql => 5432, 'pg' ],
13+
[ postgres => 5432, 'pg' ],
14+
[ pgsql => 5432, 'pg' ],
15+
[ pg => 5432, 'pg' ],
16+
[ pgxc => 5432, 'pg' ],
17+
[ postgresxc => 5432, 'pg' ],
18+
[ redshift => 5432, 'pg' ],
19+
[ mysql => 3306, 'mysql' ],
20+
[ mariadb => 3306, 'mysql' ],
21+
[ maria => 3306, 'mysql' ],
22+
[ sqlite => undef, 'sqlite' ],
23+
[ sqlite3 => undef, 'sqlite' ],
24+
[ oracle => 1521, 'oracle' ],
25+
[ cubrid => 33000, 'cubrid' ], # ?
26+
[ firebird => 3050, 'firebird' ],
27+
[ mssql => 1433, 'mssql' ],
28+
[ sqlserver => 1433, 'mssql' ],
29+
[ db2 => 50000, 'db2' ], # ?
30+
[ ingres => 1524, 'ingres' ],
31+
[ sybase => 2638, 'sybase' ],
32+
[ informix => 1526, 'informix' ], # ?
33+
[ teradata => 1025, 'teradata' ],
34+
[ interbase => 3050, 'interbase' ],
35+
[ unify => 27117, 'unify' ], # ?
36+
[ mongodb => 27017, 'mongodb' ],
37+
[ mongo => 27017, 'mongodb' ],
38+
[ monetdb => 50000, 'monetdb' ], # ?
39+
[ monet => 50000, 'monetdb' ], # ?
40+
[ maxdb => 7673, 'maxdb' ], # ?
41+
[ max => 7673, 'maxdb' ], # ?
42+
[ impala => 21000, 'impala' ],
43+
[ couchdb => 5984, 'couchdb' ],
44+
[ couch => 5984, 'couchdb' ],
45+
[ hive => 10000, 'hive' ],
46+
[ cassandra => 9160, 'cassandra' ],
47+
[ derby => 1527, 'derby' ],
48+
[ vertica => 5433, 'vertica' ],
49+
[ ldapdb => undef, 'ldapdb' ],
50+
[ exasol => 8563, 'exasol' ],
51+
[ snowflake => 443, 'snowflake' ],
52+
[ clickhouse => 8123, 'clickhouse' ],
5253
) {
5354
my ($engine, $port, $canon) = @{ $spec };
5455
my $prefix = "db:$engine";

0 commit comments

Comments
 (0)