@@ -379,6 +379,204 @@ RESET datafusion.execution.batches_size
379379statement error DataFusion error: Invalid or Unsupported Configuration: Config field is a scalar usize and does not have nested field "bar"
380380RESET datafusion.execution.batch_size.bar
381381
382+ #############################################
383+ ## Test datafusion.format.* configurations ##
384+ #############################################
385+ query T
386+ SELECT name FROM information_schema.df_settings WHERE name LIKE 'datafusion.format.%' ORDER BY name
387+ ----
388+ datafusion.format.date_format
389+ datafusion.format.datetime_format
390+ datafusion.format.duration_format
391+ datafusion.format.null
392+ datafusion.format.safe
393+ datafusion.format.time_format
394+ datafusion.format.timestamp_format
395+ datafusion.format.timestamp_tz_format
396+ datafusion.format.types_info
397+
398+ # date_format: SET / SHOW / RESET / SHOW
399+ statement ok
400+ SET datafusion.format.date_format = '%d-%m-%Y'
401+
402+ query TT
403+ SHOW datafusion.format.date_format
404+ ----
405+ datafusion.format.date_format %d-%m-%Y
406+
407+ statement ok
408+ RESET datafusion.format.date_format
409+
410+ query TT
411+ SHOW datafusion.format.date_format
412+ ----
413+ datafusion.format.date_format %Y-%m-%d
414+
415+ # datetime_format
416+ statement ok
417+ SET datafusion.format.datetime_format = '%Y/%m/%d %H:%M:%S'
418+
419+ query TT
420+ SHOW datafusion.format.datetime_format
421+ ----
422+ datafusion.format.datetime_format %Y/%m/%d %H:%M:%S
423+
424+ statement ok
425+ RESET datafusion.format.datetime_format
426+
427+ query TT
428+ SHOW datafusion.format.datetime_format
429+ ----
430+ datafusion.format.datetime_format %Y-%m-%dT%H:%M:%S%.f
431+
432+ # timestamp_format
433+ statement ok
434+ SET datafusion.format.timestamp_format = '%FT%H:%M:%S'
435+
436+ query TT
437+ SHOW datafusion.format.timestamp_format
438+ ----
439+ datafusion.format.timestamp_format %FT%H:%M:%S
440+
441+ statement ok
442+ RESET datafusion.format.timestamp_format
443+
444+ query TT
445+ SHOW datafusion.format.timestamp_format
446+ ----
447+ datafusion.format.timestamp_format %Y-%m-%dT%H:%M:%S%.f
448+
449+ # timestamp_tz_format (default NULL)
450+ statement ok
451+ SET datafusion.format.timestamp_tz_format = '%Y-%m-%d %H:%M:%S %z'
452+
453+ query TT
454+ SHOW datafusion.format.timestamp_tz_format
455+ ----
456+ datafusion.format.timestamp_tz_format %Y-%m-%d %H:%M:%S %z
457+
458+ statement ok
459+ RESET datafusion.format.timestamp_tz_format
460+
461+ query TT
462+ SHOW datafusion.format.timestamp_tz_format
463+ ----
464+ datafusion.format.timestamp_tz_format NULL
465+
466+ # time_format
467+ statement ok
468+ SET datafusion.format.time_format = '%H-%M-%S'
469+
470+ query TT
471+ SHOW datafusion.format.time_format
472+ ----
473+ datafusion.format.time_format %H-%M-%S
474+
475+ statement ok
476+ RESET datafusion.format.time_format
477+
478+ query TT
479+ SHOW datafusion.format.time_format
480+ ----
481+ datafusion.format.time_format %H:%M:%S%.f
482+
483+ # duration_format: values are normalized to lowercase; ISO8601 and pretty are valid
484+ statement ok
485+ SET datafusion.format.duration_format = ISO8601
486+
487+ query TT
488+ SHOW datafusion.format.duration_format
489+ ----
490+ datafusion.format.duration_format iso8601
491+
492+ statement ok
493+ SET datafusion.format.duration_format to 'PRETTY'
494+
495+ query TT
496+ SHOW datafusion.format.duration_format
497+ ----
498+ datafusion.format.duration_format pretty
499+
500+ statement ok
501+ RESET datafusion.format.duration_format
502+
503+ query TT
504+ SHOW datafusion.format.duration_format
505+ ----
506+ datafusion.format.duration_format pretty
507+
508+ # null display string
509+ statement ok
510+ SET datafusion.format.null = 'NuLL'
511+
512+ query TT
513+ SHOW datafusion.format.null
514+ ----
515+ datafusion.format.null NuLL
516+
517+ statement ok
518+ RESET datafusion.format.null
519+
520+ query TT
521+ SHOW datafusion.format.null
522+ ----
523+ datafusion.format.null (empty)
524+
525+ # safe
526+ statement ok
527+ SET datafusion.format.safe = false
528+
529+ query TT
530+ SHOW datafusion.format.safe
531+ ----
532+ datafusion.format.safe false
533+
534+ statement ok
535+ RESET datafusion.format.safe
536+
537+ query TT
538+ SHOW datafusion.format.safe
539+ ----
540+ datafusion.format.safe true
541+
542+ # types_info
543+ statement ok
544+ SET datafusion.format.types_info to true
545+
546+ query TT
547+ SHOW datafusion.format.types_info
548+ ----
549+ datafusion.format.types_info true
550+
551+ statement ok
552+ RESET datafusion.format.types_info
553+
554+ query TT
555+ SHOW datafusion.format.types_info
556+ ----
557+ datafusion.format.types_info false
558+
559+ # Case-insensitive variable name
560+ statement ok
561+ SET datafusion.FORMAT.DATE_FORMAT = '%m/%d/%Y'
562+
563+ query TT
564+ SHOW datafusion.format.date_format
565+ ----
566+ datafusion.format.date_format %m/%d/%Y
567+
568+ statement ok
569+ RESET datafusion.format.date_format
570+
571+ query TT
572+ SHOW datafusion.format.date_format
573+ ----
574+ datafusion.format.date_format %Y-%m-%d
575+
576+ # Invalid format option name
577+ statement error DataFusion error: Invalid or Unsupported Configuration: Config value "unknown_option" not found on FormatOptions
578+ SET datafusion.format.unknown_option = true
579+
382580############
383581## Test runtime configuration variables
384582############
0 commit comments