lightdb23.3 调整orafce插件中函数的并发属性
之前版本的orafce插件中的有些函数并发属性为unsafe(包括常用的length, ltrim,lpad 等函数), 导致在执行使用这些函数的SQL时,SQL不能并行执行。
在23.3版本,我们对orafce 插件中的函数进行了梳理,对可以设置为safe 的函数进行了设置。
可以通过下面的函数查看插件相关函数的并发属性:
select nsp.nspname||'.'||pc.proname|| '('||pg_get_function_arguments(pc.oid)||')' fname, pc.proisstrict, pc.provolatile, pc.proparallel from
pg_depend a join pg_extension e on a.refobjid = e.oid
join pg_proc pc on pc.oid = a.objid
join pg_namespace nsp on pc.pronamespace=nsp.oid
where e.extname='orafce' and pc.prokind != 'p' order by fname;
下面列出orafce插件中当前不支持并行的函数(所有聚集函数都不支持):
dbms_alert._signal
dbms_alert.defered_signal
dbms_alert.register
dbms_alert.remove
dbms_alert.removeall
dbms_alert.set_defaults
dbms_alert.signal
dbms_alert.waitany
dbms_alert.waitone
dbms_assert.enquote_literal
dbms_assert.enquote_name
dbms_assert.noop
dbms_assert.object_name
dbms_assert.qualified_sql_name
dbms_assert.schema_name
dbms_assert.simple_sql_name
dbms_output.disable
dbms_output.enable
dbms_output.get_line
dbms_output.get_lines
dbms_output.new_line
dbms_output.put
dbms_output.put_line
dbms_output.serveroutput
dbms_pipe.__list_pipes
dbms_pipe.create_pipe
dbms_pipe.next_item_type
dbms_pipe.pack_message
dbms_pipe.purge
dbms_pipe.receive_message
dbms_pipe.remove_pipe
dbms_pipe.reset_buffer
dbms_pipe.send_message
dbms_pipe.unique_session_name
dbms_pipe.unpack_message_bytea
dbms_pipe.unpack_message_date
dbms_pipe.unpack_message_number
dbms_pipe.unpack_message_record
dbms_pipe.unpack_message_text
dbms_pipe.unpack_message_timestamp
dbms_random.initialize
dbms_utility.format_call_stack
dbms_utility.format_error_backtrace
lt_catalog.deps_restore_dependencie
lt_catalog.deps_save_and_drop_depen
oracle.any_value
oracle.bit_and_agg
oracle.bit_or_agg
oracle.bit_xor_agg
oracle.get_dba_jobs
oracle.get_dba_jobs_running
oracle.get_full_version_num
oracle.get_major_version
oracle.get_major_version_num
oracle.get_platform
oracle.get_status
oracle.kurtosis_pop
oracle.kurtosis_pop_final_func
oracle.kurtosis_samp
oracle.kurtosis_samp_final_func
oracle.listagg
oracle.listagg1_transfn
oracle.listagg2_transfn
oracle.listagg_finalfn
oracle.median
oracle.median4_finalfn
oracle.median4_transfn
oracle.median8_finalfn
oracle.median8_transfn
oracle.mg_sequence
oracle.pg_get_tabledef
oracle.replace_empty_strings
oracle.replace_null_strings
oracle.set_nls_sort
oracle.skewness_pop
oracle.skewness_pop_final_func
oracle.skewness_samp
oracle.skewness_samp_final_func
oracle.wm_concat
oracle.wm_concat_transfn
plunit.assert_equals
plunit.assert_false
plunit.assert_not_equals
plunit.assert_not_null
plunit.assert_null
plunit.assert_true
plunit.fail
plvdate.default_holidays
plvdate.include_start
plvdate.including_start
plvdate.noinclude_start
plvdate.set_nonbizday
plvdate.unset_nonbizday
plvdate.unuse_easter
plvdate.unuse_great_friday
plvdate.use_easter
plvdate.use_great_friday
plvdate.using_easter
plvdate.using_great_friday
plvlex.tokens
utl_file.fclose
utl_file.fclose_all
utl_file.fcopy
utl_file.fflush
utl_file.fgetattr
utl_file.fopen
utl_file.fremove
utl_file.frename
utl_file.get_line
utl_file.get_nextline
utl_file.is_open
utl_file.new_line
utl_file.put
utl_file.put_line
utl_file.putf
utl_file.tmpdir
wmsys.wm_concat
xmltype.getclobval