アプリケーションにいくつかのカウンターを実装しようとしているときに、この奇妙な動作に遭遇しました。基本的に、私はカウンターテーブルを次のようにしました:
CREATE TABLE stats_dev.log_counters (
date text PRIMARY KEY,
all counter
);
次に、カウントしたい特定の種類のメッセージがあるので、Go アプリでテーブルを ALTER して、以前にはなかった列を追加します。
私のアプリは成長しており、30 を超える列 (50 を超えるべきではありません) を持ち始めています。これらすべてのカウンターを取得したい場合、結果にいくつかの列がありません。
query := s.Query(`SELECT * FROM `+_apiCountersTable+` WHERE date IN ?`, dates)
res, err := query.Iter().SliceMap()
これは、34 列に対して 30 のようなものを返します。ただし、 CQLSH でリクエストを行うと:
cqlsh:stats_dev> SELECT * FROM api_counters WHERE date = 'total';
適切な完全な結果が得られます。そう :
- それは異なるはずの私の要求から来ていますか?
- それはgocqlドライバーから来るのでしょうか?
- そのパターンは完全に愚かですか?
私の一時的な解決策は、テーブルから列名を SELECT し、system.schema_columns
そのすべてを SELECT クエリに string.Join() することです...
ご助力ありがとうございます。