{
	"name": "system/option.json",
	"server_address-": ["https://paavo.capacic.dev/nc/", "https://pasi.capacic.dev/nc/", "https://mahbub.capacic.dev/nc/"],
	"debug": {
		"dsql": false,
		"dprf": true,
		"connection_change": false,
		"connect": true,
		"disconnect_timeout": 0,
		"sql_execute": false,
		"sql_execute_4d": false,
		"answer_start_length": 300,
		"sql_execute_length": 200
	},
	"option": {
		"use_nats_grid": 0,
		"sql_save_collect": false,
		"use_always_outer_join": false,
		"use_native_method_windows": true,
		"use_native_method_wine": false,
		"use_native_method_osx": false,
		"use_native_method_linux": false,
		"compress_rest4d": "lz4",
		"compress_debug": false,
		"use_cache": true,
		"use_rest4d_global_lock": false,
		"reuse_thread": true,
		"use_connection_pool": true,
		"stop_collectgarbage": false,
		"uncompress_buffer_size": 4000000,
		"disconnect_error_delay": 0.2,
		"tcp_send_timeout": 45,
		"tcp_send_poll_timeout": 0.1,
		"tcp_send_message_show_timeout": 0.15,
		"send_message_show_size": 131072,
		"task_server_timeout": 45,
		"collect_garbage_timeout": 5,
		"lock_timeout": 360,
		"socket_read_print_interval": 1.2,
		"socket_poll_timeout": 1.25,
		"socket_read_timeout": 120,
		"socket_next_read_timeout": 45,
		"socket_read_print_timeout_loop": 30,
		"restart_time": "",
		"restart_memory_use_kb": -1,
		"restart_memory_use_kb_not_in_use": 400000,
		"thread_inactive_timeout": 180,
		"max_thread_count": 20,
		"pool_timeout": 3600,
		"pool_count": 0,
		"max_pool_count": 8,
		"driver_pool_count": {
			"4d": 0,
			"postgre": 2
		}
	},
	"group": [
		{ "value": "", "show": "" },
		{ "value": "user", "show": "Normal user" },
		{ "value": "finance", "show": "Finance" },
		{ "value": "table", "show": "Table access" },
		{ "value": "stock", "show": "Stock" },
		{ "value": "work-center", "show": "Work Center" },
		{ "value": "label", "show": "Label" },
		{ "value": "define", "show": "Define" },
		{ "value": "administrator", "show": "Administrator" }
	],
	"trigger": {
		"update_modify_id": {
			"postgre": "DROP TRIGGER IF EXISTS {{trigger_name}} ON {{table_name}};\nCREATE TRIGGER {{trigger_name}} BEFORE INSERT OR UPDATE ON {{table_name}} FOR EACH ROW EXECUTE PROCEDURE UpdateModifyId('{{sequence_name}}');",
			"sqlite-": "DROP TRIGGER IF EXISTS {{trigger_name}}_insert;\nCREATE TRIGGER {{trigger_name}}_insert AFTER INSERT ON {{table_name}} WHEN New.db_modify_id IS NULL BEGIN UPDATE {{table_name}} SET db_modify_id = 5 WHERE db_id = New.db_id END;"
		}
	},
	"trigger_function": {
		"update_modify_id": {
			"postgre": "CREATE OR REPLACE FUNCTION UpdateModifyId() RETURNS trigger AS $$\nBEGIN\nNEW.db_modify_id = nextval(TG_ARGV[0]);\nNEW.modify_time = now();\nRETURN NEW;\nEND;\n$$ language plpgsql;"
		}
	},
	"on_conflict": {
		"postgre": true,
		"sqlite": true
	},
	"batch_insert": {
		"postgre": true,
		"sqlite": true,
		"ms-sql-server-15": false
	},
	"prepared_insert": {
		"postgre": false,
		"sqlite": false
	},
	"prepared_query": {
		"postgre": false,
		"sqlite": false,
		"prepare_min_call_count": 3
	},
	"prefix_in_sql_delete": {
		"4d": false
	}
}
