Merge pull request #957 from basho/at/symbols_in_table_names

Symbols in table names
This commit is contained in:
Brett Hazen 2015-12-10 15:41:56 -07:00
commit 4009a59d33
2 changed files with 145 additions and 0 deletions

View File

@ -0,0 +1,142 @@
%% -------------------------------------------------------------------
%%
%% Copyright (c) 2015 Basho Technologies, Inc.
%%
%% This file is provided to you under the Apache License,
%% Version 2.0 (the "License"); you may not use this file
%% except in compliance with the License. You may obtain
%% a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing,
%% software distributed under the License is distributed on an
%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
%% KIND, either express or implied. See the License for the
%% specific language governing permissions and limitations
%% under the License.
%%
%% -------------------------------------------------------------------
-module(ts_A_activate_table_pass_2).
-behavior(riak_test).
-include_lib("eunit/include/eunit.hrl").
-export([confirm/0]).
confirm() ->
Cluster = ts_util:build_cluster(single),
% individual assert matches to show line numbers in failures
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(Cluster, table_def("^"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(Cluster, table_def("$"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(Cluster, table_def("!"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "!", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "#@#@", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "\\", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "|", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "?", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "%", "series", "time"))
),
% backticks need to be escaped or sh will error
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "\\`", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "{", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "}", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "[", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", "]", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", ";", "series", "time"))
),
?assertMatch(
{error_creating_bucket_type, _},
create_and_activate_bucket_type(
Cluster, table_def("mytable", ":", "series", "time"))
),
pass.
%%
create_and_activate_bucket_type(Cluster, {TableName, DDL}) ->
{ok, Out} = ts_util:create_bucket_type(Cluster, DDL, TableName, 3),
case iolist_to_binary(Out) of
<<"Error", _/binary>> ->
{error_creating_bucket_type, Out};
<<"Cannot create", _/binary>> ->
{error_creating_bucket_type, Out};
_ ->
Retries = 0,
ts_util:activate_bucket_type(Cluster, TableName, Retries)
end.
%%
table_def(TableName) ->
table_def(TableName, "family", "series", "time").
%%
table_def(TableName, FamilyName, SeriesName, TimeName) ->
{TableName, lists:flatten(io_lib:format(
"CREATE TABLE ~s ("
" ~s VARCHAR NOT NULL,"
" ~s VARCHAR NOT NULL,"
" ~s TIMESTAMP NOT NULL,"
" PRIMARY KEY ((~s, ~s, quantum(~s, 15, 'm')), "
" ~s, ~s, ~s))",
[TableName,
FamilyName, SeriesName, TimeName, % column defs
FamilyName, SeriesName, TimeName, % partition key
FamilyName, SeriesName, TimeName]))}. % local key

View File

@ -22,6 +22,8 @@
-module(ts_util).
-export([
activate_bucket_type/2,
activate_bucket_type/3,
build_cluster/1,
cluster_and_connect/1,
create_and_activate_bucket_type/2,
@ -29,6 +31,7 @@
create_and_activate_bucket_type/4,
create_bucket_type/2,
create_bucket_type/3,
create_bucket_type/4,
exclusive_result_from_data/3,
get_bool/1,
get_cols/0, get_cols/1,