anchor.diff:          false ->    ok;
           {_,BadDef} -> ?ClientError({"Invalid default fun",BadDef})
       end,
  -    TableName=physical_table_name(TableAlias),
  +    TableName = physical_table_name(TableAlias),
       case TableName of
           TA when TA==ddAlias;TA==?CACHE_TABLE ->  
               % ?Info("creating table with opts ~p ~p ~n", [TA,if_opts(Opts0)]),
  
positive.code: is_time_partitioned_alias(TableAlias) when is_atom(TableAlias) ->
      is_time_partitioned_alias(atom_to_list(TableAlias));
  is_time_partitioned_alias(TableAlias) when is_list(TableAlias) ->
      case is_node_sharded_alias(TableAlias) of
          false -> 
              false;
          true ->
              case string:tokens(lists:reverse(TableAlias), "_") of
                  [[$@|RN]|_] -> 
                      try 
                          _ = list_to_integer(lists:reverse(RN)),
                          true    % timestamp partitioned and node sharded alias
                      catch
                          _:_ -> false
                      end;
                   _ ->      
                      false       % node sharded alias only
              end
      end.
  
  is_local_node_sharded_table(Name) when is_atom(Name) -> 
  
negative.code:                 Prefix = lists:duplicate(10-length(PartitionEnd),$0),
                  {BaseName,_} = lists:split(length(TableAlias)-length(RN)-1, TableAlias),
                  lists:flatten(BaseName ++ Prefix ++ PartitionEnd ++ "@" ++ node_shard())
                  % timestamp partitiond and node sharded table
              catch
                  _:_ -> lists:flatten(TableAlias ++ node_shard())
              end;
          [$_,$@|_] ->       
              [[$@|RN]|_] = string:tokens(tl(TableAliasRev), "_"),
              try 
                  Period = list_to_integer(lists:reverse(RN)),
                  {Mega,Sec,_} = Key,
                  PartitionEnd=integer_to_list(Period*((1000000*Mega+Sec) div Period) + Period),
                  Prefix = lists:duplicate(10-length(PartitionEnd),$0),
                  {BaseName,_} = lists:split(length(TableAlias)-length(RN)-2, TableAlias),
                  lists:flatten(BaseName ++ Prefix ++ PartitionEnd ++ "@_" )
                  % timestamp partitioned cluster table
              catch
                  _:_ -> lists:flatten(TableAlias)
              end;
          _ ->
              TableAlias    
      end.
  
  qualified_table_name({undefined,Table}) when is_atom(Table) ->              {schema(),Table};
  