2016-11-26 49 views
0

有沒有在INSERT中使用JSON文字內部的CQL函數的方法?例如:有沒有辦法在INSERT中使用JSON文字中的CQL函數?

CREATE TABLE oranges (
    id uuid, 
    color text, 
    PRIMARY KEY (id) 
); 

這些工作:

INSERT INTO oranges JSON '{ 
    "id": "f8f54a3c-b91c-4ff5-8f31-5784beafe1dc", 
    "color": "red" 
}'; 

INSERT INTO oranges (id, color) VALUES (
    uuid(), 
    'red' 
); 

但這並不:

INSERT INTO oranges JSON '{ 
    "id": "uuid()", 
    "color": "red" 
}'; 

我意識到CQL沒有辦法猜當JSON字符串是一個CQL函數調用,但是我很好奇,如果有這種支持的話。

+0

如果這是允許的(不是),那麼防範惡意是非常困難的 - 這將是一個注入攻擊媒介。它也不允許發送「看起來像某些CQL操作但不是」的數據。 – user2864740

回答

0

正如你所提到的,一旦檢測到JSON格式,Cassandra就會認爲它是一個JSON文檔,僅此而已。

從光明的一面看,這是一件好事,將相同方法的不同語言組合起來會使應用程序難以維護。

+0

Nit:沒有'檢測JSON'。而是使用由語法定義並由引擎分析的插入表單(使用[JSON ..])' - 這是一種截然不同的調用變體,而不是檢測/運行時選擇。 – user2864740

相關問題