-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
uber_db, return synthesized sql #68
Comments
Actually, there is a bit more to this issue. I am sending this SQL query to the uber_db:
If I look at the log of the postgres database (suppled by Pascal) I see this entry:
In other words, a divide-by-zero error was triggered. However, this is what the uber_db app returns:
In other words, the fact that there was an error is hidden, and an answer is returned instead. On the other hand, if I execute this:
Then I do see an error message from uber_db. (I still need to check if it is being executed on the postgres db or if uber is generating the error itself) |
On first thought I would say that this might be intentional behavior because otherwise you could reveal secret data through an error. Differential privacy demands that that there are no outputs like errors. So if the query is syntactically and schema-wise ok it must run and produce a numerical output. Otherwise you could check for values by triggering the error. Meaning if value is X there is the error and if it is Y there is no error. Your query for some_garbage should fail as it does not pass the schema check. Similarly I think the problem with cli_district_id is the schema check, just that there is a typo in the schema file of the Uber tool. I will fix that now. |
I would not recommend to change the Uber tool. That looks like a lot of work for the desired feature. For debugging purposes the queries are in the log files. Example of flask-server log:
Example of ElasticSense (Uber tool) log:
Postgres only logs queries if there is an error. Example:
|
@reinhardmunz
uber_db generates its own sql from the sql supplied by the analyst.
it would be useful to see what that sql is.
Could you look into how easy or hard it would be to return that sql along with the answer?
The text was updated successfully, but these errors were encountered: